77#include " analyzer_ever_armed.h"
88#include " analyzer_ever_flew.h"
99#include " analyzer_good_ekf.h"
10+ #include " analyzer_attitude_control.h"
1011#include " analyzer_battery.h"
1112#include " analyzer_brownout.h"
12- #include " analyzer_crashed .h"
13+ #include " analyzer_notcrashed .h"
1314
1415void Analyze::instantiate_analyzers (INIReader *config)
1516{
@@ -18,55 +19,62 @@ void Analyze::instantiate_analyzers(INIReader *config)
1819 exit (1 ); // FIXME - throw exception
1920 }
2021
21- Analyzer_Compass_Offsets *analyzer_compass_offsets = new Analyzer_Compass_Offsets (_fd_telem_forwarder, _sa_telemetry_forwarder);
22+ Analyzer_Compass_Offsets *analyzer_compass_offsets = new Analyzer_Compass_Offsets (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle );
2223 if (analyzer_compass_offsets != NULL ) {
2324 configure_analyzer (config, analyzer_compass_offsets, " Analyzer_Compass_Offsets" );
2425 } else {
2526 syslog (LOG_INFO, " Failed to create analyzer_compass_offsets" );
2627 }
2728
28- Analyzer_Ever_Armed *analyzer_ever_armed = new Analyzer_Ever_Armed (_fd_telem_forwarder, _sa_telemetry_forwarder);
29+ Analyzer_Ever_Armed *analyzer_ever_armed = new Analyzer_Ever_Armed (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle );
2930 if (analyzer_ever_armed != NULL ) {
3031 configure_analyzer (config, analyzer_ever_armed, " Analyzer_Ever_Armed" );
3132 } else {
3233 syslog (LOG_INFO, " Failed to create analyzer_ever_armed" );
3334 }
3435
35- Analyzer_Ever_Flew *analyzer_ever_flew = new Analyzer_Ever_Flew (_fd_telem_forwarder, _sa_telemetry_forwarder);
36+ Analyzer_Ever_Flew *analyzer_ever_flew = new Analyzer_Ever_Flew (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle );
3637 if (analyzer_ever_flew != NULL ) {
3738 configure_analyzer (config, analyzer_ever_flew, " Analyzer_Ever_Flew" );
3839 } else {
3940 syslog (LOG_INFO, " Failed to create analyzer_ever_flew" );
4041 }
4142
4243
43- Analyzer_Good_EKF *analyzer_good_ekf = new Analyzer_Good_EKF (_fd_telem_forwarder, _sa_telemetry_forwarder);
44+ Analyzer_Good_EKF *analyzer_good_ekf = new Analyzer_Good_EKF (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle );
4445 if (analyzer_good_ekf != NULL ) {
4546 configure_analyzer (config, analyzer_good_ekf, " Analyzer_Good_EKF" );
4647 } else {
4748 syslog (LOG_INFO, " Failed to create analyzer_good_ekf" );
4849 }
4950
50- Analyzer_Battery *analyzer_battery = new Analyzer_Battery (_fd_telem_forwarder, _sa_telemetry_forwarder);
51+ Analyzer_Attitude_Control *analyzer_attitude_control = new Analyzer_Attitude_Control (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle);
52+ if (analyzer_attitude_control != NULL ) {
53+ configure_analyzer (config, analyzer_attitude_control, " Analyzer_Attitude_Control" );
54+ } else {
55+ syslog (LOG_INFO, " Failed to create analyzer_attitude_control" );
56+ }
57+
58+ Analyzer_Battery *analyzer_battery = new Analyzer_Battery (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle);
5159 if (analyzer_battery != NULL ) {
5260 configure_analyzer (config, analyzer_battery, " Analyzer_Battery" );
5361 } else {
5462 syslog (LOG_INFO, " Failed to create analyzer_battery" );
5563 }
5664
57- Analyzer_Brownout *analyzer_brownout = new Analyzer_Brownout (_fd_telem_forwarder, _sa_telemetry_forwarder);
65+ Analyzer_Brownout *analyzer_brownout = new Analyzer_Brownout (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle );
5866 if (analyzer_brownout != NULL ) {
5967 configure_analyzer (config, analyzer_brownout, " Analyzer_Brownout" );
6068 } else {
6169 syslog (LOG_INFO, " Failed to create analyzer_brownout" );
6270 }
6371
6472
65- Analyzer_Crashed *analyzer_crashed = new Analyzer_Crashed (_fd_telem_forwarder, _sa_telemetry_forwarder);
66- if (analyzer_crashed != NULL ) {
67- configure_analyzer (config, analyzer_crashed , " Analyzer_Crashed " );
73+ Analyzer_NotCrashed *analyzer_notcrashed = new Analyzer_NotCrashed (_fd_telem_forwarder, _sa_telemetry_forwarder, vehicle );
74+ if (analyzer_notcrashed != NULL ) {
75+ configure_analyzer (config, analyzer_notcrashed , " Analyzer_NotCrashed " );
6876 } else {
69- syslog (LOG_INFO, " Failed to create analyzer_crashed " );
77+ syslog (LOG_INFO, " Failed to create analyzer_not_crashed " );
7078 }
7179}
7280
@@ -342,6 +350,9 @@ void Analyze::end_of_log(uint32_t packet_count) {
342350 }
343351
344352 Json::Value root;
353+ root[" format-version" ] = " 0.1" ;
354+ root[" timestamp" ] = (Json::UInt64)start_time;
355+ root[" duration" ] = (Json::UInt64)(now () - start_time);
345356
346357 results_json (root);
347358
@@ -364,41 +375,92 @@ void Analyze::end_of_log(uint32_t packet_count) {
364375}
365376
366377void Analyze::handle_decoded_message (uint64_t T, mavlink_ahrs2_t &msg) {
378+ if (!vehicle) {
379+ return ;
380+ }
367381 for (int i=0 ; i<next_analyzer; i++) {
368382 analyzer[i]->handle_decoded_message (T, msg);
369383 }
370384}
371385void Analyze::handle_decoded_message (uint64_t T, mavlink_attitude_t &msg) {
386+ if (!vehicle) {
387+ return ;
388+ }
389+ vehicle->handle_decoded_message (T, msg);
372390 for (int i=0 ; i<next_analyzer; i++) {
373391 analyzer[i]->handle_decoded_message (T, msg);
374392 }
375393}
376394void Analyze::handle_decoded_message (uint64_t T, mavlink_heartbeat_t &msg) {
395+ if (!vehicle) {
396+ return ;
397+ }
398+ vehicle->handle_decoded_message (T, msg);
399+ for (int i=0 ; i<next_analyzer; i++) {
400+ analyzer[i]->handle_decoded_message (T, msg);
401+ }
402+ }
403+ void Analyze::handle_decoded_message (uint64_t T, mavlink_nav_controller_output_t &msg) {
404+ if (!vehicle) {
405+ return ;
406+ }
407+ vehicle->handle_decoded_message (T, msg);
377408 for (int i=0 ; i<next_analyzer; i++) {
378409 analyzer[i]->handle_decoded_message (T, msg);
379410 }
380411}
381412void Analyze::handle_decoded_message (uint64_t T, mavlink_param_value_t &msg) {
413+ if (!vehicle) {
414+ return ;
415+ }
416+ vehicle->handle_decoded_message (T, msg);
382417 for (int i=0 ; i<next_analyzer; i++) {
383418 analyzer[i]->handle_decoded_message (T, msg);
384419 }
385420}
386421void Analyze::handle_decoded_message (uint64_t T, mavlink_servo_output_raw_t &msg) {
422+ if (!vehicle) {
423+ return ;
424+ }
425+ vehicle->handle_decoded_message (T, msg);
387426 for (int i=0 ; i<next_analyzer; i++) {
388427 analyzer[i]->handle_decoded_message (T, msg);
389428 }
390429}
391430void Analyze::handle_decoded_message (uint64_t T, mavlink_ekf_status_report_t &msg) {
431+ if (!vehicle) {
432+ return ;
433+ }
392434 for (int i=0 ; i<next_analyzer; i++) {
393435 analyzer[i]->handle_decoded_message (T, msg);
394436 }
395437}
396438void Analyze::handle_decoded_message (uint64_t T, mavlink_sys_status_t &msg) {
439+ if (!vehicle) {
440+ return ;
441+ }
397442 for (int i=0 ; i<next_analyzer; i++) {
398443 analyzer[i]->handle_decoded_message (T, msg);
399444 }
400445}
401446void Analyze::handle_decoded_message (uint64_t T, mavlink_vfr_hud_t &msg) {
447+ if (!vehicle) {
448+ return ;
449+ }
450+ for (int i=0 ; i<next_analyzer; i++) {
451+ analyzer[i]->handle_decoded_message (T, msg);
452+ }
453+ }
454+ void Analyze::handle_decoded_message (uint64_t T, mavlink_statustext_t &msg) {
455+ if (!vehicle) {
456+ if (strstr (msg.text , " APM:Copter" )) {
457+ vehicle = new AnalyzerVehicle::Copter ();
458+ }
459+ }
460+ if (!vehicle) {
461+ return ;
462+ }
463+ vehicle->handle_decoded_message (T, msg);
402464 for (int i=0 ; i<next_analyzer; i++) {
403465 analyzer[i]->handle_decoded_message (T, msg);
404466 }
0 commit comments