From 7481f0f7e85b81dcd0d18afe537dee47060f04f4 Mon Sep 17 00:00:00 2001 From: Janosch Date: Tue, 11 Oct 2022 12:12:07 +0100 Subject: [PATCH] test CheckStartCondition --- include/charger.h | 1 + libopeninv/libopeninv.a | Bin 47178 -> 47558 bytes src/charger.cpp | 6 +++++ src/main.cpp | 5 ---- test/test.c | 1 + test/test.out | Bin 51480 -> 52088 bytes test/test_logic.h | 55 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 63 insertions(+), 5 deletions(-) diff --git a/include/charger.h b/include/charger.h index 3e3e47b..f4e138e 100644 --- a/include/charger.h +++ b/include/charger.h @@ -8,4 +8,5 @@ bool CheckTimeout(); void CalcTotals(); void DisableAll(); void EvseRead(); +bool CheckStartCondition(); #endif diff --git a/libopeninv/libopeninv.a b/libopeninv/libopeninv.a index b70a1ca31336101d1d6638c8cd8d4e6121c1dc40..c947dd3ad9d8baca4050b55d6c98e3afced7b6cb 100644 GIT binary patch delta 1767 zcmb`HT}TvB6vxlp-F4kX*Tq(ywpdQnIt3%6p8+QKKNPz>xP zJP;BjOCN%1FHWvTfl48zA@veLFQOEJ6hb{nM0ICoCr{}_Ul-1vIluos=iHB(onB^B zAJ~;rsUW{3Qyooq0H_DBMgQKM^8kNll9u3|0-%=n3E+3E>@C1QnZyf(hX0TCh5&Sn zoB;T>HP+V@?hDGp!i?2bTG4Xs=*ffOBWJ=Dt)b>%IM^D(Hrp2Yn(fV1Q^BsCIBWB> zhztFDQswE$kWjzKFAF*+!nxyV{6UY>$CLG_V`WFXV_ek3&WUqwbyml+z|&Hw61I*B zeBP2}jQ@gs>c%X?-L(O1zx~+Vtf2i4XBVqTjAIQ6)_8!;3KOub-y>wo4gHm-jp{58 zU-LT2V1gB;9v^l1U?79VF?^nr>UJ_s3~;XuPt2#QGRxQ80nN2&?lQx=LuptOiI>mb zc_^f;cTndscj%?e?v63(daSRRmv?ge{8bx+gu4j8Pk095PY9>;Ul2~~&ud%)r7=yg z#P+E0EYcvEaOKMMh33S#;=F`kBs`n&E>b56_{XFd>LtQfk}yd4Ho|4nz)JYjpE#G) zu|Vo<=S1x*@zefDgdAPq{0rf9#|b8_pmIW#Z!+N3gwy&Bob&yIdIeNyHAuK*z;7Aw zNdrE=$|azU->(Wk?98cbb)AJ~7;wJb@Hd_^{YqOxTEPlHSMidoc*lZC11@Hw&1C(^KcL=>WUbEI5&h6^L* zY|e~xj%=)oifqx0O-b3<%^zKs@A=a_6fHQ%75k`YFR^HS_6qo}(t}l_qD|bOp;tJQ iRcvpI)1r7YCU}eN7wlR%#Cm)l?8_7F%dzPLz{xjGWfT(t delta 1251 zcmb`EO=uHA6vyApt}UC2CN1m^0b^)tje>Q>uSUe=P^@}rLrzxE)`M0r3Z6WOd-0;D zg$JSZ6g>oOt^F7^se*`>6^e%-dQ#LwsUAEO1$$7avzZhJWWcWnf8M;`oA=+xZ19E7 zFHt|^?aa8zdJIJXU;w}x{d+|NfIpKb2Rg<8RBe9?@H^T+5AaX&gu%Ju|ItVRU{$3) z0KEo}_3iFCJAC+jhCd+Bn$ety;kebp?^%mQ!|isl%XMk4jn_&~2>*Ixj^gKZ57P1+ zE|wVqzEbWrti1SNVZ6ji=HTfu7GEX+tzf`{$YCU?%qGPtW>ZGdzvU2F^w$%)z}Jtz zA!30S{ME!PjbCq!nqsnD==+L{I|Oqx_Ku*@4vkYvdqd+(VcMkdcJ!v5BfA>i(6m$O z_9}d{!uu7sW`&=kn7nEe4=1OcxUURvQ7(B*?7WF|2#&qslrGBH&(Lb3=USZ^pc6OLpDBYi((*JSMZ&H zQ>&vLLFj2}|n)*4wX8JO FP_FROMFLT(1.4) && Param::GetBool(Param::enable)) || + (!IsEvseInput() && Param::GetBool(Param::enable)); +} + bool CheckTimeout() { uint32_t now = rtc_get_counter_val(); diff --git a/src/main.cpp b/src/main.cpp index e9765f6..8d37c57 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -48,11 +48,6 @@ static Can* can; static PiController dcCurController; uint32_t startTime; -static bool CheckStartCondition() -{ - return (IsEvseInput() && Param::GetBool(Param::proximity) && Param::Get(Param::cablelim) > FP_FROMFLT(1.4) && Param::GetBool(Param::enable)) || - (!IsEvseInput() && Param::GetBool(Param::enable)); -} static bool CheckVoltage() { diff --git a/test/test.c b/test/test.c index 2a04fbf..4737b31 100644 --- a/test/test.c +++ b/test/test.c @@ -22,6 +22,7 @@ int main() { (TestCase){"test_calc_totals", test_calc_totals}, (TestCase){"test_check_timeout", test_check_timeout}, (TestCase){"test_evse_read", test_evse_read}, + (TestCase){"test_check_start_condition", test_check_start_condition}, // Example: //(TestCase){"Your tests name", function_name_without_brackets} //... diff --git a/test/test.out b/test/test.out index 9f24529113931dbffd4e9a3895f34e5069bde65d..109cd2a8a10b56bb25551dd8ec6695e924f21b7c 100755 GIT binary patch delta 17094 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 delta 15661 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