Introduce DCMachineEvent ...
... this is an DC-Plugin internal data-structure which can be transformed to an ATBMachineEvent and sent to ISMAS. DCMachineEvent is in fact a couple ot DeviceController::State and a QString eventID. Thi eventID is necessary to send a state-reset to ISMAS. ISMAS needs same enventID for set- and reset Events.
This commit is contained in:
parent
0876fa229e
commit
612a932b9f
@ -92,7 +92,7 @@ bool DeviceControllerDiag::isOperatingState()
|
|||||||
return !this->_isErrorState;
|
return !this->_isErrorState;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSet<DeviceController::State> DeviceControllerDiag::getCurrentMachineState()
|
QSet<DCMachineEvent> DeviceControllerDiag::getCurrentMachineState()
|
||||||
{
|
{
|
||||||
return this->machineEventSet;
|
return this->machineEventSet;
|
||||||
}
|
}
|
||||||
@ -408,24 +408,21 @@ void DeviceControllerDiag::sub_componentAssessment()
|
|||||||
|
|
||||||
// compare machineEventSets
|
// compare machineEventSets
|
||||||
// New events: present in current but not previous
|
// New events: present in current but not previous
|
||||||
QSet<DeviceController::State> newEvents = this->machineEventSet - this->previousMachineEventSet;
|
QSet<DCMachineEvent> newEvents = this->machineEventSet - this->previousMachineEventSet;
|
||||||
|
|
||||||
// Reset events: present in previous but not current
|
// Reset events: present in previous but not current
|
||||||
QSet<DeviceController::State> resetEvents = this->previousMachineEventSet - this->machineEventSet;
|
QSet<DCMachineEvent> resetEvents = this->previousMachineEventSet - this->machineEventSet;
|
||||||
|
|
||||||
// Triggering Actions
|
// Triggering Actions
|
||||||
// Iterate through the results
|
// Iterate through the results
|
||||||
for (const DeviceController::State& event : newEvents) {
|
for (const DCMachineEvent& event : newEvents) {
|
||||||
private_sendDiagEvent(event, DeviceController::Action::SET); // New event detected
|
private_sendDiagEvent(event, DeviceController::Action::SET); // New event detected
|
||||||
}
|
}
|
||||||
|
|
||||||
// Proposal: send reset
|
// send reset
|
||||||
/*
|
for (const DCMachineEvent& event : resetEvents) {
|
||||||
for (const DeviceController::State& event : resetEvents) {
|
|
||||||
private_sendDiagEvent(event, DeviceController::Action::RESET); // Event no longer present
|
private_sendDiagEvent(event, DeviceController::Action::RESET); // Event no longer present
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// finish diag
|
// finish diag
|
||||||
@ -457,18 +454,26 @@ void DeviceControllerDiag::private_setDiagEvent(DeviceController::State result)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
machineEventSet.insert(result);
|
DCMachineEvent newState = DCMachineEvent(result, QUuid::createUuid().toString(QUuid::WithoutBraces).mid(0, 8));
|
||||||
|
|
||||||
|
machineEventSet.insert(newState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result, DeviceController::Action action)
|
|
||||||
{
|
|
||||||
QString eventId = QUuid::createUuid().toString(QUuid::WithoutBraces).mid(0, 8);
|
|
||||||
|
|
||||||
QString eventName = QMetaEnum::fromType<DeviceController::State>().valueToKey(result);;
|
/**
|
||||||
|
* @brief DeviceControllerDiag::private_sendDiagEvent
|
||||||
|
* @param result WXXX | EXXX | O000
|
||||||
|
* @param action SET|RESET
|
||||||
|
*/
|
||||||
|
void DeviceControllerDiag::private_sendDiagEvent(DCMachineEvent result, DeviceController::Action action)
|
||||||
|
{
|
||||||
|
QString eventId = result.eventId;
|
||||||
|
|
||||||
|
QString eventName = QMetaEnum::fromType<DeviceController::State>().valueToKey(result.state);
|
||||||
EVENT_CLASS eventClass = EVENT_CLASS::STATE;
|
EVENT_CLASS eventClass = EVENT_CLASS::STATE;
|
||||||
QString parameter;
|
QString parameter;
|
||||||
switch (result) {
|
switch (result.state) {
|
||||||
|
|
||||||
case DeviceController::State::INITIAL_STATE:
|
case DeviceController::State::INITIAL_STATE:
|
||||||
break;
|
break;
|
||||||
@ -612,7 +617,7 @@ void DeviceControllerDiag::private_sendDiagEvent(DeviceController::State result,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->lastState = result;
|
this->lastState = result.state;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Variant: send 'parameter' as JSON:
|
* Variant: send 'parameter' as JSON:
|
||||||
|
@ -72,6 +72,30 @@ namespace DeviceController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------- DCMachineEvent -----------------------------------------
|
||||||
|
|
||||||
|
class DCMachineEvent {
|
||||||
|
public:
|
||||||
|
DCMachineEvent() = default;
|
||||||
|
DCMachineEvent(DeviceController::State state, const QString& id) : state(state), eventId(id) {}
|
||||||
|
|
||||||
|
DeviceController::State state;
|
||||||
|
QString eventId;
|
||||||
|
|
||||||
|
// Equality operator (required for QSet)
|
||||||
|
bool operator==(const DCMachineEvent& other) const {
|
||||||
|
return (state == other.state);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hash function (required for QSet)
|
||||||
|
inline uint qHash(const DCMachineEvent& key, uint seed = 0) {
|
||||||
|
return qHash(static_cast<int>(key.state), seed);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------ DeviceControllerDiag --------------------------------------
|
||||||
|
|
||||||
class DeviceControllerDiag : public QObject
|
class DeviceControllerDiag : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -89,7 +113,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool isErrorState();
|
bool isErrorState();
|
||||||
bool isOperatingState();
|
bool isOperatingState();
|
||||||
QSet<DeviceController::State> getCurrentMachineState();
|
QSet<DCMachineEvent> getCurrentMachineState();
|
||||||
|
|
||||||
void setTimeout(int timeout);
|
void setTimeout(int timeout);
|
||||||
|
|
||||||
@ -129,8 +153,8 @@ private:
|
|||||||
int lastVoltage;
|
int lastVoltage;
|
||||||
|
|
||||||
DeviceController::State lastState;
|
DeviceController::State lastState;
|
||||||
QSet<DeviceController::State> machineEventSet;
|
QSet<DCMachineEvent> machineEventSet;
|
||||||
QSet<DeviceController::State> previousMachineEventSet;
|
QSet<DCMachineEvent> previousMachineEventSet;
|
||||||
bool _isErrorState;
|
bool _isErrorState;
|
||||||
|
|
||||||
PersistentData* pData;
|
PersistentData* pData;
|
||||||
@ -142,7 +166,7 @@ private slots:
|
|||||||
|
|
||||||
void private_startDiag(); // diag entry method
|
void private_startDiag(); // diag entry method
|
||||||
void private_setDiagEvent(DeviceController::State result);
|
void private_setDiagEvent(DeviceController::State result);
|
||||||
void private_sendDiagEvent(DeviceController::State result, DeviceController::Action action);
|
void private_sendDiagEvent(DCMachineEvent result, DeviceController::Action action);
|
||||||
|
|
||||||
void sys_superviseSystem();
|
void sys_superviseSystem();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user