From 288e4a66f9b87f9e3c3c7b59d66ccee92e3b2c3e Mon Sep 17 00:00:00 2001 From: eddyem Date: Fri, 10 Aug 2018 15:28:01 +0300 Subject: [PATCH] light protocol change --- STM32/TSYS_controller/Readme.md | 2 +- STM32/TSYS_controller/can_process.c | 4 +- STM32/TSYS_controller/main.c | 138 +------------------- STM32/TSYS_controller/proto.c | 169 +++++++++++++++++++++++++ STM32/TSYS_controller/proto.h | 29 +++++ STM32/TSYS_controller/sensors_manage.c | 14 +- STM32/TSYS_controller/tsys01.bin | Bin 14892 -> 14436 bytes STM32/TSYS_controller/tsys01.c.tags | 100 +++++++++------ 8 files changed, 272 insertions(+), 184 deletions(-) create mode 100644 STM32/TSYS_controller/proto.c create mode 100644 STM32/TSYS_controller/proto.h diff --git a/STM32/TSYS_controller/Readme.md b/STM32/TSYS_controller/Readme.md index 1718406..4d8b3d7 100644 --- a/STM32/TSYS_controller/Readme.md +++ b/STM32/TSYS_controller/Readme.md @@ -4,7 +4,7 @@ Make regular scan of 8 sensors' pairs. USART speed 115200. Code for ../../kicad/stm32 ### Serial interface commands (ends with '\n'), small letter for only local processing: -- **0...9** - wait measurements of T from Nth controller (0==current controller) +- **1...7** - send message to Nth controller, not broadcast (after number should be CAN command) - **B** send dummy CAN messages to broadcast address - **c** show coefficients for all thermosensors - **D** send dummy CAN messages to master (0) address diff --git a/STM32/TSYS_controller/can_process.c b/STM32/TSYS_controller/can_process.c index 3b19e1a..1ac2ebd 100644 --- a/STM32/TSYS_controller/can_process.c +++ b/STM32/TSYS_controller/can_process.c @@ -113,7 +113,7 @@ void can_messages_proc(){ #pragma message("TODO: process received T over USB!") break; default: - SEND("Unknown data received"); + SEND("UNKNOWN_DATA"); } newline(); } @@ -125,7 +125,7 @@ static CAN_status try2send(uint8_t *buf, uint8_t len, uint16_t id){ while(Tms - Tstart < SEND_TIMEOUT_MS){ if(CAN_OK == can_send(buf, len, id)) return CAN_OK; } - SEND("Bus busy!\n"); + SEND("CAN_BUSY\n"); return CAN_BUSY; } diff --git a/STM32/TSYS_controller/main.c b/STM32/TSYS_controller/main.c index 50f49cb..981e8a8 100644 --- a/STM32/TSYS_controller/main.c +++ b/STM32/TSYS_controller/main.c @@ -25,6 +25,7 @@ #include "sensors_manage.h" #include "can.h" #include "can_process.h" +#include "proto.h" #pragma message("USARTNUM=" STR(USARTNUM)) #pragma message("I2CPINS=" STR(I2CPINS)) @@ -35,13 +36,14 @@ #endif volatile uint32_t Tms = 0; +volatile uint8_t canerror = 0; /* Called when systick fires */ void sys_tick_handler(void){ ++Tms; } -void iwdg_setup(){ +static void iwdg_setup(){ /* Enable the peripheral clock RTC */ /* (1) Enable the LSI (40kHz) */ /* (2) Wait while it is not ready */ @@ -62,18 +64,9 @@ void iwdg_setup(){ IWDG->KR = IWDG_REFRESH; /* (6) */ } -void CANsend(uint16_t targetID, uint8_t cmd, char echo){ - if(CAN_OK == can_send_cmd(targetID, cmd)){ - usart_putchar(echo); - newline(); - } -} - int main(void){ uint32_t lastT = 0, lastS = 0; - int16_t L = 0, ID; - uint8_t gotmeasurement = 0, canerror = 0; - char *txt; + uint8_t gotmeasurement = 0; sysreset(); SysTick_Config(6000, 1); gpio_setup(); @@ -125,128 +118,7 @@ int main(void){ gotmeasurement = 0; } if(usartrx()){ // usart1 received data, store in in buffer - L = usart_getline(&txt); - char _1st = txt[0]; - if(L == 2 && txt[1] == '\n'){ - L = 0; - if(_1st > '0' && _1st < '8'){ - ID = (CAN_ID_PREFIX & CAN_ID_MASK) | (_1st - '0'); - CANsend(ID, CMD_START_MEASUREMENT, _1st); - }else switch(_1st){ - case 'B': - CANsend(BCAST_ID, CMD_DUMMY0, _1st); - break; - case 'c': - showcoeffs(); - break; - case 'D': - CANsend(MASTER_ID, CMD_DUMMY1, _1st); - break; - case 'E': - CANsend(BCAST_ID, CMD_STOP_SCAN, _1st); - case 'e': - SEND("End scan mode\n"); - sensors_scan_mode = 0; - break; - case 'F': - CANsend(BCAST_ID, CMD_SENSORS_OFF, _1st); - case 'f': - SEND("Turn off sensors\n"); - sensors_off(); - break; - case 'g': - SEND("Can address: "); - printuhex(getCANID()); - newline(); - break; - case 'H': - CANsend(BCAST_ID, CMD_HIGH_SPEED, _1st); - case 'h': - i2c_setup(HIGH_SPEED); - SEND("High speed\n"); - break; - case 'i': - CAN_reinit(); - SEND("Can address: "); - printuhex(getCANID()); - newline(); - break; - case 'L': - CANsend(BCAST_ID, CMD_LOW_SPEED, _1st); - case 'l': - i2c_setup(LOW_SPEED); - SEND("Low speed\n"); - break; - /*case 'o': - sensors_on(); - break;*/ - case 'P': - CANsend(BCAST_ID, CMD_PING, _1st); - break; - case 'R': - CANsend(BCAST_ID, CMD_REINIT_I2C, _1st); - case 'r': - i2c_setup(CURRENT_SPEED); - SEND("Reinit I2C\n"); - break; - case 'S': - CANsend(BCAST_ID, CMD_START_SCAN, _1st); - case 's': - SEND("Start scan mode\n"); - sensors_scan_mode = 1; - break; - case 'T': - CANsend(BCAST_ID, CMD_START_MEASUREMENT, _1st); - case '0': - case 't': - if(!sensors_scan_mode) sensors_start(); - break; - case 'u': - SEND("CANERROR="); - if(canerror){ - canerror = 0; - usart_putchar('1'); - }else usart_putchar('0'); - newline(); - break; - case 'V': - CANsend(BCAST_ID, CMD_LOWEST_SPEED, _1st); - case 'v': - i2c_setup(VERYLOW_SPEED); - SEND("Very low speed\n"); - break; - case 'Z': - CANsend(BCAST_ID, CMD_SENSORS_STATE, _1st); - break; - default: // help - SEND( - "ALL little letters - without CAN messaging\n" - "0..7 - start measurement on given controller (0 - this)\n" - "B - send broadcast CAN dummy message\n" - "c - show coefficients (current)\n" - "D - send CAN dummy message to master\n" - "Ee- end themperature scan\n" - "Ff- turn oFf sensors\n" - "g - get last CAN address\n" - "Hh- high I2C speed\n" - "i - reinit CAN (with new address)\n" - "Ll- low I2C speed\n" - // "o - turn On sensors\n" - "P - ping everyone over CAN\n" - "Rr- reinit I2C\n" - "Ss- Start themperature scan\n" - "Tt- start temperature measurement\n" - "u - check CAN status for errors\n" - "Vv- very low I2C speed\n" - "Z - get sensors state over CAN\n" - ); - break; - } - } - } - if(L){ // text waits for sending - while(LINE_BUSY == usart_send(txt, L)); - L = 0; + cmd_parser(); } } return 0; diff --git a/STM32/TSYS_controller/proto.c b/STM32/TSYS_controller/proto.c new file mode 100644 index 0000000..6f9574e --- /dev/null +++ b/STM32/TSYS_controller/proto.c @@ -0,0 +1,169 @@ +/* + * geany_encoding=koi8-r + * proto.c + * + * Copyright 2018 Edward V. Emelianov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#include "hardware.h" +#include "usart.h" +#include "can.h" +#include "can_process.h" +#include "sensors_manage.h" + +extern volatile uint8_t canerror; + +static void CANsend(uint16_t targetID, uint8_t cmd, char echo){ + if(CAN_OK == can_send_cmd(targetID, cmd)){ + usart_putchar(echo); + newline(); + } +} + +void cmd_parser(){ + char *txt = NULL; + int16_t L = 0, ID = BCAST_ID; + L = usart_getline(&txt); + char _1st = txt[0]; + if(_1st >= '0' && _1st < '8'){ // send command to Nth controller, not broadcast + if(L == 3){ // with '\n' at end! + if(_1st == '0'){ + usart_putchar(txt[1]); + _1st = txt[1] + 'a' - 'A'; // change network command to local + newline(); + }else{ + ID = (CAN_ID_PREFIX & CAN_ID_MASK) | (_1st - '0'); + _1st = txt[1]; + } + }else{ + _1st = '?'; // show help + } + }else if(L != 2) _1st = '?'; + switch(_1st){ + case 'B': + CANsend(ID, CMD_DUMMY0, _1st); + break; + case 'c': + showcoeffs(); + break; + case 'D': + CANsend(MASTER_ID, CMD_DUMMY1, _1st); + break; + case 'E': + CANsend(ID, CMD_STOP_SCAN, _1st); + break; + case 'e': + sensors_scan_mode = 0; + break; + case 'F': + CANsend(ID, CMD_SENSORS_OFF, _1st); + break; + case 'f': + sensors_off(); + break; + case 'g': + SEND("Can address: "); + printuhex(getCANID()); + newline(); + break; + case 'H': + CANsend(ID, CMD_HIGH_SPEED, _1st); + break; + case 'h': + i2c_setup(HIGH_SPEED); + break; + case 'i': + CAN_reinit(); + SEND("Can address: "); + printuhex(getCANID()); + newline(); + break; + case 'L': + CANsend(ID, CMD_LOW_SPEED, _1st); + break; + case 'l': + i2c_setup(LOW_SPEED); + break; + case 'P': + CANsend(ID, CMD_PING, _1st); + break; + case 'R': + CANsend(ID, CMD_REINIT_I2C, _1st); + break; + case 'r': + i2c_setup(CURRENT_SPEED); + break; + case 'S': + CANsend(ID, CMD_START_SCAN, _1st); + break; + case 's': + sensors_scan_mode = 1; + break; + case 'T': + CANsend(ID, CMD_START_MEASUREMENT, _1st); + break; + case 't': + if(!sensors_scan_mode) sensors_start(); + break; + case 'u': + SEND("CANERROR="); + if(canerror){ + canerror = 0; + usart_putchar('1'); + }else usart_putchar('0'); + newline(); + break; + case 'V': + CANsend(ID, CMD_LOWEST_SPEED, _1st); + break; + case 'v': + i2c_setup(VERYLOW_SPEED); + break; + case 'Z': + CANsend(ID, CMD_SENSORS_STATE, _1st); + break; + case 'z': + SEND("SSTATE0="); + usart_putchar(sensors_get_state()); + newline(); + break; + default: // help + SEND( + "ALL little letters - without CAN messaging\n" + "0..7 - send command to given controller (0 - this) instead of broadcast\n" + "B - send broadcast CAN dummy message\n" + "c - show coefficients (current)\n" + "D - send CAN dummy message to master\n" + "Ee- end themperature scan\n" + "Ff- turn oFf sensors\n" + "g - get last CAN address\n" + "Hh- high I2C speed\n" + "i - reinit CAN (with new address)\n" + "Ll- low I2C speed\n" + // "o - turn On sensors\n" + "P - ping everyone over CAN\n" + "Rr- reinit I2C\n" + "Ss- Start themperature scan\n" + "Tt- start temperature measurement\n" + "u - check CAN status for errors\n" + "Vv- very low I2C speed\n" + "Z - get sensors state over CAN\n" + ); + break; + } +} diff --git a/STM32/TSYS_controller/proto.h b/STM32/TSYS_controller/proto.h new file mode 100644 index 0000000..b796d13 --- /dev/null +++ b/STM32/TSYS_controller/proto.h @@ -0,0 +1,29 @@ +/* + * geany_encoding=koi8-r + * proto.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#pragma once +#ifndef __PROTO_H__ +#define __PROTO_H__ + +void cmd_parser(); + +#endif // __PROTO_H__ diff --git a/STM32/TSYS_controller/sensors_manage.c b/STM32/TSYS_controller/sensors_manage.c index 71a29d7..fab0f0a 100644 --- a/STM32/TSYS_controller/sensors_manage.c +++ b/STM32/TSYS_controller/sensors_manage.c @@ -133,19 +133,19 @@ static void count_sensors(){ // procedure call each time @ resetting static uint8_t resetproc(){ uint8_t i, ctr = 0; - SEND("pair "); printu(curr_mul_addr); - SEND(" : "); + //SEND("pair "); printu(curr_mul_addr); + //SEND(" : "); for(i = 0; i < 2; ++i){ if(write_i2c(Taddr[i], TSYS01_RESET)){ - usart_putchar('0' + i); + //usart_putchar('0' + i); ++ctr; sens_present[i] |= 1<}oXwyYRBIh{})hsKr-77A)!L4xZ%tzmJ1sFJFKIQtsW$t=F0bb;>oiTL zKRfg7`OdxPo^#K+=iT?t@0;kLQ6^$;YLN1`fUAJxX*wU06%_x;{QacqN!j3k;phK{ z&42fift1TL{~723=vOtrc#p=pPlpu76yD%z)TvC5?<7^I^bEq{$uKsC_yk5Vbc_>+ zN4Qjkm>UHojI9bJPD!MgDqOHBX5;kc=a2Mbu`axp!D4NA+>6E3Nh~@Ep=`dL(P80& zX$wDQs^wLtcl-&A6qqLs2rDa6V{z!1kL$vU^$NWa;wt~er#k$ukhJ6#e+_t6g`Y%H zgm-|BW05Y$qE3bkUG6R&HP4pak8+pal`}XOepR5dA>3zE2L#M!IvZOE~o*tI>PzWxpp`b9rAp<@5!bSWhCb07m z?nC|aye!IJ?eCwlBzZK!n9jFUw5*fYq{cQvU8IL8<70ob-MVI?-;(=q)a^KpboH-s z`MJpd_V`(*8_~9{-iHE$6ob*vg>62E&WlX<{776H`7>l(4;kMT-^?ZfKO~(2Uc+L&PYU>?H$bUo6JVlCdKGvTs{-CBodCX(MZot+$AMR{Gl1`s zjsmx{O5iT(5O9u71l}n5fS0if;I&ehaF!`$FX+3G6sVN;!i<$2gBiQ@U4f1F>)s&t zK`sj%S})3(&m(p@qwT=r{vZ}#4Au)z#WUU!%lNP`w?Y}Kz?OIgJ_}CTR4rk@?G4-Wo`+rm|HW!yo>_@LHv(4K75IvYGxaf4Iq`JtUE)`IMg$p()Pq?&1P zjLTszEE^#4lChduu#9igP93Jwc zM2+u61c?tN`S7nqFx%9cZfn|E<-jZITa&F3zR}URPUDo(;A|}Kb&h#ZPQ+hdu64rk zN9!syP$VRtlBU~aQxuCQf=GNvvN{@D`%uzHn<`Rb7RO>1Yhd&)j8?>+Z6qF&VrSBA zC@ODMY-&Y|Q*6~ck>Mm)=0J=3xHXQ_^}SrFqpYHbtLD}~P?P6p*2K}rtjQy-=+hA^ zeaFUiv-K^v6e)`I;%@d9I$}$=S-CMiaartn9w~4!YVy2hO&B$K?&=av)Ey*tPA>Bx z@vSHlKZqn6T{NF$H1JY@hdS_~1mhfD-asR#^B~g|7@s}$zK|8mVHxD`7ymS00{jvG zso>y{=?i$Ez6@hn^{LQpuyQ&~Tu8hX!3IrvdWWCblqK1;87XrC7C<3JjC@-n1+v>g zm!M7Lt{^{E70!APMMf0_$%nEEQF2?wx(6q}5+>xX0bBUfpUKkG8`9Pz@mh2R z`i>W6_ZB0gnombL+tO{OT3krw&f>oUD2d|c5(i4It=h4nv(pk55~EpV@_BXd%h zY31a;I4nsP*bsk2l8Q&amPYzU@G&#lo;nxLCi_z#;WW}R^Ly&F2r|y+DHflx!v;5# zhcnBl%VttEYa{LbV7rV;ACD zeo;)Wik*D6W8nt0sFzC~hZ?S=a#Q@thF3UTq%eO{s?1wVPN_8>O(fHi8GEZCF+H+_ zK_VS-aO0V98j-c2sUnCyx4jQ~Bjs+LTtMh8b>xPy2Huq?x!1XKTyVJ2s_S3MfQ|UK z$@_3=$lIC?kWV86AOJ`%%_VQ2dL*p3O96U{9H8@YfLx&UI6{6;Kb6=WlmaaID{a8n zh&s)HFOh;YvqB224U)FB)p;JM=lo=(l$-6301T*AA*CEf4ky2-dR8NJCl$U#R0Fru zk}<`b2ky=O9Yu-efw$)5QR+ko4ObC1pd1PwhHC=_nWr%RJNZcC!dHk{`y7>FA!oH0 zsp2WJRcFkqv%ohDg&0}>I|g3Y^`}somVwQSJ7@YT9hDolRPHD(sVPD5vz1itu+~=B zCj-xdPoJ+9a9M&>0D_6r`u(_+=VXk3OaDV$zYcN;a51i*j>{+OdO-I*QT~(sNqo@} zkOu)9VIv1XZjF!2>uSEizv-s}#!CT3fE-wt_boeT5;7`nt~SQycJFQO>|D)ESD>t_ zYD3jp;MLVNB{gOFG9^M$;jHF1H`CO~b^h&oVprw!7R- zuFib}<>p^vqAaR2o~Dtq3cvv fE+Y#N*O$Z;c~BlG1o;FOBT{0xAteb*(7)&(Rx<7b delta 3410 zcmb_fdr(_d8vo8spdq|MX)6SZ_g;_&LQ7hsh1Tw*iChCoYo*mvsx=f+18oz^L+OmO z!H&;vU8}bb3cA+*vG$=m6~tE8y3Dw0eXN@}J}9VDwQ{@F(X-Vx5R%;e?geJ6JF~lg zEHgj8^F8kOI_EoQa-sFP4g=%>d(H^Dj}T$R<5_t@P#Bp0Q`RqQr<97pf5Qv^gUx^T zF$Z)ja{m?Rg}KW5h1U$E?C^xvlo~4ZZOltC|9CFht>;)E^y*1snh0rF?W=nQdS*yS z17Ocv#VE0B3H6MNHpY7OCsD=5(`B&?^%MGebOlT3X!Lv+p-)T_Iwp#YBiJ85BRy|k z9~v>=8cH#r3Ts$7k}nTP*SY7aaSo_H&Pq#GX*m>X=fgj?3+si|LY45L>-?b6_n}koFna2J51eFd^&X=y>||_4q#>2o`~HeFldboRwCr+> zY&LFvPmwnQ-|MO0y4z9T__nUbus91HoE1xEl?MmiC`67_>XD}LjlOJ~&O8|&;$Esb z(R8NBiGdG(qTWY~zxN$6Xs+`XKqE z!|qhoBy~bLJ9|(%iqa?DX{r=dX?Nj+H5;|Jw7`N?$68E{h=+t8VV`T?sy<=2Yv1Z# zVXd$SLz;b0+mnWWL$!MNv&pg-7KU)2P*4eDl2D5G5{0Fehk?r_R!z0cSuG}X_ zo=up2JyqIayI}V98I#PKb3osXp-cdpBm=!Bkz|@5N;X+Sa^#IT(7BTu6CZ-YL&8QO z&j;q$Lz<(6wvKE2H9bsOaR|y@330fs_l*LE){SVrb`EvP-2FmSoOd^YOq1H9^F+CQolbqGnD6yjiLbpg&)m6wXNA7Z{MoQrv$XTa+^?@0} zpPXOJ5?VP<=uP9w_Ebpe+;X(xr#=25PU>k6p7n}xv$T#UTp5Plk|=ZKb>ZhB4u>vx zvOv0xPv)*c&4vWval1d3$(hj!s7^AaKOY ztL0O;1-SluT)nAcshAFj(wP!ifW#tOhQ;xuOf`S($fhROw_wsh1Rf%NB4@1jX}L zDI;<@4yKH-U0B}LYct;=I?T5cD^oTv^qpcwzd|hyv7o#LKrbc~J92$*l`R`e@A#=d zd)oYB7#1am_3jik&|7LCpkLq-n0ac}VUkL+w&_aGJX^=on;#Rys~&W5=>6#r7v z@F~ZX^Yv7Q927fK%Z*C+EcyoFcv!+r!kiLez zFG}g#=N?3Zi7>I69=?Fxs*5w%0X-o$XOt%!(EGMZ@pl>X7B5l*3`tV^<}X(QDU+v=%v1FfK<7;sQet`xpURxC9H=R7PY?RH`UCg)*`|h$2DZ)H=xx5++XMji&USWlXZuc04-lILx}N_7 zDs)qRN|D;o-@S;S;E+5<8>h(71!5z3~W(l?4W`A=BTfM}g zhqWCIZ5==JjDA+GuBxrQxpoEmxXs(Plie23&3r9>Wwn;8-)#3bw0E|7w|o5^Y{1Xn zh5PDf8w381w!pS+-Zs``VHdI;zUKClf!nTog%tU+upERQ@umTEM-lrFcOy0-S`p&j zrDeg^hUPXUeHM%G2Rhg-flj}2Vpa!cik%WEC8MkjtL$K}$VTafb2j!HVMpA6s6bc| zix4J6FaBy!a4%vP;$g%d#NN5EL1)LsK7^$UU)=?G!i%SnkF)}L1*M1?URf(Lg|{J{ R!Hp%LBlv{NGLdn(;h(9xf`9-3 diff --git a/STM32/TSYS_controller/tsys01.c.tags b/STM32/TSYS_controller/tsys01.c.tags index 953e6e7..fe0d946 100644 --- a/STM32/TSYS_controller/tsys01.c.tags +++ b/STM32/TSYS_controller/tsys01.c.tags @@ -94,7 +94,7 @@ ADC_TR_HT ADC_TR_LTÌ65536Ö0 AHB2PERIPH_BASEÌ65536Ö0 AHBPERIPH_BASEÌ65536Ö0 -ALL_OKÌ4Îanon_enum_3Ö0 +ALL_OKÌ4Îanon_enum_1Ö0 APBPERIPH_BASEÌ65536Ö0 BAD_TEMPERATUREÌ65536Ö0 BCAST_IDÌ65536Ö0 @@ -116,8 +116,8 @@ CAN_BTR_TS2 CAN_BTR_TS2_0Ì65536Ö0 CAN_BTR_TS2_1Ì65536Ö0 CAN_BTR_TS2_2Ì65536Ö0 -CAN_BUSYÌ4Îanon_enum_2Ö0 -CAN_ERRORÌ4Îanon_enum_2Ö0 +CAN_BUSYÌ4Îanon_enum_4Ö0 +CAN_ERRORÌ4Îanon_enum_4Ö0 CAN_ESR_BOFFÌ65536Ö0 CAN_ESR_EPVFÌ65536Ö0 CAN_ESR_EWGFÌ65536Ö0 @@ -1053,7 +1053,7 @@ CAN_FFA1R_FFA6 CAN_FFA1R_FFA7Ì65536Ö0 CAN_FFA1R_FFA8Ì65536Ö0 CAN_FFA1R_FFA9Ì65536Ö0 -CAN_FIFO_OVERRUNÌ4Îanon_enum_2Ö0 +CAN_FIFO_OVERRUNÌ4Îanon_enum_4Ö0 CAN_FM1R_FBMÌ65536Ö0 CAN_FM1R_FBM0Ì65536Ö0 CAN_FM1R_FBM1Ì65536Ö0 @@ -1120,8 +1120,8 @@ CAN_MSR_SLAK CAN_MSR_SLAKIÌ65536Ö0 CAN_MSR_TXMÌ65536Ö0 CAN_MSR_WKUIÌ65536Ö0 -CAN_NOTMASTERÌ4Îanon_enum_2Ö0 -CAN_OKÌ4Îanon_enum_2Ö0 +CAN_NOTMASTERÌ4Îanon_enum_4Ö0 +CAN_OKÌ4Îanon_enum_4Ö0 CAN_RDH0R_DATA4Ì65536Ö0 CAN_RDH0R_DATA5Ì65536Ö0 CAN_RDH0R_DATA6Ì65536Ö0 @@ -1144,7 +1144,7 @@ CAN_RDT0R_TIME CAN_RDT1R_DLCÌ65536Ö0 CAN_RDT1R_FMIÌ65536Ö0 CAN_RDT1R_TIMEÌ65536Ö0 -CAN_READYÌ4Îanon_enum_2Ö0 +CAN_READYÌ4Îanon_enum_4Ö0 CAN_RF0R_FMP0Ì65536Ö0 CAN_RF0R_FOVR0Ì65536Ö0 CAN_RF0R_FULL0Ì65536Ö0 @@ -1161,7 +1161,7 @@ CAN_RI1R_EXID CAN_RI1R_IDEÌ65536Ö0 CAN_RI1R_RTRÌ65536Ö0 CAN_RI1R_STIDÌ65536Ö0 -CAN_STOPÌ4Îanon_enum_2Ö0 +CAN_STOPÌ4Îanon_enum_4Ö0 CAN_TDH0R_DATA4Ì65536Ö0 CAN_TDH0R_DATA5Ì65536Ö0 CAN_TDH0R_DATA6Ì65536Ö0 @@ -1234,10 +1234,10 @@ CAN_TSR_TME2 CAN_TSR_TXOK0Ì65536Ö0 CAN_TSR_TXOK1Ì65536Ö0 CAN_TSR_TXOK2Ì65536Ö0 -CAN_commandsÌ4096Ö0Ïanon_enum_8 +CAN_commandsÌ4096Ö0Ïanon_enum_9 CAN_get_statusÌ16Í()Ö0ÏCAN_status CAN_get_statusÌ1024Í()Ö0ÏCAN_status -CAN_messageÌ4096Ö0Ïanon_struct_1 +CAN_messageÌ4096Ö0Ïanon_struct_3 CAN_messagebuf_popÌ16Í()Ö0ÏCAN_message * CAN_messagebuf_popÌ1024Í()Ö0ÏCAN_message * CAN_messagebuf_pushÌ16Í(CAN_message *msg)Ö0Ïint @@ -1245,7 +1245,7 @@ CAN_reinit CAN_reinitÌ1024Í()Ö0Ïvoid CAN_setupÌ16Í()Ö0Ïvoid CAN_setupÌ1024Í()Ö0Ïvoid -CAN_statusÌ4096Ö0Ïanon_enum_2 +CAN_statusÌ4096Ö0Ïanon_enum_4 CANsendÌ16Í(uint16_t targetID, uint8_t cmd, char echo)Ö0Ïvoid CECÌ65536Ö0 CEC_BASEÌ65536Ö0 @@ -1291,54 +1291,66 @@ CEC_TXDR_RXD CEC_TXDR_TXDÌ65536Ö0 CLEAR_BITÌ131072Í(REG,BIT)Ö0 CLEAR_REGÌ131072Í(REG)Ö0 -CMD_DUMMY0Ì4Îanon_enum_4Ö0 CMD_DUMMY0Ì4Îanon_enum_5Ö0 +CMD_DUMMY0Ì4Îanon_enum_6Ö0 CMD_DUMMY0Ì4Îanon_enum_7Ö0 CMD_DUMMY0Ì4Îanon_enum_8Ö0 -CMD_DUMMY1Ì4Îanon_enum_4Ö0 +CMD_DUMMY0Ì4Îanon_enum_9Ö0 CMD_DUMMY1Ì4Îanon_enum_5Ö0 +CMD_DUMMY1Ì4Îanon_enum_6Ö0 CMD_DUMMY1Ì4Îanon_enum_7Ö0 CMD_DUMMY1Ì4Îanon_enum_8Ö0 -CMD_HIGH_SPEEDÌ4Îanon_enum_4Ö0 +CMD_DUMMY1Ì4Îanon_enum_9Ö0 CMD_HIGH_SPEEDÌ4Îanon_enum_5Ö0 +CMD_HIGH_SPEEDÌ4Îanon_enum_6Ö0 CMD_HIGH_SPEEDÌ4Îanon_enum_7Ö0 CMD_HIGH_SPEEDÌ4Îanon_enum_8Ö0 -CMD_LOWEST_SPEEDÌ4Îanon_enum_4Ö0 +CMD_HIGH_SPEEDÌ4Îanon_enum_9Ö0 CMD_LOWEST_SPEEDÌ4Îanon_enum_5Ö0 +CMD_LOWEST_SPEEDÌ4Îanon_enum_6Ö0 CMD_LOWEST_SPEEDÌ4Îanon_enum_7Ö0 CMD_LOWEST_SPEEDÌ4Îanon_enum_8Ö0 -CMD_LOW_SPEEDÌ4Îanon_enum_4Ö0 +CMD_LOWEST_SPEEDÌ4Îanon_enum_9Ö0 CMD_LOW_SPEEDÌ4Îanon_enum_5Ö0 +CMD_LOW_SPEEDÌ4Îanon_enum_6Ö0 CMD_LOW_SPEEDÌ4Îanon_enum_7Ö0 CMD_LOW_SPEEDÌ4Îanon_enum_8Ö0 -CMD_PINGÌ4Îanon_enum_4Ö0 +CMD_LOW_SPEEDÌ4Îanon_enum_9Ö0 CMD_PINGÌ4Îanon_enum_5Ö0 +CMD_PINGÌ4Îanon_enum_6Ö0 CMD_PINGÌ4Îanon_enum_7Ö0 CMD_PINGÌ4Îanon_enum_8Ö0 -CMD_REINIT_I2CÌ4Îanon_enum_4Ö0 +CMD_PINGÌ4Îanon_enum_9Ö0 CMD_REINIT_I2CÌ4Îanon_enum_5Ö0 +CMD_REINIT_I2CÌ4Îanon_enum_6Ö0 CMD_REINIT_I2CÌ4Îanon_enum_7Ö0 CMD_REINIT_I2CÌ4Îanon_enum_8Ö0 -CMD_SENSORS_OFFÌ4Îanon_enum_4Ö0 +CMD_REINIT_I2CÌ4Îanon_enum_9Ö0 CMD_SENSORS_OFFÌ4Îanon_enum_5Ö0 +CMD_SENSORS_OFFÌ4Îanon_enum_6Ö0 CMD_SENSORS_OFFÌ4Îanon_enum_7Ö0 CMD_SENSORS_OFFÌ4Îanon_enum_8Ö0 -CMD_SENSORS_STATEÌ4Îanon_enum_4Ö0 +CMD_SENSORS_OFFÌ4Îanon_enum_9Ö0 CMD_SENSORS_STATEÌ4Îanon_enum_5Ö0 +CMD_SENSORS_STATEÌ4Îanon_enum_6Ö0 CMD_SENSORS_STATEÌ4Îanon_enum_7Ö0 CMD_SENSORS_STATEÌ4Îanon_enum_8Ö0 -CMD_START_MEASUREMENTÌ4Îanon_enum_4Ö0 +CMD_SENSORS_STATEÌ4Îanon_enum_9Ö0 CMD_START_MEASUREMENTÌ4Îanon_enum_5Ö0 +CMD_START_MEASUREMENTÌ4Îanon_enum_6Ö0 CMD_START_MEASUREMENTÌ4Îanon_enum_7Ö0 CMD_START_MEASUREMENTÌ4Îanon_enum_8Ö0 -CMD_START_SCANÌ4Îanon_enum_4Ö0 +CMD_START_MEASUREMENTÌ4Îanon_enum_9Ö0 CMD_START_SCANÌ4Îanon_enum_5Ö0 +CMD_START_SCANÌ4Îanon_enum_6Ö0 CMD_START_SCANÌ4Îanon_enum_7Ö0 CMD_START_SCANÌ4Îanon_enum_8Ö0 -CMD_STOP_SCANÌ4Îanon_enum_4Ö0 +CMD_START_SCANÌ4Îanon_enum_9Ö0 CMD_STOP_SCANÌ4Îanon_enum_5Ö0 +CMD_STOP_SCANÌ4Îanon_enum_6Ö0 CMD_STOP_SCANÌ4Îanon_enum_7Ö0 CMD_STOP_SCANÌ4Îanon_enum_8Ö0 +CMD_STOP_SCANÌ4Îanon_enum_9Ö0 COMMAND_MARKÌ65536Ö0 CONCATÌ131072Í(a,b)Ö0 CONV_TIMEÌ65536Ö0 @@ -2277,7 +2289,7 @@ LED1_port LED_blinkÌ131072Í(x)Ö0 LED_offÌ131072Í(x)Ö0 LED_onÌ131072Í(x)Ö0 -LINE_BUSYÌ4Îanon_enum_3Ö0 +LINE_BUSYÌ4Îanon_enum_1Ö0 LOW_SPEEDÌ4Îanon_enum_0Ö0 MASTER_IDÌ65536Ö0 MODIFY_REGÌ131072Í(REG,CLEARMASK,SETMASK)Ö0 @@ -2918,16 +2930,16 @@ SEND_TIMEOUT_MS SENSORS_OFFÌ131072Í()Ö0 SENSORS_ONÌ131072Í()Ö0 SENSORS_OVERCURNTÌ131072Í()Ö0 -SENS_GATHERINGÌ4Îanon_enum_6Ö0 -SENS_GET_COEFFSÌ4Îanon_enum_6Ö0 -SENS_INITINGÌ4Îanon_enum_6Ö0 -SENS_OFFÌ4Îanon_enum_6Ö0 -SENS_OVERCURNTÌ4Îanon_enum_6Ö0 -SENS_OVERCURNT_OFFÌ4Îanon_enum_6Ö0 -SENS_RESETINGÌ4Îanon_enum_6Ö0 -SENS_SLEEPINGÌ4Îanon_enum_6Ö0 -SENS_START_MSRMNTÌ4Îanon_enum_6Ö0 -SENS_WAITINGÌ4Îanon_enum_6Ö0 +SENS_GATHERINGÌ4Îanon_enum_2Ö0 +SENS_GET_COEFFSÌ4Îanon_enum_2Ö0 +SENS_INITINGÌ4Îanon_enum_2Ö0 +SENS_OFFÌ4Îanon_enum_2Ö0 +SENS_OVERCURNTÌ4Îanon_enum_2Ö0 +SENS_OVERCURNT_OFFÌ4Îanon_enum_2Ö0 +SENS_RESETINGÌ4Îanon_enum_2Ö0 +SENS_SLEEPINGÌ4Îanon_enum_2Ö0 +SENS_START_MSRMNTÌ4Îanon_enum_2Ö0 +SENS_WAITINGÌ4Îanon_enum_2Ö0 SET_BITÌ131072Í(REG,BIT)Ö0 SIG_ATOMIC_MAXÌ65536Ö0 SIG_ATOMIC_MINÌ65536Ö0 @@ -3013,7 +3025,7 @@ STM32F0 STM32F042x6Ì65536Ö0 STRÌ131072Í(s)Ö0 STR_HELPERÌ131072Í(s)Ö0 -STR_TOO_LONGÌ4Îanon_enum_3Ö0 +STR_TOO_LONGÌ4Îanon_enum_1Ö0 SYSCFGÌ65536Ö0 SYSCFG_BASEÌ65536Ö0 SYSCFG_CFGR1_ADC_DMA_RMPÌ65536Ö0 @@ -3145,7 +3157,7 @@ SYSCFG_EXTICR4_EXTI15_PB SYSCFG_EXTICR4_EXTI15_PCÌ65536Ö0 SYSCFG_EXTICR4_EXTI15_PDÌ65536Ö0 SYSCFG_EXTICR4_EXTI15_PEÌ65536Ö0 -SensorsStateÌ4096Ö0Ïanon_enum_6 +SensorsStateÌ4096Ö0Ïanon_enum_2 SstateÌ16384Ö0ÏSensorsState StartHSEÌ16Í()Ö0Ïinline void StartHSI48Ì16Í()Ö0Ïinline void @@ -3588,7 +3600,7 @@ TSYS01_ADDR1 TSYS01_PROM_ADDR0Ì65536Ö0 TSYS01_RESETÌ65536Ö0 TSYS01_START_CONVÌ65536Ö0 -TXstatusÌ4096Ö0Ïanon_enum_3 +TXstatusÌ4096Ö0Ïanon_enum_1 TaddrÌ16384Ö0Ïconst uint8_t TemperaturesÌ16384Ö0Ïint16_t TemperaturesÌ32768Ö0Ïint16_t @@ -4190,6 +4202,7 @@ __PIE__ __PMTÌ65536Ö0 __PMTÌ131072Í(args)Ö0 __PRAGMA_REDEFINE_EXTNAMEÌ65536Ö0 +__PROTO_H__Ì65536Ö0 __PTRDIFF_MAX__Ì65536Ö0 __PTRDIFF_TYPE__Ì65536Ö0 __REDIRECTÌ131072Í(name,proto,alias)Ö0 @@ -4457,14 +4470,15 @@ __wur __x86_64Ì65536Ö0 __x86_64__Ì65536Ö0 anon_enum_0Ì2Ö0 +anon_enum_1Ì2Ö0 anon_enum_2Ì2Ö0 -anon_enum_3Ì2Ö0 anon_enum_4Ì2Ö0 anon_enum_5Ì2Ö0 anon_enum_6Ì2Ö0 anon_enum_7Ì2Ö0 anon_enum_8Ì2Ö0 -anon_struct_1Ì2048Ö0 +anon_enum_9Ì2Ö0 +anon_struct_3Ì2048Ö0 bufovrÌ16384Ö0Ïint bufovrÌ32768Ö0Ïint calc_tÌ16Í(uint32_t t, int i)Ö0Ïuint16_t @@ -4481,14 +4495,18 @@ can_send_cmd can_send_dataÌ16Í(uint8_t *data, uint8_t len)Ö0ÏCAN_status can_send_dataÌ1024Í(uint8_t *data, uint8_t len)Ö0ÏCAN_status can_statusÌ16384Ö0ÏCAN_status +canerrorÌ16384Ö0Ïvolatile uint8_t +canerrorÌ32768Ö0Ïvolatile uint8_t cec_can_isrÌ16Í()Ö0Ïvoid +cmd_parserÌ16Í()Ö0Ïvoid +cmd_parserÌ1024Í()Ö0Ïvoid cntrÌ16384Ö0Ïuint32_t coefficientsÌ16384Ö0Ïuint16_t count_sensorsÌ16Í()Ö0Ïvoid curI2CspeedÌ16384Ö0ÏI2C_SPEED curI2CspeedÌ32768Ö0ÏI2C_SPEED curr_mul_addrÌ16384Ö0Ïuint8_t -dataÌ64Îanon_struct_1Ö0Ïuint8_t +dataÌ64Îanon_struct_3Ö0Ïuint8_t datalenÌ16384Ö0Ïint dlenÌ16384Ö0Ïint dma1_channel2_3_isrÌ16Í()Ö0Ïvoid @@ -4504,7 +4522,7 @@ i2c_setup i2c_setupÌ1024Í(I2C_SPEED speed)Ö0Ïvoid iwdg_setupÌ16Í()Ö0Ïvoid lastSensTÌ16384Ö0Ïuint32_t -lengthÌ64Îanon_struct_1Ö0Ïuint8_t +lengthÌ64Îanon_struct_3Ö0Ïuint8_t linerdyÌ16384Ö0Ïvolatile int linerdyÌ32768Ö0Ïvolatile int linuxÌ65536Ö0