Added BCValueType

This commit is contained in:
2025-12-19 13:24:18 +01:00
parent 059f3081d3
commit 3e5f616461
9 changed files with 203 additions and 162 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 18.0.1, 2025-12-18T12:54:31. -->
<!-- Written by QtCreator 18.0.1, 2025-12-19T10:26:05. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@@ -8,7 +8,7 @@
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">1</value>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
@@ -94,16 +94,16 @@
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="bool" key="HasPerBcDcs">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.1 llvm-mingw 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.1 llvm-mingw 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6101.win64_llvm_mingw_kit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6101.win64_mingw_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\syncMePlease\projects.now\BionxControl\build\Desktop_Qt_6_10_1_llvm_mingw_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/syncMePlease/projects.now/BionxControl/build/Desktop_Qt_6_10_1_llvm_mingw_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\syncMePlease\projects.now\BionxControl\build\Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/syncMePlease/projects.now/BionxControl/build/Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -165,7 +165,7 @@
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/BionxControl/BionxControl.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/BionxControl/bionxcontrol.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -202,7 +202,7 @@
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/BionxControl/BionxControl.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/BionxControl/bionxcontrol.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -218,16 +218,16 @@
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="bool" key="HasPerBcDcs">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6101.win64_mingw_kit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.1 llvm-mingw 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.1 llvm-mingw 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6101.win64_llvm_mingw_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\syncMePlease\projects.now\BionxControl\build\Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/syncMePlease/projects.now/BionxControl/build/Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\syncMePlease\projects.now\BionxControl\build\Desktop_Qt_6_10_1_llvm_mingw_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/syncMePlease/projects.now/BionxControl/build/Desktop_Qt_6_10_1_llvm_mingw_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>

View File

@@ -57,4 +57,4 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
BionxControl.qrc
bionxcontrol.qrc

View File

@@ -1,6 +1,7 @@
<RCC>
<qresource prefix="/">
<file alias="bikeinfo.xml">data/bikeinfo.xml</file>
<file>BionxControl.qss</file>
<file>bionxcontrol.qss</file>
<file alias="typeinfo.xml">data/typeinfo.xml</file>
</qresource>
</RCC>

View File

