aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/General
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-03-29 15:46:42 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-03-29 15:46:42 +0300
commitfd16e827fd4d59636798c4cd4a7ebd00c3cb146f (patch)
treee284c218e6c4bfbede448fb18e6c5e598c44ceaf /Software/Embedded_SW/Embedded/Modules/General
parent08bd4400dfd45245ae301b5cb28103322ddf865a (diff)
downloadTango-fd16e827fd4d59636798c4cd4a7ebd00c3cb146f.tar.gz
Tango-fd16e827fd4d59636798c4cd4a7ebd00c3cb146f.zip
State machine handling
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/General')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c34
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h1
2 files changed, 35 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index cdf7d3fc8..b69ca095b 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -14,6 +14,8 @@
#include "Modules/Stubs_Handler/Container.h"
#include "PMR/Hardware/UploadHardWareConfigurationRequest.pb-c.h"
#include "PMR/Hardware/UploadHardWareConfigurationResponse.pb-c.h"
+#include "PMR/Hardware/SystemResetRequest.pb-c.h"
+#include "PMR/Hardware/SystemResetResponse.pb-c.h"
PortInfoStruct PortInfoTable[MAX_PORT_ENUM] = {
{ANALOG_MIXCHIP_TEMP,"ANALOG_MIXCHIP_TEMP"},
@@ -347,3 +349,35 @@ uint32_t HWConfigurationFunc(MessageContainer* requestContainer)
}
+
+void HWSystemResetRequest(MessageContainer* requestContainer)
+{
+ uint32_t status = FAILED;
+ unsigned char Brd_ID = 0;
+ unsigned char Assy_ID = 0;
+
+ MessageContainer responseContainer;
+ SystemResetRequest* request = system_reset_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ status = 0;
+
+ SystemResetResponse response = SYSTEM_RESET_RESPONSE__INIT;
+
+
+ responseContainer = createContainer(MESSAGE_TYPE__SystemResetResponse, requestContainer->token, true, &response, &system_reset_response__pack, &system_reset_response__get_packed_size);
+
+ Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+
+ ROM_SysCtlDelay(SYS_CLK_FREQ);
+
+ HWREG(NVIC_APINT) = NVIC_APINT_VECTKEY | NVIC_APINT_SYSRESETREQ;
+
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
index ab55c3e57..d0bcca682 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
@@ -309,5 +309,6 @@ typedef struct
extern PortInfoStruct PortInfoTable[MAX_PORT_ENUM];
extern uint32_t HWConfigurationFunc(MessageContainer* requestContainer);
+extern void HWSystemResetRequest(MessageContainer* requestContainer);
#endif