X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fo1%2Fves%2FVesCommonHeader.cpp;h=ce7214ddd0f2c5780bb87ecd16b534bf15f703b7;hb=e850787b10d1f3882e2501e0eef12737b12d078f;hp=3c4b1f95b9dc298e67fb2d6022b1cee44b64d3ee;hpb=093afd2e854d73d697233396fb9c74ed67bdd615;p=o-du%2Fl2.git diff --git a/src/o1/ves/VesCommonHeader.cpp b/src/o1/ves/VesCommonHeader.cpp index 3c4b1f95b..ce7214ddd 100644 --- a/src/o1/ves/VesCommonHeader.cpp +++ b/src/o1/ves/VesCommonHeader.cpp @@ -30,6 +30,8 @@ static uint16_t seqNo = 0; +#define MAX_TIME_STR 35 + /******************************************************************* * * @brief provide next sequence number of VES event @@ -103,11 +105,14 @@ string VesCommonHeader::getEventTypeToStr() case VesEventType::PM_NOTIFICATION: str = "pmNotification"; break; + case VesEventType::PM_SLICE: + str = "measurement"; + break; case VesEventType::HEARTBEAT: str = "heartbeat"; break; default: - O1_LOG("O1 VES : VES msg Type is not avilable\n"); + O1_LOG("\nO1 VesCommonHeader : VES msg Type not supported"); break; } return str; @@ -134,6 +139,9 @@ string VesCommonHeader::getEventId() { /*Currently PNF_REGISTRATION only supported. This function must be updated in later releases*/ + std::ostringstream oss; + oss << mLastEpochTime; + string stringEpochTime = oss.str().substr(0, 10); string evntId = ""; switch(mEventType) { @@ -141,15 +149,20 @@ string VesCommonHeader::getEventId() evntId = getSourceName() + "_" + MODEL_NUMBER_007_DEV; break; case VesEventType::HEARTBEAT: - evntId = getEventTypeToStr() + "_" + getCurrentTime(); + evntId = getEventTypeToStr() + "_" + formatTime(getCurrentTime()); break; + case VesEventType::PM_SLICE: + evntId = "_" + stringEpochTime + "_" + "PM1min"; + break; + case VesEventType::FAULT_NOTIFICATION: + evntId = getSourceName() + "_" + MODEL_NUMBER_007_DEV; + break; default: - O1_LOG("O1 VES : this VES msg Type support in getEventId is \ -not available\n"); + O1_LOG("\nO1 VesCommonHeader : this VES msg Type support in getEventId is \ +not available"); break; } return evntId; - } /******************************************************************* @@ -181,11 +194,17 @@ string VesCommonHeader::getEventType() evntType = EVENT_TYPE_5G; break; case VesEventType::HEARTBEAT: - evntType = EVENT_TYPE_ORAN_COMPONENET; + evntType = EVENT_TYPE_ORAN_COMPONENT; + break; + case VesEventType::PM_SLICE: + evntType = EVENT_TYPE_ORAN_COMPONENT_PM; break; + case VesEventType::FAULT_NOTIFICATION: + evntType = EVENT_TYPE_5G; + break; default: - O1_LOG("O1 VES : this VES msg Type support in getEvenType is \ -not available\n"); + O1_LOG("\nO1 VesCommonHeader : this VES msg Type support in getEvenType is \ +not available"); break; } return evntType; @@ -222,9 +241,15 @@ string VesCommonHeader::getPriority() case VesEventType::HEARTBEAT: evntId = PRIORITY_LOW; break; + case VesEventType::PM_SLICE: + evntId = PRIORITY_LOW ; + break; + case VesEventType::FAULT_NOTIFICATION: + evntId = PRIORITY_LOW ; + break; default: - O1_LOG("O1 VES : This VES msg Type support in getPriority is \ -not available\n"); + O1_LOG("\nO1 VesCommonHeader : This VES msg Type support in getPriority is \ +not available"); break; } return evntId; @@ -260,11 +285,17 @@ string VesCommonHeader::getEventName() evntName = getEventTypeToStr() + "_" + EVENT_TYPE_5G; break; case VesEventType::HEARTBEAT: - evntName = getEventTypeToStr() + "_" + EVENT_TYPE_ORAN_COMPONENET; + evntName = getEventTypeToStr() + "_" + EVENT_TYPE_ORAN_COMPONENT; + break; + case VesEventType::PM_SLICE: + evntName = getEventTypeToStr() + "_" + EVENT_TYPE_ORAN_COMPONENT_PM; break; + case VesEventType::FAULT_NOTIFICATION: + evntName = getEventTypeToStr() + "_" + EVENT_TYPE_5G; + break; default: - O1_LOG("O1 VES : This VES msg Type support in getEventName is \ -not available\n"); + O1_LOG("\nO1 VesCommonHeader : This VES msg Type support in getEventName is \ + not available"); break; } return evntName; @@ -288,8 +319,8 @@ not available\n"); string VesCommonHeader::getReportingEntityName() { - /*Currently PNF_REGISTRATION only supported. This function must be updated - in later releases*/ + /*Currently PNF_REGISTRATION and PM_SLICE are only supported. + This function must be updated in later releases*/ string evntName = ""; switch(mEventType) @@ -297,9 +328,15 @@ string VesCommonHeader::getReportingEntityName() case VesEventType::PNF_REGISTRATION: evntName = getSourceName(); break; + case VesEventType::PM_SLICE: + evntName = PM_REPORTING_ENTITY; + break; + case VesEventType::FAULT_NOTIFICATION: + evntName = getSourceName(); + break; default: - O1_LOG("O1 VES : This VES msg Type support in \ -getReportingEntityName is not available\n"); + O1_LOG("\nO1 VesCommonHeader : This VES msg Type support in \ + getReportingEntityName is not available"); break; } return evntName; @@ -323,8 +360,6 @@ getReportingEntityName is not available\n"); string VesCommonHeader::getSourceName() { - /*Currently PNF_REGISTRATION only supported. This function need to be updated - in later releases*/ return ODU_HIGH; } @@ -347,8 +382,6 @@ string VesCommonHeader::getSourceName() string VesCommonHeader::getNamingCode() { - /*Currently PNF_REGISTRATION only supported. This function need to be updated - in later releases*/ return NAMING_CODE_ODU; } @@ -380,28 +413,50 @@ uint64_t VesCommonHeader::getEpochTime() /******************************************************************* * - * @brief get current date-time + * @brief get current time * * @details * * Function : getCurrentTime * * Functionality: - * - get current date-time + * - get current time * * @params[in] void - * @return time-date - success + * @return time - success * * ****************************************************************/ -string VesCommonHeader::getCurrentTime() +time_t VesCommonHeader::getCurrentTime() { - time_t t = time(0); + time_t t; + time(&t); + return t; +} + +/******************************************************************* + * + * @brief formats the current time like: + * "Thu, 14 Oct 2021 03:15:00 +0000" + * + * @details + * + * Function : formatTime + * + * Functionality: + * - formats current time + * + * @params[in] void + * @return formatted time - success + * + * ****************************************************************/ + +std::string VesCommonHeader::formatTime(time_t t) { std::ostringstream oss; - char *dateStr; - strftime(dateStr, MAX_TIME_STR, "%F", localtime(&t)); - oss << dateStr; - return oss.str(); + char dateStr[MAX_TIME_STR]; + strftime(dateStr, sizeof(dateStr), "%a, %d %b %Y %T %z", gmtime(&t)); + oss << dateStr; + return oss.str(); } /******************************************************************* @@ -424,7 +479,6 @@ string VesCommonHeader::getCurrentTime() bool VesCommonHeader::prepare(cJSON *commonHeader, \ VesEventType type) { - O1_LOG("O1 VES : createCommonHeader fuction started\n"); bool ret=true; string typeStr; string evntId; @@ -432,8 +486,14 @@ bool VesCommonHeader::prepare(cJSON *commonHeader, \ mEventType = type; seqNo=0; nextSequenceNo(); //update the sequence number for next message + //local utility variables: + time_t intervalStartTime = getCurrentTime(); + time_t intervalEndTime = intervalStartTime+60; /*adding 1 min to system time*/ + uint64_t startEpochTime = getEpochTime(); + mLastEpochTime = startEpochTime+60*100000; /*adding 1 min to epoch time*/ + if(JsonHelper::addNodeToObject(commonHeader, "domain", \ - getEventTypeToStr().c_str()) == 0) { + getEventTypeToStr().c_str()) == 0) { ret=false; } else if ( JsonHelper::addNodeToObject(commonHeader, "eventId", \ @@ -451,7 +511,47 @@ bool VesCommonHeader::prepare(cJSON *commonHeader, \ { ret = false; } - else if(JsonHelper::addNodeToObject(commonHeader, "sequence", \ + + if (mEventType == VesEventType::PM_SLICE) + { + cJSON *internalHeaderFields = JsonHelper::createNode(); + if(internalHeaderFields == 0) + { + ret = false; + } + else if(JsonHelper::addJsonNodeToObject(commonHeader, "internalHeaderFields", \ + internalHeaderFields) == 0) + { + ret = false; + } + else if(JsonHelper::addNodeToObject(internalHeaderFields, "intervalEndTime", \ + formatTime(intervalEndTime).c_str()) == 0) + { + ret = false; + } + else if(JsonHelper::addNodeToObject(internalHeaderFields, "intervalStartTime", \ + formatTime(intervalStartTime).c_str()) == 0) + { + ret = false; + } + else if(JsonHelper::addNodeToObject(commonHeader, "nfcNamingCode", \ + "") == 0) + { + ret = false; + } + else if(JsonHelper::addNodeToObject(commonHeader, "stndDefinedNamespace", \ + "") == 0) + { + ret = false; + } + } + + if (mEventType == VesEventType::PNF_REGISTRATION) + { + + } + + if(JsonHelper::addNodeToObject(commonHeader, "sequence", \ getSequenceNo()) == 0) { ret = false; @@ -471,7 +571,7 @@ bool VesCommonHeader::prepare(cJSON *commonHeader, \ { ret = false; } - else if(JsonHelper::addNodeToObject(commonHeader, "sourceId", \ + else if(JsonHelper::addNodeToObject(commonHeader, "sourceId", \ "") == 0) { ret = false; @@ -481,18 +581,19 @@ bool VesCommonHeader::prepare(cJSON *commonHeader, \ { ret = false; } - else if(JsonHelper::addNodeToObject(commonHeader, "startEpochMicrosec", \ - (double) getEpochTime()) == 0) + else if(JsonHelper::addNodeToObject(commonHeader, "startEpochMicrosec", \ + (double)startEpochTime) == 0) { ret = false; } else if(JsonHelper::addNodeToObject(commonHeader, "lastEpochMicrosec", \ - (double) getEpochTime()) == 0) + (double)mLastEpochTime) == 0) { ret = false; } else if(JsonHelper::addNodeToObject(commonHeader, "nfNamingCode", \ - getNamingCode().c_str()) == 0) + (type==VesEventType::PNF_REGISTRATION) ? \ + getNamingCode().c_str() : "") == 0) { ret = false; } @@ -501,27 +602,39 @@ bool VesCommonHeader::prepare(cJSON *commonHeader, \ { ret = false; } - else if(JsonHelper::addNodeToObject(commonHeader, "timeZoneOffset", \ + else if(JsonHelper::addNodeToObject(commonHeader, "timeZoneOffset", \ TIME_ZONE_00_00) == 0) { ret = false; } - else if(JsonHelper::addNodeToObject(commonHeader, "version", \ - VERSION_4_0_1) == 0) + + if (mEventType == VesEventType::PM_SLICE) { - ret = false; + if(JsonHelper::addNodeToObject(commonHeader, "version", \ + VERSION_4_1) == 0) + { + ret = false; + } + } + else + { + if(JsonHelper::addNodeToObject(commonHeader, "version", \ + VERSION_4_0_1) == 0) + { + ret = false; + } } - else if(JsonHelper::addNodeToObject(commonHeader, "vesEventListenerVersion", \ + + if(JsonHelper::addNodeToObject(commonHeader, "vesEventListenerVersion", \ VES_EVENT_LISTENER_7_2_1) == 0) { ret = false; } else { - O1_LOG("O1 VES : VES common Header prepared successfully \n"); + O1_LOG("\nO1 VesCommonHeader : VES common Header prepared"); } return ret; - } /**********************************************************************