From 4711af65896051cbf27fa378695abb6c5f5fe23d Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Sat, 19 Dec 2020 13:31:38 +0100 Subject: [PATCH] fixed --- data/set.device.json.gz | Bin 2780 -> 2770 bytes data_ungzip/set.device.json | 6 +----- data_ungzip/set.device.json.gz | Bin 2780 -> 2770 bytes doc/calculator.xlsx | Bin 99701 -> 99742 bytes src/FileSystem.cpp | 32 +++++++++++++++++++++++--------- src/Utils/FileUtils.cpp | 2 +- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/data/set.device.json.gz b/data/set.device.json.gz index cf2a10771ba8b58ed225d08cbd5fbbd8344ad147..ab29128af32f371342a7642eb7b2fb90aee70eca 100644 GIT binary patch literal 2770 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 YZzQW7d(4MN7B4#c4R`m9P%kY20QtaSfdBvi literal 2780 zcmV<23M2I&iwFq5Fx_7S0CQz@E@WkPX=7zBYIARH0Nq+gkJCUDz9aD;ED!>ub?Sza zrHCQ~NEA^H2oQ2&Cowp-u^oz{mDpXX=;eSwbb&Z<2+J;nkcGc6{zts`W}J{}hYkeD zc*cI^n^(uFE?y+TpCx(AEa*jdNme?{XJ|Igr(>?>RqWVt*D{xk^;x!TPq)m$>xO$7SoW|97jITgOlSC5VbLK%t+BB6AK?3QJ#Pyk8fq$IAB2_V>#-_uO5Q+}abi=%he z){tB&6Fk>m(mjLLs#Q}dYm<}RceI6349)RmRVyeJ!&}n6YjP}{v!RZ9AZgb0Zz6F|FKecC`loU@Xd_jm zUZK%XCC=^uF6aCyR`+j8>PzxAc14!Wli~}Y)oQ|e#KI>`j z?`OMLb0#OHWuvkk)%88?j5iE*FeXzsi^-7zh)6i~s|cq@COk5Bs$@7MltD}=j{&n^V zeHH#K_|p&0!Z;26;<8g zY321v8Pr0?$ryXU79d1?L8_2UC~nmtYJ38Vzu{kDH3%ojm+oqYlTHPsQzMd=R`^pA zUCaiN47C5aGMr^PV43b@354oEXc}18fax_@LY6Dwd!7O`250{!`vA)eVv#k3NdC;2 z#O6>|5Q?DxOf)`VOvMLyn4g7h@h`G@di)&D`4=LHJRXQV-i6Y6+-e|m33Dt=flOnP ze~BXZ0wMzZC@@XK|2J`}1tL7Yg2bGI=RN_#mq5&UP=89~Ba(a$qZzBCqP?YqKNCUr zjBKASqwJX&dyNQ#B-5w^?p_lZ%^*+;=vRM^lk6D8= zn1v5e167ICd9IXy)xRLI55(}20P15nht;x2daUlp0EWC8;q=0(t&zPmB=4FwITWo$ z5ch<=g^PEvLL1uPsb-At&OD+dM(^PX;tSi~Qq{j2F2!0|QS&Ip+8DbBa7+Urb=YgP zSo8wUp5*%2X;?kC;5XOd0@om%dolr#+7wt4o&1px8V9;IP0ye{lIkYchcI~gTlB!pkcE{s~Fn3f497UUt;{gn6!NhjbLyH2HO&u2$G~)I;JA& zxOMx1WHJKXv|K8yL^s_@7egj&%zL&VJii{9=6Fli@u;$nVsxupnye1hBr?%8vh5PhHC;64cyaObwLu`_!&9p91*_Ol|4XAjO7#!KS-3L=XjpR z&=usfCdNw8Y8u9ku8=LQ__pR~=g-S*E<%<|rR2Qnk)+_} kkqC66?dduMiiabVQ z1|(^xqeRJ6I!F~M@bo*Z4w}8kheg3b&1%Vcw2vZRyS z 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 YZzQW7d(4MN7B4#c4R`m9P%kY20QtaSfdBvi literal 2780 zcmV<23M2I&iwFq5Fx_7S0CQz@E@WkPX=7zBYIARH0Nq+gkJCUDz9aD;ED!>ub?Sza zrHCQ~NEA^H2oQ2&Cowp-u^oz{mDpXX=;eSwbb&Z<2+J;nkcGc6{zts`W}J{}hYkeD zc*cI^n^(uFE?y+TpCx(AEa*jdNme?{XJ|Igr(>?>RqWVt*D{xk^;x!TPq)m$>xO$7SoW|97jITgOlSC5VbLK%t+BB6AK?3QJ#Pyk8fq$IAB2_V>#-_uO5Q+}abi=%he z){tB&6Fk>m(mjLLs#Q}dYm<}RceI6349)RmRVyeJ!&}n6YjP}{v!RZ9AZgb0Zz6F|FKecC`loU@Xd_jm zUZK%XCC=^uF6aCyR`+j8>PzxAc14!Wli~}Y)oQ|e#KI>`j z?`OMLb0#OHWuvkk)%88?j5iE*FeXzsi^-7zh)6i~s|cq@COk5Bs$@7MltD}=j{&n^V zeHH#K_|p&0!Z;26;<8g zY321v8Pr0?$ryXU79d1?L8_2UC~nmtYJ38Vzu{kDH3%ojm+oqYlTHPsQzMd=R`^pA zUCaiN47C5aGMr^PV43b@354oEXc}18fax_@LY6Dwd!7O`250{!`vA)eVv#k3NdC;2 z#O6>|5Q?DxOf)`VOvMLyn4g7h@h`G@di)&D`4=LHJRXQV-i6Y6+-e|m33Dt=flOnP ze~BXZ0wMzZC@@XK|2J`}1tL7Yg2bGI=RN_#mq5&UP=89~Ba(a$qZzBCqP?YqKNCUr zjBKASqwJX&dyNQ#B-5w^?p_lZ%^*+;=vRM^lk6D8= zn1v5e167ICd9IXy)xRLI55(}20P15nht;x2daUlp0EWC8;q=0(t&zPmB=4FwITWo$ z5ch<=g^PEvLL1uPsb-At&OD+dM(^PX;tSi~Qq{j2F2!0|QS&Ip+8DbBa7+Urb=YgP zSo8wUp5*%2X;?kC;5XOd0@om%dolr#+7wt4o&1px8V9;IP0ye{lIkYchcI~gTlB!pkcE{s~Fn3f497UUt;{gn6!NhjbLyH2HO&u2$G~)I;JA& zxOMx1WHJKXv|K8yL^s_@7egj&%zL&VJii{9=6Fli@u;$nVsxupnye1hBr?%8vh5PhHC;64cyaObwLu`_!&9p91*_Ol|4XAjO7#!KS-3L=XjpR z&=usfCdNw8Y8u9ku8=LQ__pR~=g-S*E<%<|rR2Qnk)+_} kkqC66?dduMiiabVQ z1|(^xqeRJ6I!F~M@bo*Z4w}8kheg3b&1%Vcw2vZRyS z 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 QmI(&YfDoiQ;tT}(8x2zpn*aa+ delta 2613 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 OMgsiQacJOg)PDf_f8gr? diff --git a/src/FileSystem.cpp b/src/FileSystem.cpp index 2345f088..c4559685 100644 --- a/src/FileSystem.cpp +++ b/src/FileSystem.cpp @@ -3,18 +3,32 @@ void getFSInfo() { // Информация о ФС - //size_t totalBytes; // всего - //size_t usedBytes; // использовано - //size_t maxOpenFiles; // лимит на открые файлы - //size_t maxPathLength; // лимит на полное пути + имя файла + FSInfo buf; - getInfo(buf); - size_t freeBytes = buf.totalBytes - buf.usedBytes; - float freePer = buf.usedBytes / buf.totalBytes * 100; + if (getInfo(buf)) { + SerialPrint("I", F("FS"), F("Get FS info completed")); - jsonWriteInt(configSetupJson, F("freeBytes"), freeBytes); - jsonWriteFloat(configSetupJson, F("freePer"), freePer); + size_t totalBytes = buf.totalBytes; // всего + size_t usedBytes = buf.usedBytes; // использовано + size_t maxOpenFiles = buf.maxOpenFiles; // лимит на открые файлы + size_t maxPathLength = buf.maxPathLength; // лимит на пути и имена файлов + + size_t freeBytes = totalBytes - usedBytes; + float freePer = freeBytes * 100 / totalBytes; + + jsonWriteStr(configSetupJson, F("freeBytes"), String(freePer) + "% (" + String(freeBytes) + ")"); + + SerialPrint("I", F("FS"), "totalBytes=" + String(totalBytes)); + SerialPrint("I", F("FS"), "usedBytes=" + String(usedBytes)); + SerialPrint("I", F("FS"), "maxOpenFiles=" + String(maxOpenFiles)); + SerialPrint("I", F("FS"), "maxPathLength=" + String(maxPathLength)); + SerialPrint("I", F("FS"), "freeBytes=" + String(freeBytes)); + SerialPrint("I", F("FS"), "freePer=" + String(freePer)); + } + else { + SerialPrint("E", F("FS"), F("FS info error")); + } } bool getInfo(FSInfo& info) { diff --git a/src/Utils/FileUtils.cpp b/src/Utils/FileUtils.cpp index 70955088..31927eed 100644 --- a/src/Utils/FileUtils.cpp +++ b/src/Utils/FileUtils.cpp @@ -13,7 +13,7 @@ bool fileSystemInit() { SerialPrint("E", F("FS"), F("FS Init ERROR, may be FS was not flashed")); return false; } - SerialPrint("I", F("FS"), F("FS Init")); + SerialPrint("I", F("FS"), F("FS Init completed")); return true; }