From 0b0b999caa212dd96ef61d7a5343c2bbdac71270 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 18 Apr 2018 12:24:13 +0300 Subject: add FPGA Reg stub + update motor deriver --- .../Modules/Stubs_Handler/Stub_FPGARWReg.c | 105 +++++++++++++++++++++ .../Modules/Stubs_Handler/Stub_FPGARWReg.h | 0 2 files changed, 105 insertions(+) create mode 100644 Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c create mode 100644 Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.h (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c new file mode 100644 index 000000000..d71fa764a --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c @@ -0,0 +1,105 @@ + +#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 "Drivers/USB_Communication/USBCDCD.h" +#include "drivers/twine_graphicslib/graphics_adapter.h" + +#include "MessageContainer.pb-c.h" + +#include "Container.h" +#include "Stub_Status.h" +#include "drivers/FPGA/FPGA.h" +#include "drivers/FPGA/FPGA_Comm.h" + + +void Stub_FpgaReadRegRequest(MessageContainer* requestContainer) +{ + uint32_t status = PASSED; + + MessageContainer responseContainer; + + StubFpgaReadRegRequest* request = stub_fpga_read_reg_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + StubFpgaReadRegResponse response = STUB_FPGA_READ_REG_RESPONSE__INIT; + + status_response(status,&response.status, &response.statusword ,&response.has_statusword); + + if((request->address < FPGA1_BASE) || (request->address > (FPGA3_BASE | (0x1FF))))//TODO update the last add + { + status = FAILED; + } + else + { + volatile short *ptr; + ptr = (volatile short *) (request->address); + + response.address = request->address; + response.has_address = true; + response.value = *ptr; + response.has_value = true; + } + + responseContainer = createContainer(MESSAGE_TYPE__StubFpgaReadRegResponse, requestContainer->token, true, &response, &stub_fpga_read_reg_response__pack, &stub_fpga_read_reg_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); + free(responseContainer.data.data); + SendChars((char*)container_buffer, container_size); + //free(container_buffer); + free(requestContainer); + +} + +void Stub_FpgaWriteRegRequest(MessageContainer* requestContainer) +{ + uint32_t status = PASSED; + + MessageContainer responseContainer; + + StubFpgaWriteRegRequest* request = stub_fpga_write_reg_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + if((request->address < FPGA1_BASE) || (request->address > (FPGA3_BASE | (0x1FF))))//TODO update the last add + { + status = FAILED; + } + else + { + volatile short *ptr; + ptr = (volatile short *) (request->address); + *ptr = (request->value & 0xFFFF); + } + StubFpgaWriteRegResponse response = STUB_FPGA_WRITE_REG_RESPONSE__INIT; + + status_response(status,&response.status, &response.statusword ,&response.has_statusword); + + responseContainer = createContainer(MESSAGE_TYPE__StubFpgaWriteRegResponse, requestContainer->token, true, &response, &stub_fpga_write_reg_response__pack, &stub_fpga_write_reg_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); + free(responseContainer.data.data); + SendChars((char*)container_buffer, container_size); + //free(container_buffer); + free(requestContainer); + +} diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.h new file mode 100644 index 000000000..e69de29bb -- cgit v1.3.1