More implementation of UDS code, bug fixes to UDS, addition of

progress bar for UDS
This commit is contained in:
Collin Kidder
2017-05-21 19:44:26 -04:00
parent 72589c7760
commit e3bb44f61b
5 changed files with 84 additions and 38 deletions
+16 -12
View File
@@ -122,6 +122,15 @@ QVector<CODE_STRUCT> UDS_NEG_RESPONSE =
{0x93, "VOLTAGE_LOW", "Cannot execute request until voltage is higher"},
};
UDS_MESSAGE::UDS_MESSAGE()
{
subFunc = 0;
service = 0;
subFuncLen = 1;
extended = false;
isErrorReply = false;
}
UDS_HANDLER* UDS_HANDLER::mInstance = NULL;
UDS_HANDLER* UDS_HANDLER::getInstance()
@@ -198,27 +207,22 @@ void UDS_HANDLER::setReception(bool mode)
}
}
void UDS_HANDLER::sendUDSFrame(int bus, int ID, int service, QVector<unsigned char> payload)
{
QVector<unsigned char> data;
if (bus < 0) return;
if (bus >= CANConManager::getInstance()->getNumBuses()) return;
if (service < 0 || service > 0xFF) return;
data.append(service);
data.append(payload);
ISOTP_HANDLER::getInstance()->sendISOTPFrame(bus, ID, data);
qDebug() << "Sent UDS service: " << getServiceShortDesc(service) << " on bus " << bus;
}
void UDS_HANDLER::sendUDSFrame(const UDS_MESSAGE &msg)
{
QVector<unsigned char> data;
if (msg.bus < 0) return;
if (msg.bus >= CANConManager::getInstance()->getNumBuses()) return;
if (msg.service < 0 || msg.service > 0xFF) return;
data.append(msg.service);
for (int b = msg.subFuncLen - 1; b >= 0; b--)
{
data.append((msg.subFunc >> (8 * b)) & 0xFF);
}
data.append(msg.data);
ISOTP_HANDLER::getInstance()->sendISOTPFrame(msg.bus, msg.ID, data);
qDebug() << "Sent UDS service: " << getServiceShortDesc(msg.service) << " on bus " << msg.bus;
}
+3 -1
View File
@@ -73,7 +73,10 @@ class UDS_MESSAGE: public ISOTP_MESSAGE
public:
int service;
int subFunc;
int subFuncLen;
bool isErrorReply;
UDS_MESSAGE();
};
class UDS_HANDLER : public QObject
@@ -85,7 +88,6 @@ public:
void setExtendedAddressing(bool mode);
static UDS_HANDLER* getInstance();
void setReception(bool mode); //set whether to accept and forward frames or not
void sendUDSFrame(int bus, int ID, int service, QVector<unsigned char> payload);
void sendUDSFrame(const UDS_MESSAGE &msg);
QString getServiceShortDesc(int service);
QString getServiceLongDesc(int service);