From 8a49645c14fe8050e8abc1affd6a4a33ed768fe7 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Sun, 28 Jun 2015 09:28:47 +0200 Subject: [PATCH] Debug output for eeprom import. Use "cmake -D CMAKE_BUILD_TYPE=Debug -D DEBUG_IMPORT=ON ../src" to turn it on --- companion/src/CMakeLists.txt | 8 +++++++ companion/src/customdebug.h | 16 ++++++++++++++ companion/src/eepromimportexport.h | 11 ++++++++++ .../src/firmwares/opentx/opentxeeprom.cpp | 22 ++++++++++++++++++- 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 companion/src/customdebug.h diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 680a6658d..4142ff523 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -9,6 +9,14 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + +OPTION(DEBUG_IMPORT "Turns on debug output for EEPROM import") # Disabled by default + +IF(DEBUG_IMPORT) + ADD_DEFINITIONS( -DDEBUG_MODEL_IMPORT) + MESSAGE( STATUS "EEPROM import debugging enabled" ) +ENDIF(DEBUG_IMPORT) + MESSAGE( STATUS "Looking for XercesC " ) FIND_PACKAGE(XercesC) IF ( XERCESC_FOUND ) diff --git a/companion/src/customdebug.h b/companion/src/customdebug.h new file mode 100644 index 000000000..4a207a8fb --- /dev/null +++ b/companion/src/customdebug.h @@ -0,0 +1,16 @@ +#ifndef customdebug_h +#define customdebug_h + +#include + + +// Controls the generation of debug output for EEPROM import +#if defined(DEBUG_MODEL_IMPORT) + inline QDebug eepromImportDebug() { return QDebug(QtDebugMsg); } +#else + #undef eepromImportDebug + inline QNoDebug eepromImportDebug() { return QNoDebug(); } +#endif + + +#endif \ No newline at end of file diff --git a/companion/src/eepromimportexport.h b/companion/src/eepromimportexport.h index 7f64a5a5b..a70d7e133 100644 --- a/companion/src/eepromimportexport.h +++ b/companion/src/eepromimportexport.h @@ -17,6 +17,8 @@ #ifndef eeprom_importexport_h #define eeprom_importexport_h +#include "customdebug.h" + #define DIM(arr) (sizeof((arr))/sizeof((arr)[0])) class DataField { @@ -151,6 +153,7 @@ class BaseUnsignedField: public DataField { if (input[i]) field |= (1<: 0x%3(%4)").arg(name).arg(N).arg(field, 0, 16).arg(field); } virtual unsigned int size() @@ -207,6 +210,7 @@ class BoolField: public DataField { virtual void ImportBits(QBitArray & input) { field = input[0] ? true : false; + eepromImportDebug() << QString("\timported %1<%2>: 0x%3(%4)").arg(name).arg(N).arg(field, 0, 16).arg(field); } virtual unsigned int size() @@ -276,6 +280,7 @@ class SignedField: public DataField { } field = (int)value; + eepromImportDebug() << QString("\timported %1<%2>: 0x%3(%4)").arg(name).arg(N).arg(field, 0, 16).arg(field); } virtual unsigned int size() @@ -336,6 +341,7 @@ class CharField: public DataField { } field[i] = idx; } + eepromImportDebug() << QString("\timported %1<%2>: '%3'").arg(name).arg(N).arg(field); } virtual unsigned int size() @@ -393,6 +399,7 @@ class ZCharField: public DataField { else break; } + eepromImportDebug() << QString("\timported %1<%2>: '%3'").arg(name).arg(N).arg(field); } virtual unsigned int size() @@ -418,6 +425,7 @@ class StructField: public DataField { } inline void Append(DataField *field) { + //eepromImportDebug() << QString("StructField(%1) appending field: %2").arg(name).arg(field->getName()); fields.append(field); } @@ -435,6 +443,7 @@ class StructField: public DataField { virtual void ImportBits(QBitArray & input) { + eepromImportDebug() << QString("\timporting %1[%2]:").arg(name).arg(fields.size()); int offset = 0; foreach(DataField *field, fields) { unsigned int size = field->size(); @@ -489,6 +498,7 @@ class TransformedField: public DataField { virtual void ImportBits(QBitArray & input) { + eepromImportDebug() << QString("\timporting TransformedField %1:").arg(field.getName()); field.ImportBits(input); afterImport(); } @@ -715,6 +725,7 @@ class ConversionField: public TransformedField { if (scale) { field *= scale; } + eepromImportDebug() << QString("\timported ConversionField<%1>:").arg(internalField.getName()) << QString(" before: %1, after: %2").arg(_field).arg(field); } protected: diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 169e79726..d629c07a9 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -3,6 +3,7 @@ #include "helpers.h" #include "opentxeeprom.h" #include +#include "customdebug.h" #define IS_DBLEEPROM(board, version) ((IS_2560(board) || board==BOARD_M128) && version >= 213) // Macro used for Gruvin9x board and M128 board between versions 213 and 214 (when there were stack overflows!) @@ -422,6 +423,7 @@ class SwitchField: public ConversionField< SignedField > { { ConversionField< SignedField >::afterImport(); sw = RawSwitch(_switch); + eepromImportDebug() << QString("imported %1: %2").arg(ConversionField< SignedField >::internalField.getName()).arg(sw.toString()); } protected: @@ -546,6 +548,7 @@ class TelemetrySourceField: public ConversionField< UnsignedField > { { ConversionField< UnsignedField >::afterImport(); source = (_source == 0 ? RawSource(0) : RawSource(SOURCE_TYPE_TELEMETRY, _source-1)); + eepromImportDebug() << QString("imported %1: %2").arg(ConversionField< UnsignedField >::internalField.getName()).arg(source.toString()); } protected: @@ -582,6 +585,7 @@ class SourceField: public ConversionField< UnsignedField > { { ConversionField< UnsignedField >::afterImport(); source = RawSource(_source); + eepromImportDebug() << QString("imported %1: %2").arg(ConversionField< UnsignedField >::internalField.getName()).arg(source.toString()); } protected: @@ -739,6 +743,7 @@ class CurveReferenceField: public TransformedField { { curve.type = (CurveReference::CurveRefType)_curve_type; curve.value = smallGvarToC9x(_curve_value); + eepromImportDebug() << QString("imported CurveReference(%1)").arg(curve.toString()); } protected: @@ -904,6 +909,7 @@ class FlightModeField: public TransformedField { } } } + eepromImportDebug() << QString("imported %1: '%2'").arg(internalField.getName()).arg(phase.name); } protected: @@ -1169,6 +1175,7 @@ class MixField: public TransformedField { } if (mix.carryTrim < 0) mix.carryTrim = 0; } + eepromImportDebug() << QString("imported %1: ch %2, name '%3'").arg(internalField.getName()).arg(mix.destCh).arg(mix.name); } protected: @@ -1330,6 +1337,7 @@ class InputField: public TransformedField { else expo.curve = CurveReference(CurveReference::CURVE_REF_FUNC, _curveParam); } + eepromImportDebug() << QString("imported %1: ch %2 name '%3'").arg(internalField.getName()).arg(expo.chn).arg(expo.name); } protected: @@ -1533,6 +1541,7 @@ class CurvesField: public TransformedField { for (int j=0; jcount; j++) curve->points[j].x = -100 + (200*i) / (curve->count-1); } + eepromImportDebug() << QString("imported curve: %3 points").arg(curve->count); } } @@ -1839,6 +1848,7 @@ class LogicalSwitchField: public TransformedField { } } } + eepromImportDebug() << QString("imported %1: %2").arg(internalField.getName()).arg(csw.funcToString()); } protected: @@ -1995,6 +2005,7 @@ class SwitchesWarningField: public TransformedField { else { sw = _sw; } + eepromImportDebug() << QString("imported %1").arg(internalField.getName()); } protected: @@ -2203,6 +2214,7 @@ class ArmCustomFunctionField: public TransformedField { else { fn.param = value; } + eepromImportDebug() << QString("imported %1").arg(internalField.getName()); } protected: @@ -2391,6 +2403,7 @@ class AvrCustomFunctionField: public TransformedField { else if (version >= 213) fn.repeatParam = _active * 10; } + eepromImportDebug() << QString("imported %1").arg(internalField.getName()); } protected: @@ -2477,6 +2490,8 @@ class FrskyScreenField: public DataField { virtual void ImportBits(QBitArray & input) { + eepromImportDebug() << QString("importing %1: type: %2").arg(name).arg(screen.type); + // NOTA: screen.type should have been imported first! if (screen.type == TELEMETRY_SCREEN_SCRIPT) script.ImportBits(input); @@ -2794,6 +2809,7 @@ class SensorField: public TransformedField { else if (sensor.formula == SensorData::TELEM_FORMULA_CONSUMPTION) sensor.amps = _sources[0]; } + eepromImportDebug() << QString("imported %1").arg(internalField.getName()); } protected: @@ -2822,6 +2838,8 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne { sprintf(name, "Model %s", modelData.name); + eepromImportDebug() << QString("OpenTxModelData::OpenTxModelData(name: %1, board: %2, ver: %3, var: %4)").arg(name).arg(board).arg(version).arg(variant); + if (HAS_LARGE_LCD(board)) internalField.Append(new ZCharField<12>(modelData.name)); else @@ -3147,7 +3165,7 @@ void OpenTxModelData::beforeExport() void OpenTxModelData::afterImport() { - // qDebug() << QString("after import model") << modelData.name ; + eepromImportDebug() << QString("OpenTxModelData::afterImport()") << modelData.name; if (IS_TARANIS(board) && version < 216) { for (unsigned int i=0; i