As electronic systems installed in cars are becoming more and more complex these days, the probability of their failure rapidly increases. Due to this complexity aspect, post-mortem analysis of such failure is quite often problematic, sometimes even impossible due to the lack of enough data. To mitigate this problem and simplify identification of the failure root cause, it would be nice if it might be possible to continuously monitor electronic systems in the car, providing for possibility to identify on-the-fly any non-standard patterns in their behavior, as well as collect appropriate set of information which could be later used during post-mortem problem analysis.
$ grep DPFDIST * | cut -d ',' -f 4 | gawk '{aa = strtonum("0x" $0); if ((aa < 180) && (aa > 5)) print aa; if ((aa >= 180) && (aa < 300)) {print aa / 2; print aa / 2}}' > /tmp/dpfdist $ echo "set terminal x11; set grid; plot '/tmp/dpfdist' with lines" | gnuplot -p
$ grep ECU01AD * | cut -d ',' -f 3 | gawk 'BEGIN{prev=""} {curr=substr($0, 35, 8); if (curr != prev) \ {i1=strtonum("0x" substr(curr, 1, 2)); i2=strtonum("0x" substr(curr, 3, 2)); \ i3=strtonum("0x" substr(curr, 5, 2)); i4=strtonum("0x" substr(curr, 7, 2)); \ print i1-64, i2-64, i3-64, i4-64, i1+i2+i3+i4-256; prev=curr} }' > /tmp/injraw $ cut -d ' ' -f 1 /tmp/injraw > /tmp/inj1raw $ cut -d ' ' -f 2 /tmp/injraw > /tmp/inj2raw $ cut -d ' ' -f 3 /tmp/injraw > /tmp/inj3raw $ cut -d ' ' -f 4 /tmp/injraw > /tmp/inj4raw $ grep -v "0 0 0 0 0" /tmp/injraw | cut -d ' ' -f 5 > /tmp/injsumraw $ echo "set terminal x11; set grid; plot '/tmp/inj1raw' with lines" | gnuplot -p $ echo "set terminal x11; set grid; plot '/tmp/inj2raw' with lines" | gnuplot -p $ echo "set terminal x11; set grid; plot '/tmp/inj3raw' with lines" | gnuplot -p $ echo "set terminal x11; set grid; plot '/tmp/inj4raw' with lines" | gnuplot -p $ echo "set terminal x11; set grid; plot '/tmp/injsumraw' with lines" | gnuplot -p
$ grep ECU01EF * | cut -d ',' -f 3 | gawk '{aa = strtonum("0x" $0); print aa / 256.0 - 5.0}' > /tmp/dpfdp $ echo "set terminal x11; set grid; plot '/tmp/dpfdp' with lines" | gnuplot -p
$ find ./ | sort | while read line ; do echo $line; grep ECU $line | cut -d ',' -f 1 | gawk 'BEGIN{pt = -1} {ct = substr($0, 13); if (pt != -1) \ {difft = ct - pt; if (difft < 0) difft += 60000; if ((difft > 30) && (difft < 500)) \ print pt,ct,difft,pts,$0,$0-pts}; pts = $0; pt = ct}' ; done > /tmp/result