diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c | 26 |
1 files changed, 17 insertions, 9 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 d7aa770c6..eb58c48ac 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c @@ -169,7 +169,7 @@ void Stub_ExtFlashReadRequest(MessageContainer* requestContainer) } //------------------------------------------------------------------------------------- -#define MaxFlashWords 1050 +#define MaxFlashWords 1024 #define MaxFlashBytes MaxFlashWords*4 typedef union @@ -178,17 +178,23 @@ typedef union uint8_t Bytes[MaxFlashBytes]; }Flash_Union; +Flash_Union Flash_RW; +//Flash_Union Flash_R; + +uint32_t WriteBuf[MaxFlashBytes]; +uint32_t ReadBuf[MaxFlashBytes]; + #define MaxBytesForAddress 256;// The addresses to be programmed must not span a 256-byte boundary //--------------------------------------------------------------------------------------------- void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer) { - uint32_t WriteBuf[MaxFlashWords]; + uint32_t status = PASSED; - Flash_Union Flash_W; + uint32_t i; uint32_t No_Words,No_Bytes; @@ -205,15 +211,17 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer) No_Words = request->n_wordtwrite; No_Bytes = request->n_wordtwrite *4; + memset(&Flash_RW,0,sizeof(Flash_RW)); + for(i = 0; i < No_Words;i++) { - Flash_W.DWords[i] = request->wordtwrite[i]; + Flash_RW.DWords[i] = request->wordtwrite[i]; } for(i = 0; i < No_Bytes;i++) { - WriteBuf[i] = Flash_W.Bytes[i]; + WriteBuf[i] = Flash_RW.Bytes[i]; } if(No_Bytes >256) @@ -258,14 +266,14 @@ void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer) uint32_t status = PASSED; MessageContainer responseContainer; - Flash_Union Flash_R; + memset(&Flash_RW,0,sizeof(Flash_RW)); uint32_t i; StubExtFlashReadWordsRequest* request = stub_ext_flash_read_words_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); uint32_t No_Words,No_Bytes; - uint32_t ReadBuf[MaxFlashWords]; + No_Words = request->number_of_words; No_Bytes = request->number_of_words *4; @@ -291,12 +299,12 @@ void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer) for(i = 0; i < No_Bytes;i++) { - Flash_R.Bytes[i] = ReadBuf[i]; + Flash_RW.Bytes[i] = ReadBuf[i]; } StubExtFlashReadWordsResponse response = STUB_EXT_FLASH_READ_WORDS_RESPONSE__INIT; - response.readbytes = Flash_R.DWords; + response.readbytes = Flash_RW.DWords; response.n_readbytes = No_Words; status_response(status,&response.status, &response.statusword ,&response.has_statusword); |
