X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=arducontrol%2Fs88.c;h=bce0a2a090bc69ddea12eb0663962ee3cf32f900;hb=dfe51654709d752ac19ecfcca5d6d1f1e605ce52;hp=1ce574059fd848082d078e34033efeaa19abdd4d;hpb=6f462a32920aa215a20b6512223e33df257d9f3a;p=model-railway-devices.git diff --git a/arducontrol/s88.c b/arducontrol/s88.c index 1ce5740..bce0a2a 100644 --- a/arducontrol/s88.c +++ b/arducontrol/s88.c @@ -28,14 +28,18 @@ void s88_init(void) void s88_check(void) { - // Only send one packet per check to avoid blocking - if(ringbuffer_fill(s88_buffer)>0) + uint8_t count = ringbuffer_fill(s88_buffer); + if(count>=4 || (count>0 && !s88_read_count)) { - uint8_t reply[3]; + uint8_t reply[10]; + uint8_t i; + reply[0] = S88_DATA; - reply[1] = s88_out_index++; - reply[2] = ringbuffer_pop(s88_buffer); - interface_send(reply, sizeof(reply)); + reply[1] = s88_out_index; + for(i=0; i