aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Communication/Connection.c
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-10-10 15:06:00 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-10-10 15:06:00 +0300
commitdffeea66c97f7a37656b3959a22c1bad5b5de97e (patch)
tree6e15bd54ee7ba0bf53e68c5665c3ff3fed7353f4 /Software/Embedded_SW/Embedded/Communication/Connection.c
parent67ca14bb9524cf610cc4c638f132cfca84bacbee (diff)
downloadTango-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.c49
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();
+ }
+}