From d6540fd530ae2fbbf03ca856e627b24cd213dadc Mon Sep 17 00:00:00 2001 From: mtei <2170248+mtei@users.noreply.github.com> Date: Mon, 23 Jul 2018 15:31:29 +0900 Subject: [PATCH] add debug code for retry --- keyboards/helix/rev2/split_scomm.c | 20 ++++++++++++++------ keyboards/helix/serial.h | 10 ++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/keyboards/helix/rev2/split_scomm.c b/keyboards/helix/rev2/split_scomm.c index ba02a14eac..691ee9d41d 100644 --- a/keyboards/helix/rev2/split_scomm.c +++ b/keyboards/helix/rev2/split_scomm.c @@ -4,10 +4,14 @@ #include #include #include "serial.h" +#ifdef SERIAL_DEBUG_MODE +#include +#endif uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; -uint8_t volatile status0 = 0; +uint8_t volatile status_com = 0; +uint8_t volatile status1 = 0; #ifdef SERIAL_USE_MULTI_TRANSACTION uint8_t slave_buffer_change_count = 0; uint8_t s_change_old = 0xff; @@ -15,7 +19,7 @@ uint8_t s_change_old = 0xff; #ifndef SERIAL_USE_MULTI_TRANSACTION SSTD_t transactions[] = { - { (uint8_t *)&status0, + { (uint8_t *)&status_com, sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer, sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer } @@ -25,19 +29,19 @@ SSTD_t transactions[] = { SSTD_t transactions[] = { #define GET_SLAVE_STATUS 0 /* master buffer not changed, only recive slave_buffer_change_count */ - { (uint8_t *)&status0, + { (uint8_t *)&status_com, 0, NULL, sizeof(slave_buffer_change_count), &slave_buffer_change_count, }, #define PUT_MASTER_GET_SLAVE_STATUS 1 /* master buffer changed need send, and recive slave_buffer_change_count */ - { (uint8_t *)&status0, + { (uint8_t *)&status_com, sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer, sizeof(slave_buffer_change_count), &slave_buffer_change_count, }, #define GET_SLAVE_BUFFER 2 /* recive serial_slave_buffer */ - { (uint8_t *)&status0, + { (uint8_t *)&status1, 0, NULL, sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer } @@ -72,9 +76,13 @@ int serial_update_buffers(int master_update) else status = soft_serial_transaction(PUT_MASTER_GET_SLAVE_STATUS); need_retry = ( status == TRANSACTION_END ) ? 0 : 1; + if( need_retry ) debug_retry_on(); else debug_retry_off(); return status; #else - return soft_serial_transaction(); + int status; + status = soft_serial_transaction(); + if( status != TRANSACTION_END ) debug_retry_on(); else debug_retry_off(); + return status; #endif } #endif /* USE_SERIAL */ diff --git a/keyboards/helix/serial.h b/keyboards/helix/serial.h index 67d6472205..b1becbfb24 100644 --- a/keyboards/helix/serial.h +++ b/keyboards/helix/serial.h @@ -59,6 +59,7 @@ int soft_serial_get_and_clean_status(int sstd_index); #define SERIAL_DEBUG_MODE_WATCH_SYNC 0x8 #define SERIAL_DEBUG_MODE_WATCH_IOCHG 0x10 #define SERIAL_DEBUG_MODE_WATCH_PARITY 0x20 +#define SERIAL_DEBUG_MODE_WATCH_RETRY 0x40 //#define SERIAL_DEBUG_MODE SERIAL_DEBUG_MODE_WATCH_OUTMODE //#define SERIAL_DEBUG_MODE SERIAL_DEBUG_MODE_WATCH_RCVSAMPLE @@ -69,6 +70,7 @@ int soft_serial_get_and_clean_status(int sstd_index); //#define SERIAL_DEBUG_MODE SERIAL_DEBUG_MODE_WATCH_IOCHG //#define SERIAL_DEBUG_MODE (SERIAL_DEBUG_MODE_WATCH_IOCHG|SERIAL_DEBUG_MODE_WATCH_SYNC) //#define SERIAL_DEBUG_MODE SERIAL_DEBUG_MODE_WATCH_PARITY +//#define SERIAL_DEBUG_MODE SERIAL_DEBUG_MODE_WATCH_RETRY // Helix keyboard unused port (for Logic analyzer or oscilloscope) #ifdef SERIAL_DEBUG_MODE @@ -129,6 +131,14 @@ int soft_serial_get_and_clean_status(int sstd_index); #define debug_parity_off() #endif +#if SERIAL_DEBUG_MODE & SERIAL_DEBUG_MODE_WATCH_RETRY + #define debug_retry_on() SERIAL_DBGPIN_PORT |= SERIAL_DBGPIN_MASK + #define debug_retry_off() SERIAL_DBGPIN_PORT &= ~SERIAL_DBGPIN_MASK +#else + #define debug_retry_on() + #define debug_retry_off() +#endif + #define SYNC_DEBUG_MODE 0 #if SYNC_DEBUG_MODE == 0 #define debug_dummy_delay_recv()