#include #include #include #include #include #include #include #include #include #include #include #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_uart.h" #include "driverlib/gpio.h" #include "usb_serial_adapter.h" #include "graphics_adapter.h" #include "MessageContainer.pb-c.h" #include "Container.h" #include "Stub_Status.h" #define Max_words 5 void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer) { uint32_t WriteBuf[5]; uint32_t status = PASSED; MessageContainer responseContainer; StubExtFlashWriteRequest* request = stub_ext_flash_write_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); WriteBuf[0] = request->wordtowrite1; WriteBuf[1] = request->wordtowrite2; WriteBuf[2] = request->wordtowrite3; WriteBuf[3] = request->wordtowrite4; WriteBuf[4] = request->wordtowrite5; writeLine("ExtFlash Request: "); writeFloat(request->wordtowrite1); writeString(", "); writeFloat(request->wordtowrite2); writeString(", "); writeFloat(request->wordtowrite3); writeString(", "); writeFloat(request->wordtowrite4); writeString(", "); writeFloat(request->wordtowrite5); Ext_Flash_Operation(TX, Max_words, WriteBuf, NULL ); StubExtFlashWriteResponse response = STUB_EXT_FLASH_WRITE_RESPONSE__INIT; status_response(status,&response.status, &response.statusword ,&response.has_statusword); responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashWriteResponse, requestContainer->token, true, &response, &stub_ext_flash_write_response__pack, &stub_ext_flash_write_response__get_packed_size); writeLine("Sending Response: "); 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); } void Stub_ExtFlashReadRequest(MessageContainer* requestContainer) { uint32_t status = PASSED; MessageContainer responseContainer; StubExtFlashReadRequest* request = stub_ext_flash_read_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); uint32_t No_Words; uint32_t ReadBuf[Max_words]; 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); StubExtFlashReadResponse response = STUB_EXT_FLASH_READ_RESPONSE__INIT; 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__StubExtFlashReadResponse, requestContainer->token, true, &response, &stub_ext_flash_read_response__pack, &stub_ext_flash_read_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); SendChars((char*)container_buffer, container_size); free(container_buffer); free(requestContainer); }