diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.c | 100 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.h | 15 |
2 files changed, 115 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.c new file mode 100644 index 000000000..85d7468bc --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.c @@ -0,0 +1,100 @@ +/* + * Stub_IntADC.c + * + * Created on: May 23, 2018 + * Author: avi + */ + + +#include <Container.h> +#include <DataDef.h> +#include <PMR/Stubs/StubIntADCReadRequest.pb-c.h> +#include <PMR/Stubs/StubIntADCReadResponse.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 "Stub_Status.h" +#include "drivers/FPGA/FPGA.h" +#include "drivers/adc_sampling/adc.h" + +void Stub_IntADCReadRequest(MessageContainer* requestContainer) +{ + uint32_t status = FAILED; + + unsigned short data; + + MessageContainer responseContainer; + + StubIntADCReadRequest* request = stub_int_adcread_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + writeLine("ReadBack Request: "); + + writeFloat(request->adc_device); + + ADCAcquireInit(); + SysCtlDelay(10000); + ADCAcquireStart(0,1); + SysCtlDelay(10000); + ADC_TriggerCollection(); + SysCtlDelay(10000); + + ADC0SS0Handler(); + SysCtlDelay(100000); + + + data = ADC_GetReading(request->adc_device); + status = PASSED; + + StubIntADCReadResponse response = STUB_INT_ADCREAD_RESPONSE__INIT; + + status_response(status,&response.status, &response.statusword ,&response.has_statusword); + + response.adc_device = request->adc_device; + response.has_adc_device = true; + response.sampling_in_bits = data; + response.has_sampling_in_bits = true; + + float temp= 0; + temp = 4096 - data; + temp *= 3; + temp *= 1000; //move to mv + temp /= 4096; + response.voltage_sampling_mv = 3000 - temp; + response.has_voltage_sampling_mv = true; + + + responseContainer = createContainer(MESSAGE_TYPE__StubIntADCReadResponse, requestContainer->token, true, &response, &stub_int_adcread_response__pack, &stub_int_adcread_response__get_packed_size); + + writeLine("Sending Response: "); + + writeFloat(response.adc_device); + writeString(", "); + writeFloat(response.sampling_in_bits); + writeString(", "); + writeFloat(response.voltage_sampling_mv); + writeString(", "); + + Write_status_response(status); + + stub_int_adcread_request__free_unpacked(request,NULL); + //------------------------------------------------------------------------------------------- + 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); +} + + + + diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.h new file mode 100644 index 000000000..5060233c4 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_IntADC.h @@ -0,0 +1,15 @@ +/* + * Stub_IntADC.h + * + * Created on: May 23, 2018 + * Author: avi + */ + +#ifndef MODULES_STUBS_HANDLER_STUB_INTADC_H_ +#define MODULES_STUBS_HANDLER_STUB_INTADC_H_ + +void Stub_IntADCReadRequest(MessageContainer* requestContainer); + + + +#endif /* MODULES_STUBS_HANDLER_STUB_INTADC_H_ */ |
