pico-tracker/firmware/test/tc/gps_baud_error.h

56 wiersze
1.6 KiB
C

#ifndef __verification__
#define __verification__
#endif
/****************************//* gps_baud_error_tc *//****************************/
/**
* Calculates the real hardware baud rate for gps serial
*/
#include "hw_config.h"
#include "sercom/sercom.h"
#include "sercom/usart.h"
/* Parameters in */
struct gps_baud_error_tc_params {
/* Input paramters to your test case go here */
uint32_t dummy;
} gps_baud_error_tc_params;
/* Results out */
struct gps_baud_error_tc_results {
/* Result values should be populated here */
uint32_t intended_baud;
uint32_t peripheral_clock;
uint16_t calculated_baud;
} gps_baud_error_tc_results;
/* Function */
__verification__ void gps_baud_error_tc(void) {
/**
* The main body of the test case goes here.
*
* Use the input parameters to run the test case. Populate the
* results structure at the end
*/
uint32_t sercom_index = _sercom_get_sercom_inst_index((Sercom*)GPS_SERCOM);
uint32_t gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE;
uint32_t baudrate = GPS_BAUD_RATE;
uint16_t baud; /* The actual register value */
enum sercom_asynchronous_operation_mode mode = SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC;
enum sercom_asynchronous_sample_num sample_num = SERCOM_ASYNC_SAMPLE_NUM_16;
uint32_t peripheral_clock = system_gclk_chan_get_hz(gclk_index);
_sercom_get_async_baud_val(baudrate,
peripheral_clock, &baud, mode, sample_num);
gps_baud_error_tc_results.intended_baud = baudrate;
gps_baud_error_tc_results.peripheral_clock = peripheral_clock;
gps_baud_error_tc_results.calculated_baud = baud;
}