aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-07-19 15:29:02 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-07-19 15:29:02 +0300
commit2acc04360cb773a1dab31fc0bcc514b877f0d991 (patch)
treecf450c2b0462103a1a895950a18ad017de8e7203 /Software/Embedded_SW/Embedded/Modules
parent1b6ae474bbe241e531a975f556151534c866fefd (diff)
parentb8cae8fcfe37cee8df17d0e8ccfbf2b3ac8c2152 (diff)
downloadTango-2acc04360cb773a1dab31fc0bcc514b877f0d991.tar.gz
Tango-2acc04360cb773a1dab31fc0bcc514b877f0d991.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c141
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.h2
2 files changed, 143 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
index 29e7a0f0c..edf4f027e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
@@ -5,6 +5,10 @@
#include <PMR/Stubs/StubExtFlashReadResponse.pb-c.h>
#include <PMR/Stubs/StubExtFlashWriteRequest.pb-c.h>
#include <PMR/Stubs/StubExtFlashWriteResponse.pb-c.h>
+#include <PMR/Stubs/StubExtFlashReadWordsRequest.pb-c.h>
+#include <PMR/Stubs/StubExtFlashReadWordsResponse.pb-c.h>
+#include <PMR/Stubs/StubExtFlashWriteWordsRequest.pb-c.h>
+#include <PMR/Stubs/StubExtFlashWriteWordsResponse.pb-c.h>
#include <drivers/Flash_Memory/Flash_Memory.h>
#include <DataDef.h>
#include <stdbool.h>
@@ -81,6 +85,7 @@ void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer)
void Stub_ExtFlashReadRequest(MessageContainer* requestContainer)
{
+
uint32_t status = PASSED;
MessageContainer responseContainer;
@@ -161,5 +166,141 @@ void Stub_ExtFlashReadRequest(MessageContainer* requestContainer)
//free(container_buffer);
//free(requestContainer);
stub_ext_flash_read_request__free_unpacked(request,NULL);
+
+}
+
+#define MaxFlashWords 256
+void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer)
+{
+
+ uint32_t WriteBuf[MaxFlashWords];
+
+ uint32_t status = PASSED;
+
+ uint32_t i;
+
+ MessageContainer responseContainer;
+
+ StubExtFlashWriteWordsRequest* request = stub_ext_flash_write_words_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ StubExtFlashWriteWordsResponse response = STUB_EXT_FLASH_WRITE_WORDS_RESPONSE__INIT;
+
+ response.address = request->address;
+ response.has_address = true;
+
+ for(i = 0; i < request->n_wordtwrite;i++)
+ {
+ WriteBuf[i] = request->wordtwrite[i];
+ }
+
+ Ext_Flash_Operation(TX, request->n_wordtwrite, WriteBuf, NULL );
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashWriteWordsResponse, requestContainer->token, true, &response, &stub_ext_flash_write_words_response__pack, &stub_ext_flash_write_words_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ Write_status_response(status);
+
+ //-------------------------------------------------------------------------------------------
+ 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);
+
+ stub_ext_flash_write_words_request__free_unpacked(request,NULL);
+
+}
+
+void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer)
+{
+ uint32_t status = PASSED;
+ MessageContainer responseContainer;
+
+ StubExtFlashReadWordsRequest* request = stub_ext_flash_read_words_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ uint32_t No_Words;
+ uint32_t ReadBuf[MaxFlashWords];
+
+ if(request->number_of_words>Max_words)
+ {
+ No_Words = Max_words;
+ }
+ else
+ {
+ No_Words = request->number_of_words;
+ }
+
+ Ext_Flash_Operation(RX, No_Words, NULL, ReadBuf );
+
+
+ //writeLine("ExtFlash Request: ");
+ //writeFloat(request->number_of_words);
+
+ StubExtFlashReadWordsResponse response = STUB_EXT_FLASH_READ_WORDS_RESPONSE__INIT;
+
+ response.readbytes = ReadBuf;
+ response.n_readbytes = request->number_of_words;
+
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+/*
+ response.has_readword_5 = false;
+ response.has_readword_4 = false;
+ response.has_readword_3 = false;
+ response.has_readword_2 = false;
+ response.has_readword_1 = false;
+
+ switch(No_Words)
+ {
+ case 5:
+ response.readword_5 = ReadBuf[4];
+ response.has_readword_5 = true;
+ case 4:
+ response.readword_4 = ReadBuf[3];
+ response.has_readword_4 = true;
+ case 3:
+ response.readword_3 = ReadBuf[2];
+ response.has_readword_3 = true;
+ case 2:
+ response.readword_2 = ReadBuf[1];
+ response.has_readword_2 = true;
+ case 1:
+ response.readword_1 = ReadBuf[0];
+ response.has_readword_1 = true;
+ break;
+ default:
+ break;
+ }
+*/
+ responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashReadWordsResponse, requestContainer->token, true, &response, &stub_ext_flash_read_words_response__pack, &stub_ext_flash_read_words_response__get_packed_size);
+ //clear();
+ /*
+ writeLine("Sending Response: ");
+
+ Write_status_response(status);
+ writeString(", ");
+ writeFloat(response.readword_1);
+ writeString(", ");
+ writeFloat(response.readword_2);
+ writeString(", ");
+ writeFloat(response.readword_3);
+ writeString(", ");
+ writeFloat(response.readword_4);
+ writeString(", ");
+ writeFloat(response.readword_5);
+*/
+ //free(request);
+ //-------------------------------------------------------------------------------------------
+ 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);
+ stub_ext_flash_read_words_request__free_unpacked(request,NULL);
}
+
+
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.h
index 35fc78f85..372a70bd6 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.h
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.h
@@ -3,6 +3,8 @@
void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer);
void Stub_ExtFlashReadRequest(MessageContainer* requestContainer);
+void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer);
+void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer);
#endif //STUB_EXTFLASH_H