From 86da74bed029afec556f09ef3298c078a4ff521f Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Tue, 2 Apr 2019 08:46:42 +0200 Subject: [PATCH] statistics --- driver/drv/b15f.cpp | 23 +++++++++++++---------- driver/drv/b15f.o | Bin 27648 -> 27776 bytes driver/drv/usart.cpp | 26 ++++++++++++++++++++------ driver/drv/usart.h | 14 ++++++++++++-- driver/drv/usart.o | Bin 29144 -> 30640 bytes driver/main | Bin 61936 -> 62096 bytes 6 files changed, 45 insertions(+), 18 deletions(-) diff --git a/driver/drv/b15f.cpp b/driver/drv/b15f.cpp index f53d066..fc3f804 100644 --- a/driver/drv/b15f.cpp +++ b/driver/drv/b15f.cpp @@ -30,7 +30,10 @@ void B15F::init() // Temporärer Test uint8_t block[] = {0, 1, 2, 3}; while(1) + { usart.writeBlock(&block[0], 0, sizeof(block)); + usart.printStatistics(); + } throw std::runtime_error("SCHLUSS"); @@ -83,13 +86,13 @@ void B15F::reconnect() void B15F::discard(void) { - usart.flushOutputBuffer(); + usart.clearOutputBuffer(); for(uint8_t i = 0; i < 8; i++) { usart.writeByte(RQ_DISC); // sende discard Befehl (verwerfe input) delay_ms((16000 / BAUDRATE) + 1); // warte mindestens eine Millisekunde, gegebenenfalls mehr } - usart.flushInputBuffer(); + usart.clearInputBuffer(); } bool B15F::testConnection() @@ -147,7 +150,7 @@ std::vector B15F::getBoardInfo(void) bool B15F::digitalWrite0(uint8_t port) { - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_BA0); usart.writeByte(port); @@ -157,7 +160,7 @@ bool B15F::digitalWrite0(uint8_t port) bool B15F::digitalWrite1(uint8_t port) { - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_BA1); usart.writeByte(port); @@ -167,21 +170,21 @@ bool B15F::digitalWrite1(uint8_t port) uint8_t B15F::digitalRead0() { - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_BE0); return usart.readByte(); } uint8_t B15F::digitalRead1() { - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_BE1); return usart.readByte(); } bool B15F::analogWrite0(uint16_t value) { - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_AA0); usart.writeInt(value); @@ -191,7 +194,7 @@ bool B15F::analogWrite0(uint16_t value) bool B15F::analogWrite1(uint16_t value) { - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_AA1); usart.writeInt(value); @@ -201,7 +204,7 @@ bool B15F::analogWrite1(uint16_t value) uint16_t B15F::analogRead(uint8_t channel) { - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_ADC); usart.writeByte(channel); return usart.readInt(); @@ -212,7 +215,7 @@ bool B15F::analogSequence(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset buffer_a += offset_a; buffer_b += offset_b; - usart.flushInputBuffer(); + usart.clearInputBuffer(); usart.writeByte(RQ_ADC_DAC_STROKE); usart.writeByte(channel_a); usart.writeByte(channel_b); diff --git a/driver/drv/b15f.o b/driver/drv/b15f.o index 0bd67ccf55b16a5bea1db8436d61cdc44067f8a5..79f3e7b4912fed69ad44b43b8659a526d8165a9b 100644 GIT binary patch delta 1980 zcma)+YfKzf6vywK-AMo!mX@v4fdDNuanrQ2+e)!%x&tM3r%@@eWqGM(c_M}>d zS4z;~%q}F&4?DA8Mg+%FGP>RBsb3P*h<|R{e;XN@^502Pr~UVszj*VvwKcW>MOE$3 zH}+F(Zwab>j0dXJ$fUaa`%clQf)E8K9#wbG$4TT@GZL9xT8LLBMC}uqqUtz3)@fgv zXdbKx+z5f)nOo;pBev<{1Qwktc3>~Xo0z}2{a?Lg{;yv81K7*`?jrM_hoIY;@sBa+ z?>LXzXs_-_d&FLT$xddd7`2lh=_R^qBLg<^nw?y;6`_CLjy5uo4pb(HEh(dqlWzwdXe8W{GVVH z{XY#qM_=%^+r@?>P1*?v?(&$P-nZ*ByPRJUC@MeX&2K*uKGqrN)H=f*o#BR#{at$T zo>@Up_UWm~L2D+giC18@M1q+Thx{x@OEI##X09H%TO!eqU>xnYu=$`QQ)@;7X6132 zDX^|oqPfs}P@?&U-3!M{C2xSs@8j~1Se*57mg8NpfK@)^p5m)qF{;cM`adu$FL63g za5^ijx?F9|oK>meq8bcix91Hz$E@s1#V{_G33$aP@Bz>=>A(aRJs;VzGhiHeA94pv!!-cC?E5fUF3FdpXiI|X_cu2;MUCxZ^C z3T~l;@KVrE&%tEyu>1y>Y-!*@33(ItR!a0OsHn`NQ8->$KFq?k48!#Wg5Uyg=7X?Y?-mkVklx@EQ(YK@-nKMoZ*U8n zTrkw&qaKJgC_?BEq&NC#9aJ|eLh1$>!p#W88WrqMZbDQ6HBCNR4ACZqmP4#bNpwg? zF_HzFn+s5;x>=!%5Jfu(v1Uc^1R=e}C!}UVO^c8AK(s}ng%E2&u_{Op`B1q!q|gvV zLyF+8f?J4sKn^QHdll4#ec}lFM?z6m8jOV9bQxk{g?|+k kEV$L`!}4;QlK5(_+1ORk+6od2cbL1KFx*zaT5EggZ!fK5yZ`_I delta 1941 zcma)6YfM~46rQ=eH(_~~MQ$%GmWPd$wAtNai;ZQkSSgEEy6wU)3r))kyS$C07~5!g zsEt`E?aHaOV5}0+(4>jrHO3}tc?7BvfA|JMT4*#uK})648f);(-3yr*e|VBPbLKnW zeCN#U-D#VmZId*VDYP9K%(4q&rlaHORJBofJ(7h-Qz0%!(IZ#PWnp0vHpaS*fw)Z% zLrd(2qEyH8ixG}s!R(cSd4e`xuoyZ2>u)P7j?QNubad`u*!)$t4qnp;jt+*qoQ~j_ zW7qf1;wp$jqgJ>PyZ)|_qeEod94CgFjmx8fP>Jhu1>6&t(VFTA8m{b#V9D`4(UJ2d z|EiP!zv^_ltX$>bwNENgFWg4(hCYuie1i=x%!SxN3CZ*1xeJ5pcX56L9aMLl?=u#i zH}jw@EZx^UrGj4D<5EC_>_eHTkvRl9nCEY#PZ}Llg99hGj)D8ux-PB~i`W zUTPEr4No1df%7}9;Yj^@=SN2M;sc)vGzfVmk{Ys~i>H2QFOuX&{eD=BP8@eu!gdUr z_Dl3F#-St7yI->Xq%&EI7LNHlhqrQg6i}x`Q#8LBZaO7fwtgQ>;U$i_Psdpg9USfk zpHq^b<96|NPs5kkVV|b|0rT=Gr?ZdK`J7dkx5OcY#;TOzSUsr?(hf+pO7s29%Rg|; zE{=H|+7C#D5RVWV(>a1;Rp*wDv(t5Qc+@&vpfP>{j#d6AR}bvz3(;P7{Kob_Yn@G%ZQ$>9?mZsYK)VLVGaz!@&FP5%a2froJ5 zH>lZRpe~6vY5o}4T$0?%F@4Bcy@D6PhuO1wmR(Rjmwj7P_)zmhFzk|SKXN*EbIhMP zg+dNDsixv=fp$Qy`!qcTU$`wW;f{s~&u+Mbv(r;7zrxYY7&Buxc@{qQNc2_s)?=aP zKrFS$J&5W*G0`4WTvHs~@K~utUsL_1j~eIz43=A{73Rt%+6{k}7tr@1?~o*~J_Qt? zGG^?~nAnWkbm%W5Jqe9I1sZ%?VbYg~8-MXF(*&4%JjWDoXLLd)A+0h;_{xlb@+5e& zGE#>tT2U(*+fY8vxV2M&{XL5D?+Fk zrV%oO98hRFcms-QCP^zslA$+{gECW?sR6lKp%vh*R)m2P=&7~~vm0T$nw61j6dDiS z8Wi(DPmLXwrx3ay#ojRc#7fT+PuCl8*n|0zt> vDZ+A!c0g-=rf@q2%IfV{zPnyAmFh3wn=n_OW4g`0PqZXRYsg^@G~D|SvJ7AD diff --git a/driver/drv/usart.cpp b/driver/drv/usart.cpp index d2e8bdd..1516c59 100644 --- a/driver/drv/usart.cpp +++ b/driver/drv/usart.cpp @@ -25,8 +25,8 @@ void USART::openDevice(std::string device) if(code) throw USARTException("Fehler beim Setzen der Geräteparameter"); - flushOutputBuffer(); - flushInputBuffer(); + clearOutputBuffer(); + clearInputBuffer(); } void USART::closeDevice() @@ -36,20 +36,27 @@ void USART::closeDevice() throw USARTException("Fehler beim Schließen des Gerätes"); } -void USART::flushInputBuffer() +void USART::clearInputBuffer() { int code = tcflush(file_desc, TCIFLUSH); if(code) throw USARTException("Fehler beim Leeren des Eingangspuffers"); } -void USART::flushOutputBuffer() +void USART::clearOutputBuffer() { int code = tcflush(file_desc, TCOFLUSH); if(code) throw USARTException("Fehler beim Leeren des Ausgangspuffers"); } +void USART::printStatistics() +{ + double pz = 1e2 * n_blocks_failed / n_blocks_total; + pz = std::round(pz * 1e2) / 1e2; + std::cout << "blocks total: " << n_blocks_total << " ok: " << (n_blocks_total - n_blocks_failed) << " failed: " << n_blocks_failed << " (" << pz << "%)" << std::endl; +} + void USART::writeByte(uint8_t b) { int sent = write(file_desc, &b, 1); @@ -118,6 +125,9 @@ void USART::writeBlock(uint8_t* buffer, uint16_t offset, uint8_t len) const uint16_t us_per_bit = (1000000 / baudrate) * 16; const uint16_t n_total = len + 3; + n_blocks_total++; + bool failed = false; + do { // calc crc @@ -163,10 +173,14 @@ void USART::writeBlock(uint8_t* buffer, uint16_t offset, uint8_t len) if(n_read != 1) throw std::runtime_error("fatal: " + std::to_string(n_read)); - //flushInputBuffer(); + //clearInputBuffer(); - if(aw != 0xFF) + if(aw != 0xFF) { + if(!failed) + n_blocks_failed++; + failed = true; std::cout << "block failed, retry" << std::endl; + } } while(aw != 0xFF); diff --git a/driver/drv/usart.h b/driver/drv/usart.h index 006ffef..e375e8c 100644 --- a/driver/drv/usart.h +++ b/driver/drv/usart.h @@ -9,6 +9,7 @@ #include #include #include +#include #include "usartexception.h" #include "timeoutexception.h" @@ -37,13 +38,18 @@ public: * Verwirft Daten, die bereits im Puffer liegen, aber noch nicht gelesen wurden * \throws USARTException */ - void flushInputBuffer(void); + void clearInputBuffer(void); /** * Verwirft Daten, die bereits im Puffer liegen, aber noch nicht gesendet wurden * \throws USARTException */ - void flushOutputBuffer(void); + void clearOutputBuffer(void); + + /** + * Gibt Anzahl an erfolgreichen und fehlgeschlagenen Block-Übertragungen an + */ + void printStatistics(void); /*************************************************/ @@ -128,6 +134,10 @@ private: int TEST = 0; uint8_t timeout = 10; // in Dezisekunden uint8_t block_buffer[MAX_BLOCK_SIZE + 3]; + + // debug statistics + uint32_t n_blocks_total = 0; + uint32_t n_blocks_failed = 0; }; diff --git a/driver/drv/usart.o b/driver/drv/usart.o index ef05e382aa3b45a83d5d1aa069896adacc54faa5..ed30f7a6553023a2d3d5f8bc7674a12313c22898 100644 GIT binary patch literal 30640 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 literal 29144 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 H-_HME#h*Fv diff --git a/driver/main b/driver/main index 83512def453c607c8f8e5589df4d2df437c893fa..307f0d11d04d72b7975813db9368b614f6609fe6 100755 GIT binary patch delta 23003 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 IeW&~X18;%NZU6uP delta 22060 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 I`i*Y?2Skgn7XSbN