From 3a903d7d8ca9f053556b4c8577973d2fe70246c6 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Mon, 9 Feb 2026 21:04:47 +0300 Subject: [PATCH] add timeouts --- F1:F103/BISS_C_encoders/Makefile | 2 +- F1:F103/BISS_C_encoders/encoders.bin | Bin 14364 -> 15524 bytes F1:F103/BISS_C_encoders/encoders.creator.user | 9 ++++----- F1:F103/BISS_C_encoders/proto.c | 2 +- F1:F103/BISS_C_encoders/ringbuffer.c | 17 +++++++++++------ F1:F103/BISS_C_encoders/usb_dev.c | 14 ++++++++++++-- F1:F103/BISS_C_encoders/version.inc | 4 ++-- 7 files changed, 31 insertions(+), 17 deletions(-) diff --git a/F1:F103/BISS_C_encoders/Makefile b/F1:F103/BISS_C_encoders/Makefile index 3aa2506..8496007 100644 --- a/F1:F103/BISS_C_encoders/Makefile +++ b/F1:F103/BISS_C_encoders/Makefile @@ -6,4 +6,4 @@ LDSCRIPT ?= stm32f103xB.ld DEFINES := -DSTM32F10X_MD include ../makefile.f1 -include ../../makefile.stm32 +include ../makefile.stm32 diff --git a/F1:F103/BISS_C_encoders/encoders.bin b/F1:F103/BISS_C_encoders/encoders.bin index dcf8cfbae9b3a97fd9e9e632f67c903145456d9a..758d54cbe7df9c062b8c927a4f9fb04b7f2cdeb0 100755 GIT binary patch literal 15524 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 SR~XdCUjO?w2KBx_|NS>l911G{ literal 14364 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 - + EnvironmentId @@ -86,6 +86,7 @@ true + 0 @@ -163,6 +164,7 @@ ProjectExplorer.CustomExecutableRunConfiguration false + true true @@ -197,6 +199,7 @@ ProjectExplorer.CustomExecutableRunConfiguration false + true true @@ -207,10 +210,6 @@ ProjectExplorer.Project.TargetCount 1 - - ProjectExplorer.Project.Updater.FileVersion - 22 - Version 22 diff --git a/F1:F103/BISS_C_encoders/proto.c b/F1:F103/BISS_C_encoders/proto.c index 4fea9ce..b096ddb 100644 --- a/F1:F103/BISS_C_encoders/proto.c +++ b/F1:F103/BISS_C_encoders/proto.c @@ -496,7 +496,7 @@ static errcode_e help(_U_ cmd_e idx, _U_ char* par){ void parse_cmd(char *cmd){ errcode_e ecode = ERR_BADCMD; // command and its parameter -CMDWRn(cmd); +//CMDWRn(cmd); char *cmdstart = omit_spaces(cmd), *parstart = NULL; if(!cmdstart) goto retn; char *ptr = cmdstart; diff --git a/F1:F103/BISS_C_encoders/ringbuffer.c b/F1:F103/BISS_C_encoders/ringbuffer.c index b0ffe8e..d444ec6 100644 --- a/F1:F103/BISS_C_encoders/ringbuffer.c +++ b/F1:F103/BISS_C_encoders/ringbuffer.c @@ -15,6 +15,7 @@ * along with this program. If not, see . */ +#include // memcpy #include "ringbuffer.h" static int datalen(ringbuffer *b){ @@ -57,11 +58,11 @@ int RB_hasbyte(ringbuffer *b, uint8_t byte){ b->busy = 0; return ret; } - +/* // poor memcpy static void mcpy(uint8_t *targ, const uint8_t *src, int l){ while(l--) *targ++ = *src++; -} +}*/ // increment head or tail TRUE_INLINE void incr(ringbuffer *b, volatile int *what, int n){ @@ -76,9 +77,11 @@ static int read(ringbuffer *b, uint8_t *s, int len){ int _1st = b->length - b->head; if(_1st > l) _1st = l; if(_1st > len) _1st = len; - mcpy(s, b->data + b->head, _1st); + //mcpy(s, b->data + b->head, _1st); + memcpy(s, b->data + b->head, _1st); if(_1st < len && l > _1st){ - mcpy(s+_1st, b->data, l - _1st); + //mcpy(s+_1st, b->data, l - _1st); + memcpy(s+_1st, b->data, l - _1st); incr(b, &b->head, l); return l; } @@ -132,9 +135,11 @@ static int write(ringbuffer *b, const uint8_t *str, int l){ if(l > r || !l) return 0; int _1st = b->length - b->tail; if(_1st > l) _1st = l; - mcpy(b->data + b->tail, str, _1st); + //mcpy(b->data + b->tail, str, _1st); + memcpy(b->data + b->tail, str, _1st); if(_1st < l){ // add another piece from start - mcpy(b->data, str+_1st, l-_1st); + //mcpy(b->data, str+_1st, l-_1st); + memcpy(b->data, str+_1st, l-_1st); } incr(b, &b->tail, l); return l; diff --git a/F1:F103/BISS_C_encoders/usb_dev.c b/F1:F103/BISS_C_encoders/usb_dev.c index fd596e2..feee2f4 100644 --- a/F1:F103/BISS_C_encoders/usb_dev.c +++ b/F1:F103/BISS_C_encoders/usb_dev.c @@ -254,7 +254,12 @@ int USB_sendall(uint8_t ifno){ int USB_send(uint8_t ifno, const uint8_t *buf, int len){ if(!buf || !CDCready[ifno] || !len) return FALSE; DBG("USB_send"); + uint32_t T0 = Tms; while(len){ + if(Tms - T0 > DISCONN_TMOUT){ + break_handler(ifno); + return FALSE; + } if(!CDCready[ifno]) return FALSE; IWDG->KR = IWDG_REFRESH; int a = RB_write((ringbuffer*)&rbout[ifno], buf, len); @@ -272,7 +277,12 @@ int USB_send(uint8_t ifno, const uint8_t *buf, int len){ int USB_putbyte(uint8_t ifno, uint8_t byte){ if(!CDCready[ifno]) return FALSE; int l = 0; + uint32_t T0 = Tms; while((l = RB_write((ringbuffer*)&rbout[ifno], &byte, 1)) != 1){ + if(Tms - T0 > DISCONN_TMOUT){ + break_handler(ifno); + return FALSE; + } if(!CDCready[ifno]) return FALSE; IWDG->KR = IWDG_REFRESH; if(l == 0){ // overfull @@ -299,7 +309,7 @@ int USB_sendstr(uint8_t ifno, const char *string){ * @return amount of received bytes (negative, if overfull happened) */ int USB_receive(uint8_t ifno, uint8_t *buf, int len){ - chkin(ifno); + chkin(ifno); // rxtx_handler could leave last message unwritten if buffer was busy if(bufovrfl[ifno]){ DBG("Buffer overflow"); DBGs(uhex2str(ifno)); @@ -320,7 +330,7 @@ int USB_receive(uint8_t ifno, uint8_t *buf, int len){ * @return strlen or negative value indicating overflow (if so, string won't be ends with 0 and buffer should be cleared) */ int USB_receivestr(uint8_t ifno, char *buf, int len){ - chkin(ifno); + chkin(ifno); // rxtx_handler could leave last message unwritten if buffer was busy if(bufovrfl[ifno]){ while(1 != RB_clearbuf((ringbuffer*)&rbin[ifno])); bufovrfl[ifno] = 0; diff --git a/F1:F103/BISS_C_encoders/version.inc b/F1:F103/BISS_C_encoders/version.inc index d66eb33..00fd981 100644 --- a/F1:F103/BISS_C_encoders/version.inc +++ b/F1:F103/BISS_C_encoders/version.inc @@ -1,2 +1,2 @@ -#define BUILD_NUMBER "126" -#define BUILD_DATE "2025-08-24" +#define BUILD_NUMBER "130" +#define BUILD_DATE "2026-02-09"