First we need to storage a struct for every axis´ position data is declared.
The data is read by the second function and stored in a passed reference of the storage struct.
// Function that read and print the sensor data of the BMG160 to the console of the XDK-Workbench
static void readGyroscope(xTimerHandle xTimer)
{
(void) xTimer;
Retcode_T returnValue = RETCODE_FAILURE;
/* read and print BMG160 gyroscope data */
Gyroscope_XyzData_T bmg160 = {INT32_C(0), INT32_C(0), INT32_C(0)};
returnValue = Gyroscope_readXyzDegreeValue(xdkGyroscope_BMG160_Handle, &bmg160);
if (RETCODE_OK == returnValue) {
printf("BMG160 Gyro Data : x =%ld mDeg y =%ld mDeg z =%ld mDeg\n\r", (long int) bmg160.xAxisData,
(long int) bmg160.yAxisData, (long int) bmg160.zAxisData);
}
}
Then we declared the function to initialized the sensor and variable.
// Function that initializes the Gyroscope with the BMG160 handler and with additional pre settings
static void initGyroscope(void)
{
Retcode_T returnValue = RETCODE_FAILURE;
Retcode_T returnBandwidthValue = RETCODE_FAILURE;
Retcode_T returnRangeValue = RETCODE_FAILURE;
/* initialize gyroscope */
returnValue = Gyroscope_init(xdkGyroscope_BMG160_Handle);
if(RETCODE_OK != returnValue){
printf("BMG160 Gyroscope initialization failed \n\r");
}
returnBandwidthValue = Gyroscope_setBandwidth(xdkGyroscope_BMG160_Handle,GYROSCOPE_BMG160_BANDWIDTH_116HZ);
if (RETCODE_OK != returnBandwidthValue) {
printf("Configuring bandwidth failed \n\r");
}
returnRangeValue = Gyroscope_setRange(xdkGyroscope_BMG160_Handle,GYROSCOPE_BMG160_RANGE_500s);
if (RETCODE_OK != returnRangeValue) {
printf("Configuring range failed \n\r");
}
}
Finally we declared the main part of the program where we need to call all the function that we previously defined. Also define the timers.