Skip to content

Commit

Permalink
New DecoderOffset wizard, for configuring Decoder Offset, and schedul…
Browse files Browse the repository at this point in the history
…er settings
  • Loading branch information
malcom2073 committed Nov 23, 2013
1 parent 1a33f44 commit 65d7ae9
Show file tree
Hide file tree
Showing 8 changed files with 198 additions and 33 deletions.
134 changes: 134 additions & 0 deletions core/Wizards/DecoderOffset.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1

Item {
Rectangle {
x:0
y:0
width: 400
height: 300
color: "grey"
Text {
x:10
y:130
color: "white"
text: "Current Decoder Offset:"
}
TextEdit {
id: tpstext
x:200
y:130
color: "white"
}
Text {
x:10
y:150
color: "white"
text: "Configured Output Events"
}
TextEdit {
id: configoutputeventstext
x:200
y:150
color: "white"
}
Text {
x:10
y:170
color: "white"
text: "injections Per Cyle (Per Injector)"
}
TextEdit {
id: configinjectionspercycle
x:250
y:170
color: "white"
}
Rectangle {
x: 10
y: 10
radius:5
width:380
height:120
color: "white"
Rectangle {
x:5
y:5
width:370
height:110
radius:5
color: "grey"
Text {
x:5
y:5
width:360
height:100
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: "These are the scheduler settings for your engine. Current values are displayed, enter new values and then click Write Values to save them to flash."
}
}
}

Rectangle {
x:10
y:230
width:200
height:30
radius:5
color:"white"
Rectangle {
x:5
y:5
width:190
height:20
radius:5
color: "blue"
Text {
anchors.fill: parent
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: "Write Values"
MouseArea {
anchors.fill: parent
onClicked: {
console.log("Capture Clicked");
numberOfConfiguredOutputEvents.setValue(configoutputeventstext.text);
numberOfInjectionsPerEngineCycle.setValue(configinjectionspercycle.text);
decoderEngineOffset.setValue(tpstext.text);


}
}
}
}
}
Component.onCompleted: {
decoder.payloadDecoded.connect(decode);
decoderEngineOffset.update.connect(offsetupdate);
numberOfConfiguredOutputEvents.update.connect(outputeventupdate);
numberOfInjectionsPerEngineCycle.update.connect(injectionspercycleupdate);

tpstext.text = decoderEngineOffset.value();
configoutputeventstext.text = numberOfConfiguredOutputEvents.value();
configinjectionspercycle.text = numberOfInjectionsPerEngineCycle.value();

}
function offsetupdate() {
console.log("Offset update");
tpstext.text = decoderEngineOffset.value();
}
function outputeventupdate() {
configoutputeventstext.text = numberOfConfiguredOutputEvents.value();
}
function injectionspercycleupdate() {
configinjectionspercycle.text = numberOfInjectionsPerEngineCycle.value();
}
function decode(map){
//console.log("Decoded");
// tpstext.text = map["TPS"];
}

}
}
35 changes: 21 additions & 14 deletions core/src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1551,27 +1551,34 @@ void MainWindow::emsCommsConnected()
QDir wizards("Wizards");
foreach (QString file,wizards.entryList(QDir::Files | QDir::NoDotAndDotDot))
{
WizardView *view = new WizardView();
connect(emsComms,SIGNAL(configRecieved(ConfigBlock,QVariant)),view,SLOT(configRecieved(ConfigBlock,QVariant)));
m_wizardList.append(view);
view->setFile(emsComms,wizards.absoluteFilePath(file));
view->passConfig(m_memoryMetaData->configMetaData());
view->setGeometry(0,0,400,300);
QAction *action = new QAction(this);
action->setText(file.mid(0,file.lastIndexOf(".")));
action->setCheckable(true);
ui.menuWizards->addAction(action);
connect(action,SIGNAL(triggered(bool)),view,SLOT(setVisible(bool)));
connect(view,SIGNAL(visibilityChanged(bool)),action,SLOT(setChecked(bool)));
if (file.endsWith(".qml"))
{
WizardView *view = new WizardView();
connect(emsComms,SIGNAL(configRecieved(ConfigBlock,QVariant)),view,SLOT(configRecieved(ConfigBlock,QVariant)));
m_wizardList.append(view);
for (int i=0;i<emsComms->getConfigList().size();i++)
{
view->addConfig(emsComms->getConfigList()[i],emsComms->getConfigData(emsComms->getConfigList()[i]));
}
view->setFile(emsComms,wizards.absoluteFilePath(file));
view->passConfig(m_memoryMetaData->configMetaData());
view->setGeometry(0,0,400,300);
QAction *action = new QAction(this);
action->setText(file.mid(0,file.lastIndexOf(".")));
action->setCheckable(true);
ui.menuWizards->addAction(action);
connect(action,SIGNAL(triggered(bool)),view,SLOT(setVisible(bool)));
connect(view,SIGNAL(visibilityChanged(bool)),action,SLOT(setChecked(bool)));
}
}
//virtual QList<QString> getConfigList()=0;
for (int i=0;i<emsComms->getConfigList().size();i++)
{
parameterView->addConfig(emsComms->getConfigList()[i],emsComms->getConfigData(emsComms->getConfigList()[i]));
for (int j=0;j<m_wizardList.size();j++)
/*for (int j=0;j<m_wizardList.size();j++)
{
m_wizardList[j]->addConfig(emsComms->getConfigList()[i],emsComms->getConfigData(emsComms->getConfigList()[i]));
}
}*/
}
//New log and settings file here.
if (m_memoryInfoMap.size() == 0)
Expand Down
19 changes: 12 additions & 7 deletions core/src/wizardview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,22 @@ void WizardView::passConfig(QMap<QString,QList<ConfigBlock> > config)
}
void WizardView::addConfig(QString name,ConfigData *config)
{
if (!m_configRequestList.contains(name))
{
if (!m_configRequestList.contains(name))
{
//Throw away, we don't care
return;
}
//We don't actually need to hold on to this object (*config), it is garunteed to live for the life
//of the application. Simply connect the signals/slots, and ignore it otherwise.
connect(config,SIGNAL(update()),this,SLOT(configUpdate()));
// return;
}
//m_configBlockMap[name] = config;
//We don't actually need to hold on to this object (*config), it is garunteed to live for the life
//of the application. Simply connect the signals/slots, and ignore it otherwise.
connect(config,SIGNAL(update()),this,SLOT(configUpdate()));
rootContext()->setContextProperty(name,config);
}
void WizardView::configUpdate()
{
for (QMap<QString,ConfigBlock*>::const_iterator i=m_configBlockMap.constBegin();i!=m_configBlockMap.constEnd();i++)
{
}
//Config block got updated.
//ConfigData *data = qobject_cast<ConfigData*>(sender());
//if (!data)
Expand Down
3 changes: 2 additions & 1 deletion core/src/wizardview.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ class WizardView : public QDeclarativeView
QTimer *updateTimer;
QVariantMap m_savedPayload;
EmsComms *emscomms;
QList<QString> m_configRequestList;
QList<QString> m_configRequestList;
QMap<QString,ConfigBlock*> m_configBlockMap;
protected:
void showEvent(QShowEvent *event);
void hideEvent(QHideEvent *event);
Expand Down
4 changes: 2 additions & 2 deletions lib/core/configdata.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ class ConfigData : public QObject
public:
virtual void setData(QByteArray data)=0;
virtual QString name()=0;
virtual QVariant value()=0;
virtual void setValue(QVariant value)=0;
virtual Q_INVOKABLE QVariant value()=0;
virtual Q_INVOKABLE void setValue(QVariant value)=0;
signals:
void update();
};
Expand Down
14 changes: 10 additions & 4 deletions plugins/freeems/feconfigdata.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#include "feconfigdata.h"

