aboutsummaryrefslogtreecommitdiff
path: root/apps/sdlog/sdlog_generated.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/sdlog/sdlog_generated.h')
-rw-r--r--apps/sdlog/sdlog_generated.h238
1 files changed, 238 insertions, 0 deletions
diff --git a/apps/sdlog/sdlog_generated.h b/apps/sdlog/sdlog_generated.h
new file mode 100644
index 000000000..ca16ef908
--- /dev/null
+++ b/apps/sdlog/sdlog_generated.h
@@ -0,0 +1,238 @@
+/* This file is autogenerated in nuttx/configs/px4fmu/include/updatesdlog.py */
+
+#ifndef SDLOG_GENERATED_H_
+#define SDLOG_GENERATED_H_
+
+
+typedef struct {
+ uint64_t sensors_raw_timestamp;
+ int16_t sensors_raw_gyro_raw[3];
+ uint16_t sensors_raw_gyro_raw_counter;
+ int16_t sensors_raw_accelerometer_raw[3];
+ uint16_t sensors_raw_accelerometer_raw_counter;
+ float attitude_roll;
+ float attitude_pitch;
+ float attitude_yaw;
+ float position_lat;
+ float position_lon;
+ float position_alt;
+ float position_relative_alt;
+ float position_vx;
+ float position_vy;
+ float position_vz;
+ int32_t gps_lat;
+ int32_t gps_lon;
+ int32_t gps_alt;
+ uint16_t gps_eph;
+ float ardrone_control_setpoint_thrust_cast;
+ float ardrone_control_setpoint_attitude[3];
+ float ardrone_control_position_control_output[3];
+ float ardrone_control_attitude_setpoint_navigationframe_from_positioncontroller[3];
+ char check[4];
+} __attribute__((__packed__)) log_block_t;
+
+void copy_block(log_block_t *log_block)
+{
+ if (global_data_wait(&global_data_sensors_raw->access_conf_rate_low) == 0) {
+ memcpy(&log_block->sensors_raw_timestamp, &global_data_sensors_raw->timestamp, sizeof(uint64_t) * 1);
+ memcpy(&log_block->sensors_raw_gyro_raw, &global_data_sensors_raw->gyro_raw, sizeof(int16_t) * 3);
+ memcpy(&log_block->sensors_raw_gyro_raw_counter, &global_data_sensors_raw->gyro_raw_counter, sizeof(uint16_t) * 1);
+ memcpy(&log_block->sensors_raw_accelerometer_raw, &global_data_sensors_raw->accelerometer_raw, sizeof(int16_t) * 3);
+ memcpy(&log_block->sensors_raw_accelerometer_raw_counter, &global_data_sensors_raw->accelerometer_raw_counter, sizeof(uint16_t) * 1);
+
+ if (global_data_trylock(&global_data_attitude->access_conf) == 0) {
+ memcpy(&log_block->attitude_roll, &global_data_attitude->roll, sizeof(float) * 1);
+ memcpy(&log_block->attitude_pitch, &global_data_attitude->pitch, sizeof(float) * 1);
+ memcpy(&log_block->attitude_yaw, &global_data_attitude->yaw, sizeof(float) * 1);
+ global_data_unlock(&global_data_attitude->access_conf);
+ }
+
+ if (global_data_trylock(&global_data_position->access_conf) == 0) {
+ memcpy(&log_block->position_lat, &global_data_position->lat, sizeof(float) * 1);
+ memcpy(&log_block->position_lon, &global_data_position->lon, sizeof(float) * 1);
+ memcpy(&log_block->position_alt, &global_data_position->alt, sizeof(float) * 1);
+ memcpy(&log_block->position_relative_alt, &global_data_position->relative_alt, sizeof(float) * 1);
+ memcpy(&log_block->position_vx, &global_data_position->vx, sizeof(float) * 1);
+ memcpy(&log_block->position_vy, &global_data_position->vy, sizeof(float) * 1);
+ memcpy(&log_block->position_vz, &global_data_position->vz, sizeof(float) * 1);
+ global_data_unlock(&global_data_position->access_conf);
+ }
+
+ if (global_data_trylock(&global_data_gps->access_conf) == 0) {
+ memcpy(&log_block->gps_lat, &global_data_gps->lat, sizeof(int32_t) * 1);
+ memcpy(&log_block->gps_lon, &global_data_gps->lon, sizeof(int32_t) * 1);
+ memcpy(&log_block->gps_alt, &global_data_gps->alt, sizeof(int32_t) * 1);
+ memcpy(&log_block->gps_eph, &global_data_gps->eph, sizeof(uint16_t) * 1);
+ global_data_unlock(&global_data_gps->access_conf);
+ }
+
+ if (global_data_trylock(&global_data_ardrone_control->access_conf) == 0) {
+ memcpy(&log_block->ardrone_control_setpoint_thrust_cast, &global_data_ardrone_control->setpoint_thrust_cast, sizeof(float) * 1);
+ memcpy(&log_block->ardrone_control_setpoint_attitude, &global_data_ardrone_control->setpoint_attitude, sizeof(float) * 3);
+ memcpy(&log_block->ardrone_control_position_control_output, &global_data_ardrone_control->position_control_output, sizeof(float) * 3);
+ memcpy(&log_block->ardrone_control_attitude_setpoint_navigationframe_from_positioncontroller, &global_data_ardrone_control->attitude_setpoint_navigationframe_from_positioncontroller, sizeof(float) * 3);
+ global_data_unlock(&global_data_ardrone_control->access_conf);
+ }
+
+ global_data_unlock(&global_data_sensors_raw->access_conf_rate_low);
+ }
+}
+#define MFILE_STRING "% This file is autogenerated in updatesdlog.py and mfile.template in apps/sdlog\n\
+%% Define logged values \n\
+\n\
+logTypes = {};\n\
+logTypes{end+1} = struct('data','sensors_raw','variable_name','timestamp','type_name','uint64','type_bytes',8,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','sensors_raw','variable_name','gyro_raw','type_name','int16','type_bytes',2,'number_of_array',3);\n\
+logTypes{end+1} = struct('data','sensors_raw','variable_name','gyro_raw_counter','type_name','uint16','type_bytes',2,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','sensors_raw','variable_name','accelerometer_raw','type_name','int16','type_bytes',2,'number_of_array',3);\n\
+logTypes{end+1} = struct('data','sensors_raw','variable_name','accelerometer_raw_counter','type_name','uint16','type_bytes',2,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','attitude','variable_name','roll','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','attitude','variable_name','pitch','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','attitude','variable_name','yaw','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','position','variable_name','lat','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','position','variable_name','lon','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','position','variable_name','alt','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','position','variable_name','relative_alt','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','position','variable_name','vx','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','position','variable_name','vy','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','position','variable_name','vz','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','gps','variable_name','lat','type_name','int32','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','gps','variable_name','lon','type_name','int32','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','gps','variable_name','alt','type_name','int32','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','gps','variable_name','eph','type_name','uint16','type_bytes',2,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','ardrone_control','variable_name','setpoint_thrust_cast','type_name','float','type_bytes',4,'number_of_array',1);\n\
+logTypes{end+1} = struct('data','ardrone_control','variable_name','setpoint_attitude','type_name','float','type_bytes',4,'number_of_array',3);\n\
+logTypes{end+1} = struct('data','ardrone_control','variable_name','position_control_output','type_name','float','type_bytes',4,'number_of_array',3);\n\
+logTypes{end+1} = struct('data','ardrone_control','variable_name','attitude_setpoint_navigationframe_from_positioncontroller','type_name','float','type_bytes',4,'number_of_array',3);\n\
+\
+%% Import logfiles\n\
+\n\
+% define log file and GPSs\n\
+logfileFolder = 'logfiles';\n\
+fileName = 'all';\n\
+fileEnding = 'px4log';\n\
+\n\
+numberOfLogTypes = length(logTypes);\n\
+\n\
+path = [fileName,'.', fileEnding];\n\
+fid = fopen(path, 'r');\n\
+\n\
+% get file length\n\
+fseek(fid, 0,'eof');\n\
+fileLength = ftell(fid);\n\
+fseek(fid, 0,'bof');\n\
+\n\
+% get length of one block\n\
+blockLength = 4; % check: $$$$\n\
+for i=1:numberOfLogTypes\n\
+ blockLength = blockLength + logTypes{i}.type_bytes*logTypes{i}.number_of_array;\n\
+end\n\
+\n\
+% determine number of entries\n\
+entries = fileLength / blockLength;\n\
+\n\
+\n\
+% import data\n\
+offset = 0;\n\
+for i=1:numberOfLogTypes\n\
+ \n\
+ data.(genvarname(logTypes{i}.data)).(genvarname(logTypes{i}.variable_name)) = transpose(fread(fid,[logTypes{i}.number_of_array,entries],[num2str(logTypes{i}.number_of_array),'*',logTypes{i}.type_name,'=>',logTypes{i}.type_name],blockLength-logTypes{i}.type_bytes*logTypes{i}.number_of_array));\n\
+ offset = offset + logTypes{i}.type_bytes*logTypes{i}.number_of_array;\n\
+ fseek(fid, offset,'bof');\n\
+ \n\
+ progressPercentage = i/numberOfLogTypes*100;\n\
+ fprintf('%3.0f%%',progressPercentage);\n\
+end\n\
+\n\
+\n\
+%% Plots\n\
+\n\
+figure\n\
+plot(data.sensors_raw.timestamp,data.sensors_raw.gyro_raw)\n\
+\n\
+figure\n\
+plot(data.sensors_raw.timestamp,data.sensors_raw.accelerometer_raw)\n\
+\n\
+%% Check for lost data\n\
+\n\
+% to detect lost frames (either when logging to sd card or if no new data is\n\
+% data is available for some time)\n\
+diff_counter = diff(data.sensors_raw.gyro_raw_counter);\n\
+figure\n\
+plot(diff_counter)\n\
+\n\
+% to detect how accurate the timing was\n\
+diff_timestamp = diff(data.sensors_raw.timestamp);\n\
+\n\
+figure\n\
+plot(diff_timestamp)\n\
+\n\
+%% Export to file for google earth\n\
+\n\
+\n\
+if(isfield(data.gps,'lat') && isfield(data.gps,'lon') && isfield(data.gps,'alt'))\n\
+\n\
+ % extract coordinates and height where they are not zero\n\
+ maskWhereNotZero = ((data.gps.lon ~= 0 & data.gps.lat ~= 0 ) & data.gps.alt ~= 0);\n\
+\n\
+ % plot\n\
+ figure\n\
+ plot3(data.gps.lon(maskWhereNotZero),data.gps.lat(maskWhereNotZero),data.gps.alt(maskWhereNotZero))\n\
+\n\
+\n\
+ % create a kml file according to https://developers.google.com/kml/documentation/kml_tut\n\
+ % also see https://support.google.com/earth/bin/answer.py?hl=en&answer=148072&topic=2376756&ctx=topic\n\
+\n\
+ % open file and overwrite content\n\
+ fileId = fopen('gps_path.kml','w+');\n\
+\n\
+ % define strings that should be written to file\n\
+ fileStartDocumentString = ['<?xml version=\"1.0\" encoding=\"UTF-8\"?><kml xmlns=\"http://www.opengis.net/kml/2.2\"><Document><name>Paths</name><description>Path</description>'];\n\
+\n\
+ fileStyleString = '<Style id=\"blueLinebluePoly\"><LineStyle><color>7fff0000</color><width>4</width></LineStyle><PolyStyle><color>7fff0000</color></PolyStyle></Style>';\n\
+\n\
+ filePlacemarkString = '<Placemark><name>Absolute Extruded</name><description>Transparent blue wall with blue outlines</description><styleUrl>#blueLinebluePoly</styleUrl><LineString><extrude>1</extrude><tessellate>1</tessellate><altitudeMode>absolute</altitudeMode><coordinates>';\n\
+\n\
+ fileEndPlacemarkString = '</coordinates></LineString></Placemark>';\n\
+ fileEndDocumentString = '</Document></kml>';\n\
+\n\
+ % start writing to file\n\
+ fprintf(fileId,fileStartDocumentString);\n\
+\n\
+ fprintf(fileId,fileStyleString);\n\
+ fprintf(fileId,filePlacemarkString);\n\
+\n\
+ \n\
+ lonTemp = double(data.gps.lon(maskWhereNotZero))/1E7;\n\
+ latTemp = double(data.gps.lat(maskWhereNotZero))/1E7;\n\
+ altTemp = double(data.gps.alt(maskWhereNotZero))/1E3 + 100.0; % in order to see the lines above ground\n\
+\n\
+ % write coordinates to file\n\
+ for k=1:length(data.gps.lat(maskWhereNotZero))\n\
+ if(mod(k,10)==0)\n\
+ fprintf(fileId,'%.10f,%.10f,%.10f\\n',lonTemp(k),latTemp(k),altTemp(k));\n\
+ end\n\
+ end\n\
+\n\
+ % write end placemark\n\
+ fprintf(fileId,fileEndPlacemarkString);\n\
+\n\
+ % write end of file\n\
+ fprintf(fileId,fileEndDocumentString);\n\
+\n\
+ % close file, it should now be readable in Google Earth using File -> Open\n\
+ fclose(fileId);\n\
+\n\
+end\n\
+\n\
+if(isfield(data.position,'lat') && isfield(data.position,'lon') && isfield(data.position,'alt'))\n\
+\n\
+ % extract coordinates and height where they are not zero\n\
+ maskWhereNotZero = ((data.position.lon ~= 0 & data.position.lat ~= 0 ) & data.position.alt ~= 0);\n\
+ \n\
+ % plot\n\
+ figure\n\
+ plot3(data.position.lon(maskWhereNotZero),data.position.lat(maskWhereNotZero),data.position.alt(maskWhereNotZero))\n\
+end\n\
+"
+#endif \ No newline at end of file