Vehicle Control Unit 0.01
This is the c library for controlling the car.
Loading...
Searching...
No Matches
AnalogOutput.c
Go to the documentation of this file.
1#include "../../Inc/Outputs/AnalogOutput.h"
2#include "../../Inc/Utils/Common.h"
3
4#include <stdio.h>
5#include <string.h>
6
7#ifndef TEST_MODE
8#include "stm32f7xx_hal.h"
9#endif
10
11void initAnalogOutput(AnalogOutput* analogOutput, const char* name, int hz, int channel) {
12 initOutput(&analogOutput->output, name, hz, o_ANALOG);
13 analogOutput->channel = channel;
14 analogOutput->buffer_index = 0;
15}
16
17int writeAnalogOutputData(AnalogOutput* output, float data) {
18 #ifdef DEBUGn
19 printf("Writing data to analog output %s: %f\n", output->output.updateable.name, data);
20 #endif
21
22 if (output->channel == 1) {
23 // Write data to DAC1
24 dac1_buffer[output->buffer_index] = (int)data;
25 output->buffer_index = (output->buffer_index + 1) % DAC1_BUFFER_SIZE;
26 } else if (output->channel == 2) {
27 // Write data to DAC2
28 dac2_buffer[output->buffer_index] = (int)data;
29 output->buffer_index = (output->buffer_index + 1) % DAC2_BUFFER_SIZE;
30 } else {
31
32 #ifdef DEBUGn
33 printf("Invalid channel number for analog output %s\n", output->output.updateable.name);
34 #endif
35
36 return _FAILURE;
37 }
38 return _SUCCESS;
39}
void initAnalogOutput(AnalogOutput *analogOutput, const char *name, int hz, int channel)
Initializes an analog output.
Definition: AnalogOutput.c:11
int writeAnalogOutputData(AnalogOutput *output, float data)
Writes data to the analog output.
Definition: AnalogOutput.c:17
uint32_t dac2_buffer[DAC2_BUFFER_SIZE]
Definition: main.c:117
uint32_t dac1_buffer[DAC1_BUFFER_SIZE]
Definition: main.c:116
#define _FAILURE
Definition: Common.h:6
#define _SUCCESS
Definition: Common.h:5
#define DAC1_BUFFER_SIZE
Definition: Constants.h:9
#define DAC2_BUFFER_SIZE
Definition: Constants.h:10
@ o_ANALOG
Definition: Output.h:10
void initOutput(Output *output, const char *name, int hz, OutputType type)
Initializes an output with the given parameters.
Definition: Output.c:4
Output output
Definition: AnalogOutput.h:12
Updateable updateable
Definition: Output.h:15
char name[MAX_NAME_LENGTH]
Definition: Updateable.h:24