/* * Stub_TivaReg.c * * Created on: May 5, 2018 * Author: avi */ #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 "Drivers/USB_Communication/USBCDCD.h" #include "MessageContainer.pb-c.h" #include "Stub_Status.h" #include "drivers/FPGA/FPGA.h" #include "drivers/FPGA/FPGA_Comm.h" void Stub_TivaReadRegRequest(MessageContainer* requestContainer) { uint32_t status = PASSED; MessageContainer responseContainer; StubTivaReadRegRequest* request = stub_tiva_read_reg_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); StubTivaReadRegResponse response = STUB_TIVA_READ_REG_RESPONSE__INIT; status_response(status,&response.status, &response.statusword ,&response.has_statusword); //volatile short *ptr; //ptr = (volatile short *) (request->address); //response.value = *ptr; response.address = request->address; response.has_address = true; response.value = HWREG(request->address); response.has_value = true; responseContainer = createContainer(MESSAGE_TYPE__StubTivaReadRegResponse, requestContainer->token, true, &response, &stub_tiva_read_reg_response__pack, &stub_tiva_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); stub_tiva_read_reg_request__free_unpacked(request,NULL); } void Stub_TivaWriteRegRequest(MessageContainer* requestContainer) { uint32_t status = PASSED; MessageContainer responseContainer; StubTivaWriteRegRequest* request = stub_tiva_write_reg_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); //volatile short *ptr; //ptr = (volatile short *) (request->address); //*ptr = (request->value & 0xFFFF); HWREG(request->address) = request->value; StubTivaWriteRegResponse response = STUB_TIVA_WRITE_REG_RESPONSE__INIT; status_response(status,&response.status, &response.statusword ,&response.has_statusword); responseContainer = createContainer(MESSAGE_TYPE__StubTivaWriteRegResponse, requestContainer->token, true, &response, &stub_tiva_write_reg_response__pack, &stub_tiva_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); stub_tiva_write_reg_request__free_unpacked(request,NULL); }