#include "QsLog.h"
FEConfigData::FEConfigData() : ConfigData()
{
m_value = QVariant((double)0);
}
FEConfigData::FEConfigData(QString name,QString type, QString override,unsigned short locationid, unsigned short size,unsigned short elementsize,unsigned short offset, QList<QPair<QString,double> > calc) : ConfigData()
{
Expand All @@ -19,6 +20,7 @@ FEConfigData::FEConfigData(QString name,QString type, QString override,unsigned
}
QVariant FEConfigData::value()
{
QLOG_DEBUG() << "value requested:" << m_value;
return m_value;
}
void FEConfigData::setValue(QVariant value)
Expand All @@ -30,7 +32,7 @@ void FEConfigData::setValue(QVariant value)
QByteArray data;
for (int i=0;i<m_elementSize;i++)
{
data.append(usval << (((m_elementSize-1)-i)*8));
data.append(usval >> (((m_elementSize-1)-i)*8));
}
emit saveSingleDataToFlash(m_locationId,m_offset,m_elementSize,data);
}
Expand All @@ -44,17 +46,21 @@ void FEConfigData::setData(QByteArray data)
{
if (m_type == "value")
{
if (data.size() < m_offset + m_elementSize)
if (data.size() >= (m_offset + m_elementSize))
{
QByteArray newdata = data.mid(m_offset,m_elementSize);
unsigned long val = 0;
for (int i=0;i<m_elementSize;i++)
{
val += newdata[i] << (((m_elementSize-1) - i) * 8);
val += ((unsigned char)newdata[i]) << (((m_elementSize-1) - i) * 8);
}
m_value = QVariant(calcAxis(val,m_calc));

}
else
{
//QLOG_DEBUG() << "Data size:" << data.size() << "Expected:" << m_offset + m_elementSize;
}

}
else if (m_type == "array")
Expand Down
17 changes: 14 additions & 3 deletions plugins/freeems/freeemscomms.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,11 +177,22 @@ FreeEmsComms::FreeEmsComms(QObject *parent) : EmsComms(parent)
{
QVariantMap configitemmap = configlist[i].toMap();
FEConfigData *block = new FEConfigData();
//connect(data,SIGNAL(saveSingleDataToFlash(unsigned short,unsigned short,unsigned short,QByteArray)),&emsData,SLOT(flashBytesLocalUpdate(unsigned short,unsigned short,unsigned short,QByteArray)));
connect(block,SIGNAL(saveSingleDataToFlash(unsigned short,unsigned short,unsigned short,QByteArray)),&emsData,SLOT(flashBytesLocalUpdate(unsigned short,unsigned short,unsigned short,QByteArray)));
block->setName(configitemmap["name"].toString());
block->setType(configitemmap["type"].toString());
block->setElementSize(configitemmap["sizeofelement"].toInt());
block->setSize(configitemmap["size"].toInt());
block->setOffset(configitemmap["offset"].toInt());
QList<QPair<QString,double> > parsedcalclist;
QVariantList calclist = configitemmap["calc"].toList();
for (int j=0;j<calclist.size();j++)
{
QVariantMap calcitemmap = calclist[j].toMap();
parsedcalclist.append(QPair<QString,double>(calcitemmap["type"].toString(),calcitemmap["value"].toDouble()));
}
block->setCalc(parsedcalclist);

//configitemmap["calc"];
block->setSizeOverride(configitemmap["sizeoverride"].toString());
bool ok = false;
Expand All @@ -198,7 +209,7 @@ FreeEmsComms::FreeEmsComms(QObject *parent) : EmsComms(parent)
{
if (!m_locIdToConfigListMap.contains(locidint))
{
m_locIdToConfigListMap[locidint] = QList<ConfigData*>();
m_locIdToConfigListMap[locidint] = QList<FEConfigData*>();
}
m_locIdToConfigListMap[locidint].append(block);
}
Expand Down Expand Up @@ -1797,9 +1808,9 @@ void FreeEmsComms::locationIdUpdate(unsigned short locationid)

if (m_locIdToConfigListMap.contains(updatelist[i]))
{
for (int i=0;i<m_locIdToConfigListMap[updatelist[i]].size();i++)
for (int j=0;j<m_locIdToConfigListMap[updatelist[i]].size();j++)
{
m_locIdToConfigListMap[updatelist[i]][i]->setData(emsData.getLocalRamBlock(updatelist[i]));
m_locIdToConfigListMap[updatelist[i]][j]->setData(emsData.getLocalFlashBlock(updatelist[i]));
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions plugins/freeems/freeemscomms.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
#include "ferawdata.h"
#include "packet.h"
#include "packetdecoder.h"
#include "feconfigdata.h"

class FreeEmsComms : public EmsComms
{
Expand Down Expand Up @@ -154,8 +155,8 @@ class FreeEmsComms : public EmsComms
QMap<unsigned short,Table2DData*> m_2dTableMap;
QMap<unsigned short,Table3DData*> m_3dTableMap;
QMap<unsigned short,RawData*> m_rawDataMap;
QMap<unsigned short,QList<ConfigData*> > m_locIdToConfigListMap;
QMap<QString,ConfigData*> m_configMap;
QMap<unsigned short,QList<FEConfigData*> > m_locIdToConfigListMap;
QMap<QString,FEConfigData*> m_configMap;
PacketDecoder *m_packetDecoder;
QMap<QString,QString> m_interrogationMetaDataMap;
void sendNextInterrogationPacket();
Expand Down

0 comments on commit 65d7ae9

Please sign in to comment.