diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-10 15:06:00 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-10 15:06:00 +0300 |
| commit | dffeea66c97f7a37656b3959a22c1bad5b5de97e (patch) | |
| tree | 6e15bd54ee7ba0bf53e68c5665c3ff3fed7353f4 /Software/Embedded_SW/Embedded/Communication/Connection.c | |
| parent | 67ca14bb9524cf610cc4c638f132cfca84bacbee (diff) | |
| download | Tango-dffeea66c97f7a37656b3959a22c1bad5b5de97e.tar.gz Tango-dffeea66c97f7a37656b3959a22c1bad5b5de97e.zip | |
keep alive implementation
Diffstat (limited to 'Software/Embedded_SW/Embedded/Communication/Connection.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Communication/Connection.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c index 6417d6e64..6faa315de 100644 --- a/Software/Embedded_SW/Embedded/Communication/Connection.c +++ b/Software/Embedded_SW/Embedded/Communication/Connection.c @@ -13,6 +13,8 @@ #include <PMR/Connection/ConnectResponse.pb-c.h> #include <PMR/Connection/DisConnectRequest.pb-c.h> #include <PMR/Connection/DisConnectResponse.pb-c.h> +#include <PMR/Connection/KeepAliveRequest.pb-c.h> +#include <PMR/Connection/KeepAliveResponse.pb-c.h> #include <PMR/Connection/DeviceInformation.pb-c.h> #include "Common/SW_Info/SW_Info.h" @@ -111,3 +113,50 @@ void DisconnectionRequest(MessageContainer* requestContainer) //free(requestContainer); disconnect_request__free_unpacked(request,NULL); } +int KeepAliveOneSecondCounter = 0; +#define KEEPALIVE_COMMUNICATION_ABORT_LIMIT 30 + +void KeepAliveRequestFunc(MessageContainer* requestContainer) +{ + MessageContainer responseContainer; + + KeepAliveRequest* request = keep_alive_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + KeepAliveResponse response = KEEP_ALIVE_RESPONSE__INIT; + + KeepAliveOneSecondCounter = 0; + responseContainer = createContainer(MESSAGE_TYPE__KeepAliveResponse, requestContainer->token, true, &response, &keep_alive_response__pack, &keep_alive_response__get_packed_size); + /* + + ReportStopReporting(); + DiagnosticsStop(); + HeatingStopReporting(); + JobStopReporting(); + AlarmHandlingStop(); + //UART_ResetBuffers(); + + */ + //------------------------------------------------------------------------------------------- + uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); + size_t container_size = message_container__pack(&responseContainer, container_buffer); + free(responseContainer.data.data); + SendChars((char*)container_buffer, container_size); + //free(container_buffer); + //free(requestContainer); + keep_alive_request__free_unpacked(request,NULL); +} +void KeepAliveOneSecondCall(void) +{ + KeepAliveOneSecondCounter++; + if (KeepAliveOneSecondCounter > KEEPALIVE_COMMUNICATION_ABORT_LIMIT) + { + LOG_ERROR(KeepAliveOneSecondCounter, "Communication keepalive failed"); + KeepAliveOneSecondCounter = 0; + /* ReportStopReporting(); + DiagnosticsStop(); + HeatingStopReporting(); + JobStopReporting(); + AlarmHandlingStop(); + */ + //UART_ResetBuffers(); + } +} |
