main_helper.c
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // main_helper.c - Epson IMU helper functions for console utilities
4 //
5 //
6 // THE SOFTWARE IS RELEASED INTO THE PUBLIC DOMAIN.
7 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
9 // NONINFRINGEMENT, SECURITY, SATISFACTORY QUALITY, AND FITNESS FOR A
10 // PARTICULAR PURPOSE. IN NO EVENT SHALL EPSON BE LIABLE FOR ANY LOSS, DAMAGE
11 // OR CLAIM, ARISING FROM OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF THE
12 // SOFTWARE.
13 //
14 //==============================================================================
15 
16 #include <stdio.h>
17 
18 #include "main_helper.h"
19 #include "sensor_epsonCommon.h"
20 
21 /*****************************************************************************
22 ** Function name: printHeaderRow
23 ** Description: Output header row based on EpsonOptions
24 ** Parameters: fp - file pointer to send data
25 ** EpsonOptions* - pointer to struct describing the IMU
26 ** configuration.
27 ** Return value: None
28 ** Notes:
29 *****************************************************************************/
30 void printHeaderRow(FILE* fp, const struct EpsonOptions* options) {
31  fprintf(fp, "\r\nsample[dec]");
32  if (options->flag_out) {
33  fprintf(fp, ", ndflags[hex]");
34  }
35 
36  if (options->temp_out) {
37  fprintf(fp, ", tempC[degC]");
38  }
39 
40  if (options->gyro_out) {
41  fprintf(fp, ", gx[deg/s], gy[deg/s], gz[deg/s]");
42  }
43 
44  if (options->accel_out) {
45  fprintf(fp, ", ax[mG], ay[mG], az[mG]");
46  }
47 
48  if (options->gyro_delta_out) {
49  fprintf(fp, ", dax[deg], day[deg], daz[deg]");
50  }
51 
52  if (options->accel_delta_out) {
53  fprintf(fp, ", dvx[m/s], dvy[m/s], dvz[m/s]");
54  }
55 
56  if (options->qtn_out) {
57  fprintf(fp, ", qtn0, qtn1, qtn2, qtn3");
58  }
59 
60  if (options->atti_out) {
61  fprintf(fp, ", ang1[deg], ang2[deg], ang3[deg]");
62  }
63 
64  if (options->gpio_out) {
65  fprintf(fp, ", gpio[hex]");
66  }
67 
68  if (options->count_out) {
69  fprintf(fp, ", count");
70  }
71  fprintf(fp, "\n");
72 }
73 
74 /*****************************************************************************
75 ** Function name: printSensorRow
76 ** Description: Prints formatted row of sensor data based on
77 ** EpsonOptions
78 ** Parameters: fp - file pointer to send data
79 ** EpsonOptions* - pointer to struct describing the IMU
80 ** configuration.
81 ** EpsonData* - pointer to struct that contains scaled
82 ** sensor
83 ** data
84 ** sample_count - index for the sample row
85 ** Return value: none
86 ** Notes:
87 ******************************************************************************/
88 void printSensorRow(FILE* fp, const struct EpsonOptions* options,
89  const struct EpsonData* epson_data, int sample_count) {
90  fprintf(fp, "%08d", sample_count);
91  if (options->flag_out) {
92  fprintf(fp, ", %04x", epson_data->ndflags);
93  }
94 
95  if (options->temp_out) {
96  fprintf(fp, ", %8.3f", epson_data->temperature);
97  }
98 
99  if (options->gyro_out) {
100  fprintf(fp, ", %8.5f, %8.5f, %8.5f", epson_data->gyro_x * RAD2DEG,
101  epson_data->gyro_y * RAD2DEG, epson_data->gyro_z * RAD2DEG);
102  }
103 
104  if (options->accel_out) {
105  fprintf(fp, ", %8.5f, %8.5f, %8.5f", epson_data->accel_x * MPS22MG,
106  epson_data->accel_y * MPS22MG, epson_data->accel_z * MPS22MG);
107  }
108 
109  if (options->gyro_delta_out) {
110  fprintf(fp, ", %8.5f, %8.5f, %8.5f", epson_data->gyro_delta_x * RAD2DEG,
111  epson_data->gyro_delta_y * RAD2DEG,
112  epson_data->gyro_delta_z * RAD2DEG);
113  }
114 
115  if (options->accel_delta_out) {
116  fprintf(fp, ", %8.5f, %8.5f, %8.5f", epson_data->accel_delta_x,
117  epson_data->accel_delta_y, epson_data->accel_delta_z);
118  }
119 
120  if (options->qtn_out) {
121  fprintf(fp, ", %8.8f, %8.8f, %8.8f, %8.8f", epson_data->qtn0,
122  epson_data->qtn1, epson_data->qtn2, epson_data->qtn3);
123  }
124 
125  if (options->atti_out) {
126  fprintf(fp, ", %8.3f, %8.3f, %8.3f", epson_data->ang1 * RAD2DEG,
127  epson_data->ang2 * RAD2DEG, epson_data->ang3 * RAD2DEG);
128  }
129 
130  if (options->gpio_out) {
131  fprintf(fp, ", %04x", epson_data->gpio);
132  }
133 
134  if (options->count_out) {
135  fprintf(fp, ", %09d", epson_data->count);
136  }
137  fprintf(fp, "\n");
138 }
EpsonData::qtn1
double qtn1
Definition: sensor_epsonCommon.h:406
EpsonData::ang2
double ang2
Definition: sensor_epsonCommon.h:407
EpsonData::accel_y
double accel_y
Definition: sensor_epsonCommon.h:403
sensor_epsonCommon.h
main_helper.h
EpsonData::gyro_delta_z
double gyro_delta_z
Definition: sensor_epsonCommon.h:404
EpsonOptions::gpio_out
int gpio_out
Definition: sensor_epsonCommon.h:363
EpsonOptions
Definition: sensor_epsonCommon.h:340
RAD2DEG
#define RAD2DEG
Definition: sensor_epsonCommon.h:56
EpsonData::accel_delta_y
double accel_delta_y
Definition: sensor_epsonCommon.h:405
EpsonData::gyro_x
double gyro_x
Definition: sensor_epsonCommon.h:402
EpsonData::gyro_delta_y
double gyro_delta_y
Definition: sensor_epsonCommon.h:404
EpsonData::temperature
double temperature
Definition: sensor_epsonCommon.h:401
EpsonOptions::qtn_out
int qtn_out
Definition: sensor_epsonCommon.h:360
EpsonOptions::accel_out
int accel_out
Definition: sensor_epsonCommon.h:357
printSensorRow
void printSensorRow(FILE *fp, const struct EpsonOptions *options, const struct EpsonData *epson_data, int sample_count)
Definition: main_helper.c:88
EpsonData::gyro_delta_x
double gyro_delta_x
Definition: sensor_epsonCommon.h:404
EpsonOptions::count_out
int count_out
Definition: sensor_epsonCommon.h:364
EpsonData::gpio
unsigned short gpio
Definition: sensor_epsonCommon.h:408
EpsonData::ang1
double ang1
Definition: sensor_epsonCommon.h:407
EpsonData::accel_delta_x
double accel_delta_x
Definition: sensor_epsonCommon.h:405
EpsonData::accel_x
double accel_x
Definition: sensor_epsonCommon.h:403
EpsonOptions::flag_out
int flag_out
Definition: sensor_epsonCommon.h:354
EpsonData::gyro_z
double gyro_z
Definition: sensor_epsonCommon.h:402
EpsonData
Definition: sensor_epsonCommon.h:399
EpsonData::ang3
double ang3
Definition: sensor_epsonCommon.h:407
EpsonData::count
int count
Definition: sensor_epsonCommon.h:409
EpsonData::qtn3
double qtn3
Definition: sensor_epsonCommon.h:406
printHeaderRow
void printHeaderRow(FILE *fp, const struct EpsonOptions *options)
Definition: main_helper.c:30
EpsonData::ndflags
unsigned short ndflags
Definition: sensor_epsonCommon.h:400
EpsonData::qtn2
double qtn2
Definition: sensor_epsonCommon.h:406
EpsonData::qtn0
double qtn0
Definition: sensor_epsonCommon.h:406
EpsonOptions::atti_out
int atti_out
Definition: sensor_epsonCommon.h:361
EpsonOptions::gyro_delta_out
int gyro_delta_out
Definition: sensor_epsonCommon.h:358
EpsonData::gyro_y
double gyro_y
Definition: sensor_epsonCommon.h:402
EpsonOptions::gyro_out
int gyro_out
Definition: sensor_epsonCommon.h:356
EpsonOptions::temp_out
int temp_out
Definition: sensor_epsonCommon.h:355
MPS22MG
#define MPS22MG
Definition: sensor_epsonCommon.h:58
EpsonData::accel_z
double accel_z
Definition: sensor_epsonCommon.h:403
EpsonOptions::accel_delta_out
int accel_delta_out
Definition: sensor_epsonCommon.h:359
EpsonData::accel_delta_z
double accel_delta_z
Definition: sensor_epsonCommon.h:405


ess_imu_driver
Author(s):
autogenerated on Wed Dec 11 2024 03:06:30