From 8674a8b830ac08685d19e83642c67749a7d7d167 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Sun, 28 Nov 2021 13:57:56 -0500 Subject: [PATCH] automation around outputs section #197 datalog toolset --- java_tools/ConfigDefinition.jar | Bin 3552469 -> 3555319 bytes .../java/com/rusefi/ConfigDefinition.java | 10 +-- .../src/main/java/com/rusefi/ConfigField.java | 2 +- .../rusefi/output/BaseCHeaderConsumer.java | 2 +- .../com/rusefi/output/DataLogConsumer.java | 61 +++++++++++++++++- .../main/java/com/rusefi/output/TsOutput.java | 10 +-- .../java/com/rusefi/test/OutputsTest.java | 20 +++--- 7 files changed, 82 insertions(+), 23 deletions(-) diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index bb31a6d49ecbdc94556a7d39e87d2cb78eaab375..7e40aca3fd9921471b67f28067389dbb6ac2ceb8 100644 GIT binary patch delta 83340 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
Ad6>H#MvD~>UTUL z1faeK^X4aY$42ERcj~}-2}EED^JOkA73?W6gq0qsXZn1CSisHY7OJ4X3XASf=~Q(7 zLMrei1>;I6(7zj&+pxH;Tz7#sF^kV=CW;|wmJwV@>!fL0l1M;TWU4*G!`WSEL3e>a zleu(2-=-asFLHd&a2#|O$VJ91xvIpmRhk)LhEh-?denC6R(OWTbV+xue0qcJ}+ z5iH-0^9}Os8P^Poob(lR$4ueLKIoC!Ll&4z#t)Zz*Idd)L>YD#qMD#ysBo_zTKiy^ zh^G#Hi`scwJ&~7`C*oPtA}a|TvR4GlL&Y%*SvXzXUhWeSxU;Xb04CJwg=UQ0-x)Tg zI`8$uA|?kYFR=t?Jfq&Yuv~&lKWs&GZyX=)hbY&j4{qKc^+uPzJS;+bGb=GGEb#~Q z!CGFQB!mt8>Vsn8<&+5Pi&J3rDMIwb?V#{MX^%4y*B_%(t{*yZS{rfts)Yu5z1}tx zP3ecWS8r z*h?>@lmQeC5O_+vHVJt`N)c2C3f!dYezrlQ2cn^sePQEhTn|h`EDhn-WZVP@ZyBBq zL~A$WGo?139GDKmDR=S!F{Emkr7HO8;yYqtk-dYki1i>Uuwppc<2wY~tv|w2d|CJ} zfC>}^V6O!QV6)EzijZDXm{fcqcJTYrmK;zg*0>DD$!*XODpD}kQV-NaQ0unA0z)Z1 zh#Z7HoDgoQ192kLe<6#h38f`^L|W=YP$0Uo5TAvS#_SBlI%kZeMD;{VJeD;E6;7Ls zHGUi@P?G9_zuACVW2aiGLtGHf6l!CsFd{rKVcOgKBM9rM9Y=Y-(P$aggKuMl5iX3N zuyTy01{4uEBNp|K8i4~fdOYP_jm5gLF?g_dB1Oi82>LL}lSKrkN({jeeKv(6UbE4s z9bFVO1S`spqP&0cmRwpCN+2P&FHiS@&9{f>#JL{KQ+n13FIBTA4ULi#dl^F#z5R1C#Ck5BU{61)N%DU5@` z!?A{Q3q`O3*sa9)$sUdlSiM*T%R%ERvA&mulvM18j0xztP|RshdJuKW!pT%iO}I6) zJzf*SP`f$isTK*iY_ODvvtfAS@MG!!!geDNzK%Jp#ig|&X9U`^19RSs!}8EF0y`mk zl^A?>B)TDDB*umh2CPULVP7d-{P72zX%>K`u9$rRqtL$pFfX=9c-<(p;m~@DsO`Y; z5q8ABot=iu+>LETM&pdL@uL`(j2VSC zUfxT1k<9vhDsv`+_%;H4JF-B8_%e2dlvq=WgP>y&`bT129}iMq@JSL-#Kye@E<8kG z_44)>$&bfbV>;Xl$7fmov!5_n1T4~at?%B(P< z`D9!YZXOoL9Zy;5kha=OM;{T#xl;uG($9~ILp{z~=@U^76iz`a`W+W%zMUfQm3~no z4tbr!D*wfyeC$+|UvQ#>*_~0vqu0~%l}UuMweS-Q4roPTv+)gRJB*J8?XA_wuZP$( zqf99r&PVCvQMgjMTZI|mF$kwbVSv6NyqW*%n23=RTPZ>~P@jk~pno1*m!ihR>UL`*UZA(8CZV^MULZV2IFy8sC%$9C zenLdtZg;d-GS(4wnZnDHaV4$A$6G{Z;63zchwF5fqF~51!kfUH#0OqP=4~VnMxocj z9+CK(iJfVK&%X%Iei>S}v6|YtW*H6_Sv(p}nlkMvYVK$zcR6Z~zfF1J%h80_cw(Fg z4tj2_2QQXmoAJ<*5aF-DD6hUxiOdzKwAVvI*noTr&JVTGxD;U54oa|5hHZB-$du>X zh)+pRW2wNk6r44m#1SH%nLdkxj~Ckr_az*-wh~QhnN46vIKLVn8`!QwBpgo?ti)-0 z`jE2@7mz*{6yEM+Yeo1 z`>Z8|hv#vGx`T$=3JT|HzjCGcp9Cf)q~CNjQ2;f!6j8uW`xq3+Nv$m_bF@J2B5$H`S6 z##Ugo2!B*eD5JC$Wwgr(4|mO5aczmaXp1{g^1YH!Um7N+-!Opk{6p=G@N+Db9yypI ztFzGIR>2}d1@>p-do5vu6|=FZ`5eNt#qY2LZp?pk2{D4%2jpr3zp`<)h{>YF&>Vae zHGVH4jNwc%`fk2ydmL5fpsLgPgl7aTIf8+VP5~um9JkYf@Ur&X-u@>#wN>vRl{%A) z3-0+MO8kFaU1va4N7oK_0qIq#S&ArS*r`aQQRBTah6{&sk(hSQXcrcP_$JvD8i5 z5%+<-sa$m`oG{zp^e6oZs(yU zNTyHx5z!BQX_oma*5ao)X_U3|11lPvhmXGRK~tw*rWKfwT*NRCmq0LCN-pvihleC^ zC>KS0&5?t6Zw&_axhRb7ehBY>C)Poj?aE{$1cN90ZB6L`8fj$`HxqdAP#y9S-!@zg z!6ILqj~YE&&B610H0t~y4(zpv604usu)hPZyUDmPA`cZ{#|{ig)S(e*kRE@hLW-5eHl~^WW zGTY6VWo%-MGuA z{T@WI44)^mg12j#bm>U`fV&SHGRJquf!j5lOxNq7kklAwiaFep&M~NtYFR-VJ*Sugo2rOUV|mr zgQmCRzkY&U8%`<|*8YUIfAH@LX4zE~zH~B2s?p)a2vT^?tk7BLcZGwpV${b+)g1J` zqY30)jnpIdEJ3KZbxbx!=yQX9F2P4>B{sU1AoIf?!>ICIs4XRp7Dc}FHha=@c|fj>lLTRdquj@u1zq;y$tkffmW5l#-uWo&n;^P1_>%h_Ulihydr&=uHt}5 zv@=~liW0%DL?@bd5UpjB%;X+Kg?xZ(FPQj{I?{y#4|hL_ z+TrM^pC7`P%|cvk!GcDWqsr&$I9OSZofGZ`GjOFRO&D8AkL6tf`}=p{vVj$7H8;AO zfh!%XK*h$TMpC4XKck=1_vavJTx1JcIV=);w10*@zYaCi9#qAc3&YKfHF^DlYIi3^ z!A$)HL*=KboEfkvvNcWGhx{yB5~=L(7JbDPt}VfCed+uYuV2e8w4Tp3YdO#--=N4O zt-Ql{wjUOA*_&0!%!b1-Y*Cu5oqhTbQmP|uDC`(an0Z>koW6{kvi1)^`@{r5fMD~7StecZ zsHkX#I7)IHNdz8;(e*NzcpQtM{py%xu;7IwCC4!*tE)l*wY4PuUlq-flw75 zbkl7G)Ay34KY9|eB|N6u6 z?*5MbeIem8)#VT4aMkI^X5>kC$D7)1{U1oOeLGp0)lKU`h6^Tp`uquDNP9`Bq2xMj z7nK_O@}63yH=U6kWsOIF8lzRziKEP3+7@L09ctIdXHmO66KLL9<0zH7o2+bq4$4J6 zWE7C3wWpcqkf*hYGF8bGw)B?JhYG6_hgziW)lb%+J5=jRsceW?avpXM9U$`+!?p66 z(x3}4WJwZrxnP{B8kH=`Bk1Y{BRlAr9){xGIY)3j|U_9Es89&&^Zd7;*kR$PR2 zt-h2Lv@~xKsAK;|R!Mz?)g>gkXRajdz&2)@J_#AW2Hh!QjiusC#{R0r#WL!6**HSg zutY{xmyPXIb2myTgu^E~{{=>amPkM7E zPU#S#D31zjFdWOdikACC0$7f|imsq(2a|-+;A(Wu2ljIibX1G0R%`JI=5`~_mQGZo z8H_LEGM5_6>rDHVgQ+#B;%kpFFj>G>b^J!shu6>pO*lpKu3-vq=^6H`CEr?*L(cMG z2d-(crMU*CZ?8qv-=636omyisia^?LUv!Cr>#%jC`*m1+R|ZS3W9%4S%O$nf@p`=a zkbyBmO#{uZ!^SjgXS!Br9Ism9ikbN9_;?@l7lL%aT{Jf^Ph0#Kf>df42qK>wc#sL5 z85pM8-b>bhJxJ$8J2FskQXQ{HFjaD2S*X5g41$4dtzOkMNJo!7^`7+EO;m`mWErKV z=sak7sHwO4^CrSyA0Z1>w=flSd8CZA6Ls!1Y0qs`m-Ev(m06GVm33dr@-g+OS9j7)+V#fn zs;D(G+I0s#OzmbJ?s*Im29%Y!Vo(1-&9`~@&v&T+CI-avwL9wAD_s|D! za+G*KdU+3z;Oioz5%+-xxXGyWK62ekDfBB5NZ)qW!_f~bP^m)PV*2;RW({xBJ;VoU6>WZid5akjF+rHzT^5%=#4|q_ETe?6 zdUqBRf1|Pu)~dRpdI}z=$GviojNvM;VG{DDspIsnwErpEN8eBM%0AYAq^$Am5f5Pw0kTW9;3DIeQKH=C}#A&nVf#sfcLTW=L`%NCePwz!DD<&El6b` zkZKp|oq2qrjd76(~oAF!c%Y0rV-h0~@N(h^;SK>J(>qDO~ttB!)@`+Kj z(o)w(H0%5)#(1lj{Qsm(Snu`}^UvJQ3_w_R< z3mJOqnyn9^(F~0z3Hi{0EvD2DKSSytXUUN?J(D)#u{|roKUko7fl1=te;e5WA8D_< zZUf_dXvN>?aK_4@_(wgQ?=+zxQgijnkz{YI>M-q1xu{L+LQ$Kf^DzHvLOze%&Sf=C z=tTzA;iWCf@|f%>_Sdp-kaZIF?_j`>#OKKSdpj9uL;XwjEokF&7_qF7GY_BRNWoI< zxP5`W+4lQ5Ii(!=u)n=2;Y!3Kd{x9{H5Di($?KhzaOz=8(@U6Eh~gy2oR}oj&qbUS9=N6^$jv4+d0aX)gU=n=Y&~my)SEpAuefNR*Ea~HPY;@ zX0kx~@{_JOlj6&W7IC2ci$uO5@`584zc?K>Uh{8<%rBg#wIXbsuS61PAkf^;rxScgKw?hH5vVzlpS zPA}eo#H9r)DZ_QPkX3xgWx7p>?i*WCBXrAPjGlI8qdrLI!6fZ}n0EbTCJUi6Z=8d>vT;al*?2ZN-N_W5kwpa(zC|G+~(ng^~ zXJ#DfiG$cx=n9`fEHVU@F44vPjE=DN*hof)P{c%otK!hwc_#a4G?%q<661y5@aw}A z^QIc)gH?_T4aydFWe!u&&_yS)r*Py;4z!C6K8hm0vcw`t{#RV9*co}e;A;-lE~s@W z^EjwnZotiqE_n1l|K&{9N`n&}T7f?}JQF(WT%j`(R}M3ozdJ1J3b#KD6s$F1 z{eP&bGH!84Lh6-FrlERw1VlnHy@C2{n$Af`PFR`;w2R|MFnciZ&)gheUf%%iX#U4UlE?2tb zEq1e7MypyuaJ9sM1F}AdVpai{g2A>PwjM6EtZE%slP%dQbwrf71k-U$t@5tpr1EXzmga&1QUdj0RAup2S6*`5zqP@9aJ;{K? zz81-Obup_tP_3WXL8$6(X0ZLlU({H2q20b>Agxb|c2`7nz#mU?EYYlNOV9j8c3w>K zsWJ~cN!8-}G~j($SR#R7TKB%#Ug+1KNm|p6VbLv_3nF+n!kK2q3|EVypc%rz6d`FC z`!$e0Kr~ooQ@R?bF~15xsU=}cB#Sv^0WzR)Ry00-?NHwv17ObUsS24P5Z%ddpK)ex zpx92Z!9GSgs5347+w?Me9EhN+ut(7xZB!6~`p#1@3mLN%I}K$W8@d=IN=E>3zDR9_ zU39HsU|297Cn%ePnZd}-30pX*D2Vpw=Y^jHBee?bm}3F7t;G+8HP|A@z@y#Kp8Uvg zQETY*&t>#bp&jO{LXbWELXbVb?qnc>eL2Jk_jWTdTxbJVElguf8!=8;aG1wdb1K?} zf__28la8LAX(RdyBaU*JU0X3hSaytqPue0>#vdFsR3j9o-Q?vc8@db!cZ3K1`fV_ z1+jFHx>YzrC164~T%0KE!8;{fY)j?gsLy?xxNeRB{|ZtHJtLs|=pSy^*AZd>8!a&R zDng4t2|Nju-uYmM~}6l z*E`Nl&=LczBuN0JYw&2c_Dn4x^Lm^OUDKemoaWR_U>8F$r9{HwKCUJvh>1XO+#l|#1J-tYr*}7QK*7{VisiXA{=FZ$Nk2zc^2Wqzfh>Y zQ1_CtO_=EvZjOQHY!->$h&Syq3Wom)?iOR35#y-ASzOQL zCK6Ma5&sooDvzH9X;g596s{1A`s(p^yjx`aD@LweZmkfc_ zuN~r;_Jcyv$I5|kf$&|4j#Wt9mws2~Y_5ngJzRC17%%4Fw!Rs~$@LkYD_@=zcr zoA{6^Oc9>JO)^uIy%M-lK|CT(dB)g~jEYzXD*w&YCEIp}DB-yzqHI;HJMTRmY-5$3 z!sVBeLgxPlSrc3b1W+Y{sRG}NrR!s2)Koh*$ex destinations = new ArrayList<>(); - if (TS_OUTPUTS_SECTION != null) { - destinations.add(new OutputsSectionConsumer(TS_OUTPUTS_SECTION, state)); - destinations.add(new DataLogConsumer(state)); + if (TS_OUTPUTS_DESTINATION != null) { + destinations.add(new OutputsSectionConsumer(TS_OUTPUTS_DESTINATION + File.separator + "output_channels.ini", state)); + destinations.add(new DataLogConsumer(TS_OUTPUTS_DESTINATION + File.separator + "data_logs.ini", state)); } if (tsInputFileFolder != null && needToUpdateTsFiles) { CharArrayWriter tsWriter = new CharArrayWriter(); diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java index f3bb60e996..688690cac0 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java @@ -41,7 +41,7 @@ public class ConfigField { private final String tsInfo; private final boolean isIterate; private final ReaderState state; - private boolean fsioVisible; + private final boolean fsioVisible; private final boolean hasAutoscale; private final String individualName; private final int indexWithinArray; diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/BaseCHeaderConsumer.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/BaseCHeaderConsumer.java index fbf3a2ef8a..e7cbb4bf56 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/BaseCHeaderConsumer.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/BaseCHeaderConsumer.java @@ -8,7 +8,7 @@ public abstract class BaseCHeaderConsumer implements ConfigurationConsumer { private static final String BOOLEAN_TYPE = "bool"; private final StringBuilder content = new StringBuilder(); - public static String getHeaderText(ConfigField configField, int currentOffset, int bitIndex) { + private static String getHeaderText(ConfigField configField, int currentOffset, int bitIndex) { if (configField.isBit()) { String comment = "\t/**" + EOL + ConfigDefinition.packComment(configField.getCommentContent(), "\t") + "\toffset " + currentOffset + " bit " + bitIndex + " */" + EOL; return comment + "\t" + BOOLEAN_TYPE + " " + configField.getName() + " : 1 {};" + EOL; diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/DataLogConsumer.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/DataLogConsumer.java index 5f2656b77d..846646d1a0 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/DataLogConsumer.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/DataLogConsumer.java @@ -1,13 +1,22 @@ package com.rusefi.output; +import com.rusefi.ConfigField; import com.rusefi.ReaderState; +import com.rusefi.TypesHelper; +import java.io.CharArrayWriter; +import java.io.FileWriter; import java.io.IOException; -public class DataLogConsumer implements ConfigurationConsumer { - private final ReaderState state; +import static org.abego.treelayout.internal.util.java.lang.string.StringUtil.quote; - public DataLogConsumer(ReaderState state) { +public class DataLogConsumer implements ConfigurationConsumer { + private final String fileName; + private final ReaderState state; + private final CharArrayWriter tsWriter = new CharArrayWriter(); + + public DataLogConsumer(String fileName, ReaderState state) { + this.fileName = fileName; this.state = state; } @@ -27,6 +36,52 @@ public class DataLogConsumer implements ConfigurationConsumer { public void handleEndStruct(ConfigStructure structure) throws IOException { if (state.stack.isEmpty()) { + FieldIterator iterator = new FieldIterator(structure.tsFields); + for (int i = 0; i < structure.tsFields.size(); i++) { + iterator.start(i); + + tsWriter.append(handle(iterator.cf)); + + iterator.end(); + + } + } + + if (fileName != null) { + FileWriter fw = new FileWriter(fileName); + fw.write(tsWriter.toCharArray()); + fw.close(); } } + + private String handle(ConfigField configField) { + if (configField.isBit()) { + return ""; + } + + if (configField.isArray()) { + + return ""; + } +// entry = seconds, @@GAUGE_NAME_UPTIME@@, +// entry = RPMValue, @@GAUGE_NAME_RPM@@, + + String typeString; + String autoscaleSpec = configField.autoscaleSpec(); + if (TypesHelper.isFloat(configField.getType()) || (autoscaleSpec != null && !autoscaleSpec.equals("1, 1"))) { + typeString = "float, \"%.3f\""; + } else { + typeString = "int, \"%d\""; + } + + String comment = state.variableRegistry.applyVariables(configField.getComment()); + if (comment.isEmpty() || comment.charAt(0) != '"') + comment = quote(comment); + + return "entry = " + configField.getName() + ", " + comment + ", " + typeString + "\n"; + } + + public CharArrayWriter getTsWriter() { + return tsWriter; + } } diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/TsOutput.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/TsOutput.java index f74eb55028..572832872f 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/TsOutput.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/TsOutput.java @@ -1,11 +1,12 @@ package com.rusefi.output; import com.opensr5.ini.field.IniField; -import com.rusefi.*; +import com.rusefi.ConfigField; +import com.rusefi.ReaderState; +import com.rusefi.TypesHelper; import java.io.IOException; import java.io.Writer; -import java.util.List; import static com.rusefi.ToolUtil.EOL; @@ -100,10 +101,9 @@ public class TsOutput { } protected int writeTunerStudio(ConfigStructure configStructure, String prefix, Writer tsHeader, int tsPosition) throws IOException { - List tsFields = configStructure.tsFields; - FieldIterator iterator = new FieldIterator(tsFields); + FieldIterator iterator = new FieldIterator(configStructure.tsFields); int prevTsPosition = tsPosition; - for (int i = 0; i < tsFields.size(); i++) { + for (int i = 0; i < configStructure.tsFields.size(); i++) { iterator.start(i); // if duplicate names, use previous position diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/test/OutputsTest.java b/java_tools/configuration_definition/src/main/java/com/rusefi/test/OutputsTest.java index 4e7f77dbc9..e611b4a98b 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/test/OutputsTest.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/test/OutputsTest.java @@ -1,18 +1,15 @@ package com.rusefi.test; import com.rusefi.ReaderState; -import com.rusefi.output.ConfigurationConsumer; import com.rusefi.output.DataLogConsumer; import com.rusefi.output.OutputsSectionConsumer; -import org.junit.Assert; import org.junit.Test; -import java.io.BufferedReader; -import java.io.CharArrayWriter; -import java.io.IOException; -import java.io.StringReader; +import java.io.*; import java.util.Collections; +import static org.junit.Assert.assertEquals; + public class OutputsTest { @Test public void generateSomething() throws IOException { @@ -29,7 +26,7 @@ public class OutputsTest { state.readBufferedReader(reader, Collections.singletonList(tsProjectConsumer)); - Assert.assertEquals("afr_type = scalar, F32, 0, \"ms\", 1, 0\n" + + assertEquals("afr_type = scalar, F32, 0, \"ms\", 1, 0\n" + "afr_typet = scalar, U08, 4, \"ms\", 1, 0\n" + "isForcedInduction = bits, U32, 5, [0:0]\n" + "enableFan1WithAc = bits, U32, 5, [1:1]\n" + @@ -71,15 +68,22 @@ public class OutputsTest { public void generateDataLog() throws IOException { String test = "struct total\n" + "float afr_type;PID dTime;\"ms\", 1, 0, 0, 3000, 0\n" + + "uint16_t autoscale speedToRpmRatio;s2rpm;\"value\",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0\n" + "uint8_t afr_typet;PID dTime;\"ms\", 1, 0, 0, 3000, 0\n" + + "uint8_t autoscale vehicleSpeedKph;;\"kph\",1, 0, 0, 0, 0\n" + "bit isForcedInduction;Does the vehicle have a turbo or supercharger?\n" + "bit enableFan1WithAc;+Turn on this fan when AC is on.\n" + "end_struct\n"; ReaderState state = new ReaderState(); + state.variableRegistry.register("PACK_MULT_PERCENT", 100); BufferedReader reader = new BufferedReader(new StringReader(test)); - DataLogConsumer dataLogConsumer = new DataLogConsumer(state); + DataLogConsumer dataLogConsumer = new DataLogConsumer(null, state); state.readBufferedReader(reader, Collections.singletonList(dataLogConsumer)); + assertEquals("entry = afr_type, \"PID dTime\", float, \"%.3f\"\n" + + "entry = speedToRpmRatio, \"s2rpm\", float, \"%.3f\"\n" + + "entry = afr_typet, \"PID dTime\", int, \"%d\"\n" + + "entry = vehicleSpeedKph, \"\", int, \"%d\"\n", new String(dataLogConsumer.getTsWriter().toCharArray())); } }