From e0c19a620f338848b130ad6d2bd0ce8d5a52ca93 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 18 Jul 2018 17:50:14 +0300 Subject: Flash R/W Buf --- .../Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c | 141 +++++++++++++++++++++ .../Embedded/Modules/Stubs_Handler/Stub_ExtFlash.h | 2 + 2 files changed, 143 insertions(+) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 #include #include +#include +#include +#include +#include #include #include #include @@ -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 -- cgit v1.3.1