27 qDebug() <<
"endOfUtInitialize";
38 qDebug() <<
"m_validity deleted";
85 quint64 expirationTime;
86 quint32 validityDuration = 600;
92 quint16 repetitionDuration, repetitionInterval;
96 memset(&d, 0,
sizeof d);
103 if(expirationTime < m_paramGPS->timestamp())
131 qDebug() <<
"Unable to collect required data to fill management container";
141 qDebug() <<
"Unable to collect data to fill situation container";
152 qDebug() <<
"Unable to collect data to fill location container";
172 qDebug() <<
"Unable to collect data to fill alacarte container";
186 qDebug() <<
"Unable to encode" << rval.failed_type->name;
191 print_hexa((
unsigned char*)msg, (rval.encoded + 7) / 8);
194 qDebug() <<
"Unable to pass DENM to N&T";
214 if(repetitionDuration < validityDuration * 1000 && repetitionInterval < validityDuration * 1000)
225 qDebug() <<
"No repetitionDuration or repetitionInterval";
235 entry->moveToThread(entry->
m_thread);
237 qDebug() <<
"entry->m_thread->start()";
245 quint64 expirationTime;
253 memset(&d, 0,
sizeof d);
262 if(expirationTime < m_paramGPS->timestamp())
279 "not found in the triggered message table";
285 qint64 repetitionDuration = 0, repetitionInterval = 0;
288 repetitionDuration =
m_triggeredDENM.at(found)->T_RepetitionDuration();
313 qDebug() <<
"Unable to collect required data to fill management container";
323 qDebug() <<
"Unable to collect data to fill situation container";
338 qDebug() <<
"Unable to collect data to fill location container";
358 qDebug() <<
"Unable to collect data to fill alacarte container";
370 qDebug() <<
"Unable to encode" << rval.failed_type->name;
379 qDebug() <<
"Unable to pass DENM to N&T";
397 qDebug() <<
"repetitionDuration" << repetitionDuration <<
"repetitionInterval" << repetitionInterval;
408 m_triggeredDENM[found]->m_repetitionDuration->m_T_RepetitionDuration_timer.start();
410 QTimer::singleShot(
m_triggeredDENM[found]->T_RepetitionDuration(),
m_triggeredDENM[found]->m_repetitionDuration, SLOT(endOfT_RepetitionDuration()));
414 else if(repetitionDuration > 0 && repetitionInterval > 0)
416 m_triggeredDENM[found]->setT_RepetitionDuration(repetitionDuration * 1000);
418 m_triggeredDENM[found]->m_repetitionDuration->m_T_RepetitionDuration_timer.start();
426 qDebug() <<
"END of Update";
437 qDebug() <<
"\n\n\n\n\nCancel\n\n\n\n\n";
441 qInfo() <<
"There are" <<
m_triggeredDENM.size() <<
"DENM in the triggeredDENM:";
446 "not found in the triggered message table";
450 "found in the triggered message table";
453 qDebug() <<
"DENM not active";
479 qInfo() <<
"Creating Canceled DENM";
480 memset(&denmToSend, 0,
sizeof denmToSend);
492 qInfo() <<
"Encoding Canceled DENM";
503 qInfo() <<
"Passing DENM to N&T";
506 qDebug() <<
"Unable to pass DENM to N&T";
511 qDebug() <<
"DENM cancelled";
520 dr.
payload = QByteArray(msg, denmLength);
525 qDebug() <<
"error " << foo;
534 qDebug() <<
"Discarding DENM" << found;
539 "not found in the triggered message table";
542 qInfo() <<
"Setting state CANCELED";
544 qInfo() <<
"Removing DENM";
555 QNetworkDatagram datagram;
557 datagram.setDestination(QHostAddress::LocalHost,
m_appPort);
558 datagram.setData(termination.
toBin());
559 qInfo() <<
"Sending termination indication to" <<
m_appPort;
560 socket.writeDatagram(datagram);
561 qInfo() <<
"Termination indication sent";
566 qDebug() <<
"locking repeatDENMFromTriggeredTable";
569 qDebug() <<
"Repeating DENM" << found;
574 "not found in the triggered message table";
603 qDebug() <<
"Unable to pass DENM to N&T";
DestinationAreaData destinationArea() const
destinationArea Destination area getter.
#define ASN_SEQUENCE_ADD(headptr, ptr)
ParameterConfiguration * m_paramConf
TrafficClassData * trafficClass() const
trafficClass Traffic class getter.
gnDataRequest_t structure is the GN data request definition.
denTriggeringManagement(FakeGPSProvider *gps, FakeApplicationProvider *appli, ParameterDENM *denm, GeoNet *gn, ParameterConfiguration *conf, FakeCANProvider *can, ParameterNetwork *network)
denTriggeringManagement denTriggeringManagement constructor.
#define itsGnDefaultTrafficClass
struct AlacarteContainer * alacarte
void setDestinationArea(DestinationAreaData d)
setDestinationArea DENM's destination area setter.
quint32 * validityDuration() const
validityDuration Validity duration getter.
ActionID_t toASN()
toASN C style encoding.
TrafficClassData trafficClass() const
trafficClass Traffic class getter.
struct asn_TYPE_descriptor_s * failed_type
DecentralizedEnvironmentalNotificationMessage_t denm
void appDenmResult(QByteArray)
appDenmResult Signal used to send result to the Application layer.
void setSequenceNumberSignal(quint16)
setSequenceNumberSignal Signal used when local sequenceNumber changes.
void AppDENM_cancellation(AppDenmTerminationData termination, ActionID_t actionID)
AppDENM_cancellation Cancels a DENM.
quint16 * transmissionInterval() const
transmissionInterval Transmission interval getter.
bool fill_AlacarteContainer(AppDenmTriggerData data, AlacarteContainer_t *alacarte)
fill_AlacarteContainer Fills the AlacarteContainer.
StationID_t originatingStationID
quint16 * transmissionInterval() const
transmissionInterval Transmission interval getter.
void setT_Repetition(qint32 t)
setT_Repetition T_Repetition setter.
struct SituationContainer * situation
void discardDENMFromTriggeredTable(ActionID_t)
discardDENMFromTriggeredTable Slot used to discard DENM from message table.
bool fill_LocationContainer(AppDenmTriggerData data, LocationContainer_t *location)
fill_LocationContainer Fills the LocationContainer.
void print_hexa(const unsigned char *msg, int l, FILE *stream=stdout)
print_hexa Print a byte array.
void setT_RepetitionDuration(qint32 t)
setT_RepetitionDuration T_RepetitionDuration setter.
void utInitialize()
utInitialize Initializes the DEN Triggering Management.
QByteArray * location() const
location Location container getter.
gnDataRequest_t gnDataRequestFromAppDenmTriggerData(AppDenmTriggerData data, ParameterGPS gps)
gnDataRequestFromAppDenmTriggerData Generate a GN Data Request from an AppDenmTriggerData.
void setActionID(ActionID_t a)
setActionID DENM's ActionID setter.
ParameterDENM * m_paramDENM
QByteArray * situation() const
situation Situation container getter.
ActionIDData actionID() const
actionID ActionID getter.
quint32 * repetitionDuration() const
repetitionDuration Repetition duration getter.
quint64 timestamp()
timestamp Timestamp getter.
SequenceNumber_t sequenceNumber
void AppDENM_trigger(QByteArray datagram)
AppDENM_trigger Triggers a DENM.
QByteArray toBin()
toBin Encode an AppDenmTerminationIndication into a byte array.
QVector< denMessageTableSource * > m_triggeredDENM
bool fill_SituationContainer(AppDenmTriggerData data, SituationContainer_t *situation)
fill_SituationContainer Fills the SituationContainer.
ActionID_t defaultActionID(ParameterApplication *appli, SequenceNumber_t sequenceNumber)
defaultActionID Generate a default ActionID.
int asn_long2INTEGER(INTEGER_t *i, long l)
quint8 toInt()
toInt TrafficClassData encoder in a byte.
void setStatus(int s)
setStatus DENM's status setter.
QByteArray * location() const
location Location container getter.
SequenceNumber_t m_sequenceNumber
quint16 sequenceNumber() const
sequenceNumber Sequence number getter.
TimestampIts_t referenceTime
QByteArray toBin()
toBin Encode the AppDenmResultData into a byte array.
DestinationAreaData destinationArea() const
destinationArea Destination area getter.
FakeGPSProvider * m_paramGPS
quint16 internalPort(QString service)
internalPort Get the internal BTP port from service name.
void setT_O_Validity(qint64 t)
setT_O_Validity T_O_Validity setter.
ParameterGPS & data()
data GPS data getter.
DEN Triggering Management.
ActionID_t assignUnusedActionID(ParameterApplication *appli, ActionID_t currentActionID)
assignUnusedActionID Assign an unused ActionID.
quint64 calculate_T_O_Validity(quint64 detectionTime, quint32 validityDuration)
calculate_T_O_Validity Compute the T_O_Validity timer.
bool fill_ManagementContainer(AppDenmTriggerData data, ManagementContainer_t *management, ParameterApplication *appli, ParameterGPS gps)
fill_ManagementContainer Fills the ManagementContainer.
TimestampIts_t detectionTime
void killTriggeredThreads()
killTriggeredThreads Kills the triggered threads.
FakeApplicationProvider * m_paramAppli
enum AppDenmResultData::failureNotification_enum e_failureNotification
The e_failureNotification enum defines the success or failure code.
DestinationAreaData destinationArea() const
destinationArea Destination area getter.
void repeatDENMFromTriggeredTable(ActionID_t)
repeatDENMFromTriggeredTable Slot used to repeat a DENM.
void setSequenceNumberSlot(quint16)
setSequenceNumberSlot Slot used to change local sequenceNumber.
TransmissionInterval_t * transmissionInterval
FakeCANProvider * m_paramCan
QByteArray * alacarte() const
alacarte Alacarte container getter.
quint64 eventUpdateDetectionTime() const
eventUpdateDetectionTime Detection time getter.
asn_enc_rval_t uper_encode_to_buffer(struct asn_TYPE_descriptor_s *type_descriptor, void *struct_ptr, void *buffer, size_t buffer_size)
int asn_fprint(FILE *stream, asn_TYPE_descriptor_t *td, const void *struct_ptr)
QByteArray * alacarte() const
alacarte Alacarte container getter.
StationID_t stationID() const
stationID Station ID getter.
struct LocationContainer * location
ParameterApplication & data()
data Returns the vehicle status.
void AppDENM_update(QByteArray datagram)
AppDENM_update Updates a DENM.
void appendTriggeredDenm(denMessageTableSource *)
appendTriggeredDenm Slot used when a DENM is appended to the message table.
quint32 originatingStationID() const
originatingStationID Originating station ID getter.
ManagementContainer_t management
QByteArray * situation() const
situation Situation container getter.
int send(gnDataRequest_t gnDR)
send Creates the BTP and then select the correct packet send option.
asn_TYPE_descriptor_t asn_DEF_DENM
quint16 * repetitionInterval() const
repetitionInterval Repetition interval getter.
void AppDENM_terminationIndication(ActionID actionID)
AppDENM_terminationIndication Indication of the termination of a DENM.
ItsPduHeader_t fill_ItsPduHeader(StationID_t stationID)
fill_ItsPduHeader Fills the ItsPduHeader.
quint32 * repetitionDuration() const
repetitionDuration Repetition duration getter.
void AppDENM_result(ActionID_t actionID, bool success, AppDenmResultData::e_failureNotification failureNotification, DENM_t *denm)
AppDENM_result Result of request.
bool PassDenmToNetworkAndTransportLayerTrigger(AppDenmTriggerData data, char *msg, int denmLength)
PassDenmToNetworkAndTransportLayerTrigger Pass DENM to the N&T layer.
long TransmissionInterval_t
void setDENM(DENM_t d)
setDENM DENM setter.
QMutex * m_mutexTriggering
int haveDENM(ActionID_t actionID, QVector< denMessageTableSource *> table)
haveDENM Check if the DENM exists in the denMessageTableSource
void setTrafficClass(quint8 t)
setTrafficClass DENM's traffic class setter.
SituationContainer_t setSituationContainer(SituationContainer_t s)
setSituationContainer SituationContainer copy.