@@ -35,7 +35,7 @@ BCMainWindow::BCMainWindow(QWidget *parent)
: QMainWindow(parent)
{
setupUi(this);
_valueManager.loadXml();
_valueManager.loadBikeData();
auto model = _valueManager.getModel( "Console"_L1 );
if( model)
_valueView->setModel( *model );

View File

@@ -32,6 +32,14 @@
#include <bcvalue.h>
BCValueType::BCValueType( TypeID ID_, QString unitLabel_, optDouble factor_, optDouble min_, optDouble max_ )
: ID{ID_}, unitLabel{unitLabel_},factor{factor_},min{min_},max{max_}
{
}
BCValue::BCValue(BCDevice::ID deviceID_, BC::ID targetID_)
: deviceID{deviceID_}, targetID{targetID_}
{

View File

@@ -40,30 +40,29 @@
/*
Werte haben verschiedene Längen (1,2 und 4 Byte) und werder auf unterschiedliche Art und Weise
ausgelesen und geschrieben (Siehe ODO). Sin können also Wert-Typen zugeordnet werden. Ein Werttyp
lässet über eine ID identifizieren, die mit der phyikalische Einheit des Wertes überschneiden kann,
aber nicht muss: : Km/h, kWh, ODO ... bilden eigene Typen, SoC, Assistence Level sind auch eigene Typen,
Teilen sich jedoch die Einheit '%'.
Das ist natürlich annalog zu den ItemTypes:
- ein Value hat einen ValueType, der bestimmt folgendes:
- long or short or quad
- unit (mm, km/h, odo ... )
-
*/
using optDouble = std::optional<double>;
struct BCValueType
{
Q_GADGET
public:
enum class TypeID : uint8_t
{
Invalid = 0x0,
};
Q_ENUM(TypeID)
enum class UnitID : uint8_t
{
Invalid = 0x0,
Text,
@@ -71,39 +70,27 @@ public:
Float,
Percent,
KWh,
Watt,
Km,
Kmh,
Mm,
Sec,
SoC,
Odo,
Assist,
AssistFac,
Date
};
Q_ENUM(UnitID)
Q_ENUM(TypeID)
BCValueType( TypeID ID_, QString unitLabel_="", optDouble factor_=std::nullopt, optDouble min_=std::nullopt, optDouble max_= std::nullopt );
static QString getUnitName( UnitID unitID)
{
static QMap<UnitID,QString> s_unitNames
{
{UnitID::Invalid, "" },
{UnitID::Text, ""},
{UnitID::Number, ""},
{UnitID::Float, "" },
{UnitID::Percent, "%"},
{UnitID::KWh, "kWh" },
{UnitID::Km, "km"},
{UnitID::Mm, "mm"},
{UnitID::Sec, "s"},
{UnitID::SoC, "%"},
{UnitID::Date, ""}
};
return s_unitNames[unitID];
}
UnitID ID;
TypeID ID;
QString unitLabel;
optDouble factor;
optDouble min;
optDouble max;
optDouble factor;
};
class BCValue
@@ -117,15 +104,16 @@ public:
void setLongValue( uint8_t value);
uint8_t getLongValue();
QString label;
BCDevice::ID deviceID{BCDevice::ID::Invalid};
BC::ID targetID{BC::ID::Invalid};
BCValueType::TypeID typeID{BCValueType::TypeID::Invalid};;
QVariant defaultValue;
QString label;
QVariant value;
QVariant defaultValue;
bool inSync{false};
bool readOnly{false};
};
// Damit QVariant dieses Struct transportieren kann:

View File

@@ -28,25 +28,24 @@
***************************************************************************/
#include <QFile>
#include <QFileDialog>
#include <QTableView>
#include <QVBoxLayout>
#include <QPushButton>
#include <QMessageBox>
#include <QHeaderView>
#include <QStatusBar>
#include <bcvaluemanager.h>
using namespace Qt::StringLiterals;
BCValueManager::BCValueManager()
BCValueManager::BCValueManager(QObject *parent)
: QObject(parent)
{
loadTypeData();
qRegisterMetaType<BCValue>("BCValue");
_transmitter.moveToThread(&_worker);
@@ -145,7 +144,7 @@ std::optional<BCValueModel*> BCValueManager::getModel(const QString& key )
return std::nullopt;
}
void BCValueManager::loadXml()
void BCValueManager::loadBikeData()
{
auto printAttrs = [](const QXmlStreamReader& xml)
{
@@ -195,7 +194,7 @@ void BCValueManager::loadXml()
if(deviceID.has_value())
{
BCValueList parsedValues;
readDevice( parsedValues );
loadDeviceData( parsedValues );
if( parsedValues.count() )
{
BCValueModel* valueModel = new BCValueModel( this );
@@ -222,7 +221,7 @@ void BCValueManager::loadXml()
}
void BCValueManager::readDevice( BCValueList& parsedValues )
void BCValueManager::loadDeviceData( BCValueList& parsedValues )
{
auto printAttrs = [](const QXmlStreamReader& xml)
{
@@ -271,9 +270,52 @@ void BCValueManager::readDevice( BCValueList& parsedValues )
}
}
void BCValueManager::loadTypeData()
{
/*
Invalid = 0x0,
"Text"
"Number"
"Float"
"Percent"
"KWh"
"Watt"
"Km"
"Kmh"
"Mm"
"Sec"
"SoC"
"Odo"
"Date"
*/
//_valueTypes.insert( { BCValueType::TypeID::Invalid, "Invalid" } );
_valueTypes.insert( "Invalid", { BCValueType::TypeID::Invalid, "Invalid" } );
_valueTypes.insert( "Text", { BCValueType::TypeID::Text } );
_valueTypes.insert( "Number", { BCValueType::TypeID::Number } );
_valueTypes.insert( "Float", { BCValueType::TypeID::Float, "", 1.5625} );
_valueTypes.insert( "Percent",{ BCValueType::TypeID::Percent, "%", 1.5625 } );
_valueTypes.insert( "KWh", { BCValueType::TypeID::KWh, "kwh", 1.5625 } );
_valueTypes.insert( "Watt", { BCValueType::TypeID::Watt, "w", 1.5625 } );
_valueTypes.insert( "Km", { BCValueType::TypeID::Km, "km", 1.5625 } );
_valueTypes.insert( "Kmh", { BCValueType::TypeID::Kmh, "km/h", 0.1 } );
_valueTypes.insert( "Mm", { BCValueType::TypeID::Mm, "mm", 1.5625 } );
_valueTypes.insert( "Sec", { BCValueType::TypeID::Sec, "s", 1.5625 } );
_valueTypes.insert( "SoC", { BCValueType::TypeID::SoC, "%", 1.5625 } );
_valueTypes.insert( "Odo", { BCValueType::TypeID::Odo, "km", 1.5625 } );
_valueTypes.insert( "Assist", { BCValueType::TypeID::Assist, "", 0 ,4 } );
_valueTypes.insert( "Assist", { BCValueType::TypeID::AssistFac, "%" } );
_valueTypes.insert( "Date", { BCValueType::TypeID::Date } );
}
// --- NEU: Speichern mit QXmlStreamWriter ---
void BCValueManager::saveXml()
void BCValueManager::saveBikeData()
{
/*
QString fileName = QFileDialog::getSaveFileName(this, "XML speichern", "", "XML Files (*.xml)");

View File

@@ -47,7 +47,7 @@ class BCValueManager : public QObject
public:
BCValueManager( );
BCValueManager( QObject* parent = nullptr);
virtual ~BCValueManager();
std::optional<BCValueModel*> getModel(const QString& key );
@@ -59,8 +59,8 @@ public:
public slots:
void loadXml();
void saveXml();
void loadBikeData();
void saveBikeData();
void onToggleConnectionState( bool connect );
signals:
@@ -76,9 +76,11 @@ private slots:
protected:
void readDevice( BCValueList& parsedValues );
void loadTypeData();
void loadDeviceData( BCValueList& parsedValues );
QXmlStreamReader _xml;
QMap<QString,BCValueType> _valueTypes;
QMap<QString,BCValueModel*> _valueModels;
BCDevice::ID _currentDeviceID{BCDevice::ID::Invalid};
QMetaEnum _bcDeviceEnum{QMetaEnum::fromType<BCDevice::ID>()};

View File

@@ -4,28 +4,28 @@
<Device Type="Console">
<Value ID='Cons_Rev_Hw' Label='Hardware Version' Default='' Current='' Enabled='true' />
<Value ID='Cons_Rev_Sw' Label='Software Version' Default='' Current='' Enabled='true' />
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Rev_Hw' Label='Hardware Version' Default='' />
<Value ID='Cons_Rev_Sw' Label='Software Version' Default='' />
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' Default='' />
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' Default='' />
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Default='' Current='' Enabled='true' Min='0' Max='4' />
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Default='' Current='' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Default='' Current='' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Default='' Current='' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_4' Label='Assistance Level 4' Default='' Current='' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Default='' UnitType='Assist' />
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Default='' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Default='' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Default='' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_4' Label='Assistance Level 4' Default='' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Assist_Maxspeed_Flag' Label='Max Limit Enabled' Default='' Current='' Enabled='true' />
<Value ID='Cons_Assist_Maxspeed_Hi' Label='Max Speed Limit' Default='' Current='' LongValue='true' Enabled='true' UnitType='kmh' Factor='0.1'/>
<Value ID='Cons_Assist_Maxspeed_Flag' Label='Max Limit Enabled' Default='' />
<Value ID='Cons_Assist_Maxspeed_Hi' Label='Max Speed Limit' Default='' UnitType='kmh' Factor='0.1'/>
<Value ID='Cons_Assist_Minspeed_Flag' Label='Min Limit Enabled' Default='' Current='' Enabled='true' />
<Value ID='Cons_Assist_Minspeed' Label='Min Speed Limit' Default='' Current='' Enabled='true' />
<Value ID='Cons_Assist_Minspeed_Flag' Label='Min Limit Enabled' Default='' />
<Value ID='Cons_Assist_Minspeed' Label='Min Speed Limit' Default='' />
<Value ID='Cons_Throttle_Maxspeed_Flag' Label='Throttle Limit Enabled' Default='' Current='' Enabled='true' />
<Value ID='Cons_Throttle_Maxspeed_Hi' Label='Throttle Speed Limit' Default='' Current='' LongValue='true' Enabled='true' UnitType='kmh' Factor='0.1'/>
<Value ID='Cons_Throttle_Maxspeed_Flag' Label='Throttle Limit Enabled' Default='' />
<Value ID='Cons_Throttle_Maxspeed_Hi' Label='Throttle Speed Limit' Default='' UnitType='kmh' Factor='0.1'/>
<Value ID='Cons_Geometry_Circ_Hi' Label='Wheel Circumference' Default='' Current='' LongValue='true' Enabled='true' UnitType='mm' />
<Value ID='Cons_Assist_Mountain_Cap' Label='Mountain Cap' Default='' Current='' Enabled='true' UnitType='%' Factor='1.5625' />
<Value ID='Cons_Geometry_Circ_Hi' Label='Wheel Circumference' Default='' UnitType='mm' />
<Value ID='Cons_Assist_Mountain_Cap' Label='Mountain Cap' Default='' UnitType='Percent' Factor='1.5625' />
</Device>
@@ -39,7 +39,7 @@
</Bike>
<!--
printf( " odo .....................: %0.2f Km" _NL _NL,
printf( " odo .....................: Percent0.2f Km" _NL _NL,
((getValue(CONSOLE, CONSOLE_STATS_ODO_1) << 24) +
(getValue(CONSOLE, CONSOLE_STATS_ODO_2) << 16) +
(getValue(CONSOLE, CONSOLE_STATS_ODO_3) << 8) +
@@ -51,106 +51,106 @@
<Value ID='Cons_Stat_Dist_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='mm' Factor='0.1' />
<Value ID='Cons_Stat_Dist_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='mm'/>
<Value ID='Cons_Stat_Avgspeed_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='mm' Factor='0.1' />
<Value ID='Cons_Stat_Avgspeed_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='mm'/>
<Value ID='Cons_Stat_Dist_Hi' Label='' Default='' UnitType='mm' Factor='0.1' />
<Value ID='Cons_Stat_Dist_Lo' Label='' Default='' UnitType='mm'/>
<Value ID='Cons_Stat_Avgspeed_Hi' Label='' Default='' UnitType='mm' Factor='0.1' />
<Value ID='Cons_Stat_Avgspeed_Lo' Label='' Default='' UnitType='mm'/>
<Value ID='Cons_Stat_Odo_Hihi' Label='' Default='' Current='' LongValue='true' Enabled='true' Factor='0.1' />
<Value ID='Cons_Stat_Odo_Hilo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Stat_Odomoter_Lohi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Stat_Odo_Lolo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Stat_Odo_Hihi' Label='' Default='' Factor='0.1' />
<Value ID='Cons_Stat_Odo_Hilo' Label='' Default='' />
<Value ID='Cons_Stat_Odomoter_Lohi' Label='' Default='' />
<Value ID='Cons_Stat_Odo_Lolo' Label='' Default='' />
<Value ID='Cons_Preference_Nip_Hihi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Nip_Hilo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Nip_Lohi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Nip_Lolo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Calibrated' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Stat_Chrono_Second' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Stat_Chrono_Minute' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Stat_Chrono_Hour' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Lcd_Contrast' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Location' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Year' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Month' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Day' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Nip_Hihi' Label='' Default='' />
<Value ID='Cons_Preference_Nip_Hilo' Label='' Default='' />
<Value ID='Cons_Preference_Nip_Lohi' Label='' Default='' />
<Value ID='Cons_Preference_Nip_Lolo' Label='' Default='' />
<Value ID='Cons_Throttle_Calibrated' Label='' Default='' />
<Value ID='Cons_Stat_Chrono_Second' Label='' Default='' />
<Value ID='Cons_Stat_Chrono_Minute' Label='' Default='' />
<Value ID='Cons_Stat_Chrono_Hour' Label='' Default='' />
<Value ID='Cons_Preference_Lcd_Contrast' Label='' Default='' />
<Value ID='Cons_Sn_Location' Label='' Default='' />
<Value ID='Cons_Sn_Year' Label='' Default='' />
<Value ID='Cons_Sn_Month' Label='' Default='' />
<Value ID='Cons_Sn_Day' Label='' Default='' />
<Value ID='Cons_Sn_Pn_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Pn_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Item_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Item_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Sn_Pn_Hi' Label='' Default='' />
<Value ID='Cons_Sn_Pn_Lo' Label='' Default='' />
<Value ID='Cons_Sn_Item_Hi' Label='' Default='' />
<Value ID='Cons_Sn_Item_Lo' Label='' Default='' />
<Value ID='Cons_Assist_Gauge_Joint' Label='' Default='' Current='' LongValue='true' Enabled='true' Min='0' Max='11' />
<Value ID='Cons_Throttle_Min_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Min_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Max_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Max_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Gauge_Joint' Label='' Default='' Min='0' Max='11' />
<Value ID='Cons_Throttle_Min_Hi' Label='' Default='' />
<Value ID='Cons_Throttle_Min_Lo' Label='' Default='' />
<Value ID='Cons_Throttle_Max_Hi' Label='' Default='' />
<Value ID='Cons_Throttle_Max_Lo' Label='' Default='' />
<Value ID='Cons_Preference_Light_On_At_Start' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Light_On_At_Start' Label='' Default='' />
<Value ID='Cons_Assist_Brake_Level' Label='' Default='' Current='' LongValue='true' Enabled='true' Min='0' Max='64' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Preference_Trip_To_Empty_Flag' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Display_Units' Default='1' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Enabled_Onstrain' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Brake_Level' Label='' Default='' Min='0' Max='64' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Preference_Trip_To_Empty_Flag' Label='' Default='' />
<Value ID='Cons_Preference_Display_Units' Default='1' />
<Value ID='Cons_Throttle_Enabled_Onstrain' Label='' Default='' />
<Value ID='Cons_Assist_Brake_Flag' Default='1' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Brake_Polarity' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Gauge_Filter' Label='' Default='' Current='' LongValue='true' Enabled='true' Min='0' Max='8' />
<Value ID='Cons_Assist_Brake_Flag' Default='1' />
<Value ID='Cons_Assist_Brake_Polarity' Label='' Default='' />
<Value ID='Cons_Assist_Gauge_Filter' Label='' Default='' Min='0' Max='8' />
<Value ID='Cons_Assist_Gauge_Gain' Label='' Default='' Current='' LongValue='true' Enabled='true' Min='0.1' Max='4.0' Factor='0.1' />
<Value ID='Cons_Assist_Gain_A' Label='' Default='' Current='' LongValue='true' Enabled='true' Min='0.1' Max='4.0' Factor='0.1' />
<Value ID='Cons_Assist_Gain_B' Label='' Default='' Current='' LongValue='true' Enabled='true' Min='0.1' Max='25.0' Factor='0.1' />
<Value ID='Cons_Sn_Type' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Region' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Configbit_0' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Enabled_Boost_Display' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Autoregen_Flag' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Gauge_Gain' Label='' Default='' Min='0.1' Max='4.0' Factor='0.1' />
<Value ID='Cons_Assist_Gain_A' Label='' Default='' Min='0.1' Max='4.0' Factor='0.1' />
<Value ID='Cons_Assist_Gain_B' Label='' Default='' Min='0.1' Max='25.0' Factor='0.1' />
<Value ID='Cons_Sn_Type' Label='' Default='' />
<Value ID='Cons_Preference_Region' Label='' Default='' />
<Value ID='Cons_Preference_Configbit_0' Label='' Default='' />
<Value ID='Cons_Throttle_Enabled_Boost_Display' Label='' Default='' />
<Value ID='Cons_Assist_Autoregen_Flag' Label='' Default='' />
<Value ID='Cons_Rev_Sub' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Light_Button_Mode' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Expertmode' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Rev_Sub' Label='' Default='' />
<Value ID='Cons_Preference_Light_Button_Mode' Label='' Default='' />
<Value ID='Cons_Preference_Expertmode' Label='' Default='' />
<Value ID='Cons_Preference_Codes_Hihi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codes_Hilo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codes_Lohi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codes_Lolo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codesrw_Hihi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codesrw_Hilo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codesrw_Lohi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codesrw_Lolo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Throttle_Mode' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Preference_Codes_Hihi' Label='' Default='' />
<Value ID='Cons_Preference_Codes_Hilo' Label='' Default='' />
<Value ID='Cons_Preference_Codes_Lohi' Label='' Default='' />
<Value ID='Cons_Preference_Codes_Lolo' Label='' Default='' />
<Value ID='Cons_Preference_Codesrw_Hihi' Label='' Default='' />
<Value ID='Cons_Preference_Codesrw_Hilo' Label='' Default='' />
<Value ID='Cons_Preference_Codesrw_Lohi' Label='' Default='' />
<Value ID='Cons_Preference_Codesrw_Lolo' Label='' Default='' />
<Value ID='Cons_Preference_Throttle_Mode' Label='' Default='' />
<Value ID='Cons_Throttle_Boost_Triggerlevel' Label='' Default='' Current='' LongValue='true' Enabled='true' Min='1.5' Max='50.0' UnitType='%' Factor='1.5625' />
<Value ID='Cons_Preference_Flip_Side' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Config_Testmode' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Config_Testmode_Hw14' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Boost_Triggerlevel' Label='' Default='' Min='1.5' Max='50.0' UnitType='Percent' Factor='1.5625' />
<Value ID='Cons_Preference_Flip_Side' Label='' Default='' />
<Value ID='Cons_Config_Testmode' Label='' Default='' />
<Value ID='Cons_Config_Testmode_Hw14' Label='' Default='' />
<Value ID='Cons_Config_Last_Mode' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Speedgain' Label='' Default='' Current='' LongValue='true' Enabled='true' Factor='0.1' />
<Value ID='Cons_Config_Last_Mode' Label='' Default='' />
<Value ID='Cons_Assist_Speedgain' Label='' Default='' Factor='0.1' />
<Value ID='Cons_Config_Last_Mode_On' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Config_Last_Mode_Off' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Config_Last_Mode_On' Label='' Default='' />
<Value ID='Cons_Config_Last_Mode_Off' Label='' Default='' />
<Value ID='Cons_Status_Slave' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Status_Slave' Label='' Default='' />
<Value ID='Cons_Throttle_Raw_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Raw_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Throttle_Position' Label='' Default='' Current='' LongValue='true' Enabled='true' Factor='1.5625'/>
<Value ID='Cons_Throttle_Raw_Hi' Label='' Default='' />
<Value ID='Cons_Throttle_Raw_Lo' Label='' Default='' />
<Value ID='Cons_Throttle_Position' Label='' Default='' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_Rekuperation_3' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_Rekuperation_4' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Config_Service_Timestamp_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Config_Service_Zimestamp_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Config_Service_Distance_Hi' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Config_Service_Distance_Lo' Label='' Default='' Current='' LongValue='true' Enabled='true' />
<Value ID='Cons_Assist_Level_Rekuperation_3' Label='' Default='' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_Rekuperation_4' Label='' Default='' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Config_Service_Timestamp_Hi' Label='' Default='' />
<Value ID='Cons_Config_Service_Zimestamp_Lo' Label='' Default='' />
<Value ID='Cons_Config_Service_Distance_Hi' Label='' Default='' />
<Value ID='Cons_Config_Service_Distance_Lo' Label='' Default='' />
<Value ID='Cons_Assist_Level_Rekuperation_1' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_Rekuperation_2' Label='' Default='' Current='' LongValue='true' Enabled='true' UnitType='%' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_Rekuperation_1' Label='' Default='' UnitType='Percent' Factor='1.5625'/>
<Value ID='Cons_Assist_Level_Rekuperation_2' Label='' Default='' UnitType='Percent' Factor='1.5625'/>
-->