From 26fa8c00bf7a883dc77c2c9c57dacaa92f9a5328 Mon Sep 17 00:00:00 2001 From: Mateusz Lubecki Date: Tue, 25 Aug 2020 20:05:04 +0200 Subject: [PATCH] added serial receive function with immediate timeout calculation. first test and minor bugfixes in davis code --- ...instrukcja_obslugi_instalacji_i_napraw.odt | Bin 1930712 -> 1931078 bytes src/main.c | 24 ++++++++ system/include/davis_vantage/davis.h | 2 + system/include/drivers/serial.h | 4 ++ system/src/davis_vantage/davis.c | 10 ++-- system/src/drivers/serial.c | 55 ++++++++++++++++++ 6 files changed, 90 insertions(+), 5 deletions(-) diff --git a/doc/instrukcja_obslugi_instalacji_i_napraw.odt b/doc/instrukcja_obslugi_instalacji_i_napraw.odt index dcc440c3bfdba903c863ea4f9ddf86e5d8527e4f..0bd2b876eab456bbd7d875f9902457b6bf9c4d91 100644 GIT binary patch delta 28401 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�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 L0by$g_>le&zEFM$ delta 28025 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 NuwK{?!ItRb@ju9nf3yGq diff --git a/src/main.c b/src/main.c index 5e9d169..edc4f9f 100644 --- a/src/main.c +++ b/src/main.c @@ -43,6 +43,11 @@ #include "aprs/wx.h" #include "drivers/gpio_conf.h" +#ifdef _DAVIS_SERIAL +#include "../system/include/davis_vantage/davis.h" +#include "../system/include/davis_vantage/davis_parsers.h" +#endif + #ifdef _SENSOR_MS5611 #include "drivers/ms5611.h" #endif @@ -288,6 +293,25 @@ int main(int argc, char* argv[]){ main_wx_srl_ctx_ptr->te_port = GPIOA; #endif +#if (defined(PARATNC_HWREV_B) || defined(PARATNC_HWREV_C)) && defined(_DAVIS_SERIAL) + // reinitialize the KISS serial port temporary to davis baudrate + main_target_kiss_baudrate = DAVIS_DEFAULT_BAUDRATE; + + // reset RX state to allow reinitialization with changed baudrate + main_kiss_srl_ctx_ptr->srl_rx_state = SRL_RX_NOT_CONFIG; + + // reinitializing serial hardware + srl_init(main_kiss_srl_ctx_ptr, USART1, srl_usart1_rx_buffer, RX_BUFFER_1_LN, srl_usart1_tx_buffer, TX_BUFFER_1_LN, main_target_kiss_baudrate); + + srl_switch_timeout(main_kiss_srl_ctx_ptr, SRL_TIMEOUT_ENABLE, 1500); + + davis_init(main_kiss_srl_ctx_ptr); + + davis_wake_up(1); + +#endif + + // configuring an APRS path used to transmit own packets (telemetry, wx, beacons) main_own_path_ln = ConfigPath(main_own_path); diff --git a/system/include/davis_vantage/davis.h b/system/include/davis_vantage/davis.h index 0262811..05a0e9b 100644 --- a/system/include/davis_vantage/davis.h +++ b/system/include/davis_vantage/davis.h @@ -12,6 +12,8 @@ #include "davis_retval_def.h" +#define DAVIS_DEFAULT_BAUDRATE 19200u + uint32_t davis_init(srl_context_t* srl_port); uint32_t davis_wake_up(uint8_t is_io_blocking); uint32_t davis_do_test(void); diff --git a/system/include/drivers/serial.h b/system/include/drivers/serial.h index cc3b9ba..bf8165e 100644 --- a/system/include/drivers/serial.h +++ b/system/include/drivers/serial.h @@ -16,6 +16,9 @@ #define SRL_DEFAULT_RX_TIMEOUT_IN_MS 400 +#define SRL_TIMEOUT_ENABLE 1 +#define SRL_TIMEOUT_DISABLE 0 + typedef enum srlRxState { SRL_RX_NOT_CONFIG, SRL_RX_IDLE, @@ -116,6 +119,7 @@ void srl_wait_for_tx_completion(srl_context_t *ctx); uint8_t srl_wait_for_rx_completion_or_timeout(srl_context_t *ctx, uint8_t* output); void srl_irq_handler(srl_context_t *ctx); uint8_t srl_receive_data(srl_context_t *ctx, int num, char start, char stop, char echo, char len_addr, char len_modifier); +uint8_t srl_receive_data_with_instant_timeout(srl_context_t *ctx, int num, char start, char stop, char echo, char len_addr, char len_modifier); uint16_t srl_get_num_bytes_rxed(srl_context_t *ctx); uint8_t* srl_get_rx_buffer(srl_context_t *ctx); void srl_keep_timeout(srl_context_t *ctx); diff --git a/system/src/davis_vantage/davis.c b/system/src/davis_vantage/davis.c index 98cac7e..a09cb9c 100644 --- a/system/src/davis_vantage/davis.c +++ b/system/src/davis_vantage/davis.c @@ -46,7 +46,7 @@ uint8_t davis_avaliable; */ uint8_t davis_loop_avaliable; -static const char line_feed[] = "\n"; +static const char line_feed = '\n'; static const char line_feed_return[] = {'\n', '\r'}; static const char loop_command[] = "LOOP 1\n"; @@ -82,7 +82,7 @@ uint32_t davis_wake_up(uint8_t is_io_blocking) { int comparation_result = -1; // sending the new line to wake up the console - srl_send_data(davis_serial_context, (uint8_t*)line_feed, 1, 1, 0); + srl_send_data(davis_serial_context, (uint8_t*)&line_feed, 1, 1, 0); // check if a user want to have blocking I/O if (is_io_blocking == 1) { @@ -90,7 +90,7 @@ uint32_t davis_wake_up(uint8_t is_io_blocking) { srl_wait_for_tx_completion(davis_serial_context); // start waiting for console response - srl_receive_data(davis_serial_context, 2, 0, 0, 0, 0, 0); + srl_receive_data_with_instant_timeout(davis_serial_context, 2, 0, 0, 0, 0, 0); // wait for station response or for timeout srl_wait_for_rx_completion_or_timeout(davis_serial_context, ((uint8_t*)&retval)); @@ -110,7 +110,7 @@ uint32_t davis_wake_up(uint8_t is_io_blocking) { // send the wake up command one more time // sending the new line to wake up the console - srl_send_data(davis_serial_context, (uint8_t*)line_feed, 1, 1, 0); + srl_send_data(davis_serial_context, (uint8_t*)&line_feed, 1, 1, 0); // if yes wait for transmission completion and then wait for response srl_wait_for_tx_completion(davis_serial_context); @@ -143,7 +143,7 @@ uint32_t davis_wake_up(uint8_t is_io_blocking) { switch (davis_wake_up_state) { case DAVIS_QUERY_IDLE: { // sending the new line to wake up the console - srl_send_data(davis_serial_context, (uint8_t*)line_feed, 1, 1, 0); + srl_send_data(davis_serial_context, (uint8_t*)&line_feed, 1, 1, 0); // switching the internal state davis_wake_up_state = DAVIS_QUERY_SENDING_QUERY; diff --git a/system/src/drivers/serial.c b/system/src/drivers/serial.c index 8eda287..9341520 100644 --- a/system/src/drivers/serial.c +++ b/system/src/drivers/serial.c @@ -346,6 +346,61 @@ uint8_t srl_receive_data(srl_context_t *ctx, int num, char start, char stop, cha return SRL_OK; } +uint8_t srl_receive_data_with_instant_timeout(srl_context_t *ctx, int num, char start, char stop, char echo, char len_addr, char len_modifier) { + if (ctx->srl_rx_state == SRL_RXING) + return SRL_BUSY; + + //trace_printf("Serial:SrlReceiveData()\r\n"); + + if (num >= RX_BUFFER_1_LN) + return SRL_DATA_TOO_LONG; + + memset(ctx->srl_rx_buf_pointer, 0x00, ctx->srl_rx_buf_ln); + + // checking if user want + if (start != 0x00) { + ctx->srl_triggered_start = 1; + ctx->srl_start_trigger = start; + } + else { + ctx->srl_triggered_start = 0; + } + + if (stop != 0x00) { + ctx->srl_triggered_stop = 1; + ctx->srl_stop_trigger = stop; + } + else { + ctx->srl_triggered_stop = 0; + } + + if (ctx->srl_triggered_start == 1 || ctx->srl_triggered_stop == 1) { + if (num < 3) + return SRL_WRONG_PARAMS_COMBINATION; + + ctx->srl_rx_state = SRL_WAITING_TO_RX; + ctx->srl_rx_waiting_start_time = master_time; + } + + ctx->srl_enable_echo = echo; + ctx->srl_rx_bytes_counter = 0; + ctx->srl_rx_bytes_req = num; + + ctx->srl_rx_lenght_param_addres = len_addr; + ctx->srl_rx_lenght_param_modifier = len_modifier; + + // set current time as receive start time + ctx->srl_rx_start_time = master_time; + + ctx->srl_rx_timeout_calc_started = 1; + + ctx->port->CR1 |= USART_CR1_RE; // uruchamianie odbiornika + ctx->port->CR1 |= USART_CR1_RXNEIE; // przerwanie od przepe�nionego bufora odbioru +// PORT->CR1 |= USART_CR1_IDLEIE; // przerwanie od bezczynno�ci szyny RS przy odbiorze + // spowodowanej zako�czeniem transmisji przez urz�dzenie + return SRL_OK; +} + void srl_irq_handler(srl_context_t *ctx) {