aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2018-04-18 12:24:13 +0300
committerAvi Levkovich <avi@twine-s.com>2018-04-18 12:24:13 +0300
commit0b0b999caa212dd96ef61d7a5343c2bbdac71270 (patch)
tree1647c5e3dfdae76df1765c3e519375f9e72a014c /Software/Embedded_SW/Embedded/Modules
parent7a8ca4421b698e272a2854f377b2ab25614ecce9 (diff)
downloadTango-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.c105
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.h0
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