/* * arduino_com.h * * Created on: 26 okt. 2016 * Author: Philip */ #ifndef DRIVERS_ARDUINO_COM_H_ #define DRIVERS_ARDUINO_COM_H_ #include "drivers/usart.h" #define ARDUINO_BAUD 115200 #define ARDUINO_DMA_SIZE 20 /*********************************************************************** * BRIEF: RX packet structure from arduino com * * INFORMATION: Contains the whole compass message * ***********************************************************************/ typedef struct compass_data_t { uint8_t header; int16_t x; int16_t y; int16_t z; uint8_t crc; } compass_data_t; /*********************************************************************** * BRIEF: RX packet structure from arduino com * * INFORMATION: Contains the whole gps data message * ***********************************************************************/ typedef struct gps_data_t { uint8_t header; float latitude; float longitude; uint8_t crc; } gps_data_t; /*********************************************************************** * BRIEF: RX packet structure from arduino com * * INFORMATION: Contains the whole ping sensor data message * ***********************************************************************/ typedef struct ping_data_t { uint8_t header; uint16_t distance_mm; uint8_t crc; }ping_data_t; /* An instance of the GPS data read from Arduino Com */ gps_data_t gps_data; /* An instance of the compass data read from Arduino Com */ compass_data_t compass_data; /* An instance of the ping data read from Arduino Com */ ping_data_t ping_data; /*********************************************************************** * BRIEF: Initializes the UART for Arduino com * * INFORMATION: A DMA Buffer starts storing the bytes received from RX * ***********************************************************************/ void arduinoCom_init(USART_TypeDef* usart_inst); /*********************************************************************** * BRIEF: Checks if new RX packet is available * * INFORMATION: Is called by the scheduler * ***********************************************************************/ bool arduino_frame_available(); /*********************************************************************** * BRIEF: Updates "gps_data" and "compass_data" * * INFORMATION: Is called by the scheduler * ***********************************************************************/ void arduino_read(); /*********************************************************************** * BRIEF: Update the output sensor values and sends them to the Arduino * * INFORMATION: * ***********************************************************************/ void arduino_send_sensor_values(); #endif /* DRIVERS_ARDUINO_COM_H_ */ //----------------------- Example code for the parser -------------------------- //arduinoCom_init(USART1); //while (1) { // if(arduino_frame_available()) // arduino_read(); // HAL_Delay(15); // float lng = gps_data.longitude; // float lat = gps_data.latitude; //}