diff options
| author | Avi Levkovich <avi@twine-s.com> | 2018-04-18 12:24:13 +0300 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2018-04-18 12:24:13 +0300 |
| commit | 0b0b999caa212dd96ef61d7a5343c2bbdac71270 (patch) | |
| tree | 1647c5e3dfdae76df1765c3e519375f9e72a014c /Software/Embedded_SW/Embedded/Modules | |
| parent | 7a8ca4421b698e272a2854f377b2ab25614ecce9 (diff) | |
| download | Tango-0b0b999caa212dd96ef61d7a5343c2bbdac71270.tar.gz Tango-0b0b999caa212dd96ef61d7a5343c2bbdac71270.zip | |
add FPGA Reg stub + update motor deriver
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c | 105 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.h | 0 |
2 files changed, 105 insertions, 0 deletions
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 <DataDef.h> +#include <PMR/Stubs/StubFpgaReadRegRequest.pb-c.h> +#include <PMR/Stubs/StubFpgaReadRegResponse.pb-c.h> +#include <PMR/Stubs/StubFpgaWriteRegRequest.pb-c.h> +#include <PMR/Stubs/StubFpgaWriteRegResponse.pb-c.h> + +#include <stdbool.h> +#include <stdlib.h> +#include <stdio.h> +#include <stdint.h> +#include <string.h> +#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 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.h |
