X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=e2ap%2Fpkg%2Fe2ap%2Fmsg_e2ap.go;h=35711a6fb4a9939ad5c8762a82f0a2933ca00e10;hb=refs%2Fheads%2Fe2ap-v02.00;hp=a7edc741a0df8c128f087864ae9985a89fe5b0e1;hpb=ff8dccd02d76eebfccc0b509ce0b42a2c1760e12;p=ric-plt%2Fsubmgr.git diff --git a/e2ap/pkg/e2ap/msg_e2ap.go b/e2ap/pkg/e2ap/msg_e2ap.go index a7edc74..35711a6 100644 --- a/e2ap/pkg/e2ap/msg_e2ap.go +++ b/e2ap/pkg/e2ap/msg_e2ap.go @@ -27,136 +27,104 @@ import ( //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- - -// E2AP messages -// Initiating message -const E2AP_RICSubscriptionRequest uint64 = 1 -const E2AP_RICSubscriptionDeleteRequest uint64 = 2 - -// const E2AP_RICServiceUpdate uint64 = 3 -// const E2AP_RICControlRequest uint64 = 4 -// -// //const E2AP_X2SetupRequest uint64 = 5; -// const E2AP_ENDCX2SetupRequest uint64 = 6 -// const E2AP_ResourceStatusRequest uint64 = 7 -// const E2AP_ENBConfigurationUpdate uint64 = 8 -// const E2AP_ENDCConfigurationUpdate uint64 = 9 -// const E2AP_ResetRequest uint64 = 10 -const E2AP_RICIndication uint64 = 11 - -// const E2AP_RICServiceQuery uint64 = 12 -// const E2AP_LoadInformation uint64 = 13 -// const E2AP_GNBStatusIndication uint64 = 14 -// const E2AP_ResourceStatusUpdate uint64 = 15 -// const E2AP_ErrorIndication uint64 = 16 -// -// // Successful outcome -const E2AP_RICSubscriptionResponse uint64 = 1 -const E2AP_RICSubscriptionDeleteResponse uint64 = 2 - -// const E2AP_RICserviceUpdateAcknowledge uint64 = 3 -// const E2AP_RICcontrolAcknowledge uint64 = 4 -// -// //const E2AP_X2SetupResponse uint64 = 5; -// const E2AP_ENDCX2SetupResponse uint64 = 6 -// const E2AP_ResourceStatusResponse uint64 = 7 -// const E2AP_ENBConfigurationUpdateAcknowledge uint64 = 8 -// const E2AP_ENDCConfigurationUpdateAcknowledge uint64 = 9 -// const E2AP_ResetResponse uint64 = 10 -// -// // Unsuccessful outcome -const E2AP_RICSubscriptionFailure uint64 = 1 -const E2AP_RICSubscriptionDeleteFailure uint64 = 2 - -// const E2AP_RICserviceUpdateFailure uint64 = 3 -// const E2AP_RICcontrolFailure uint64 = 4 -// -// //const E2AP_X2SetupFailure uint64 = 5; -// const E2AP_ENDCX2SetupFailure uint64 = 6 -// const E2AP_ResourceStatusFailure uint64 = 7 -// const E2AP_ENBConfigurationUpdateFailure uint64 = 8 -// const E2AP_ENDCConfigurationUpdateFailure uint64 = 9 -// - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -const E2AP_IndicationTypeReport uint64 = 0 -const E2AP_IndicationTypeInsert uint64 = 1 - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -const E2AP_ActionTypeReport uint64 = 0 -const E2AP_ActionTypeInsert uint64 = 1 -const E2AP_ActionTypePolicy uint64 = 2 +const ( + E2AP_InitiatingMessage uint64 = 1 + E2AP_SuccessfulOutcome uint64 = 2 + E2AP_UnsuccessfulOutcome uint64 = 3 +) //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -const E2AP_SubSeqActionTypeContinue uint64 = 0 -const E2AP_SubSeqActionTypeWait uint64 = 1 +// E2AP messages +// Initiating message +const ( + E2AP_RICSubscriptionRequest uint64 = 1 + E2AP_RICSubscriptionDeleteRequest uint64 = 2 + + // E2AP_RICServiceUpdate uint64 = 3 + // E2AP_RICControlRequest uint64 = 4 + // + // //E2AP_X2SetupRequest uint64 = 5; + // E2AP_ENDCX2SetupRequest uint64 = 6 + // E2AP_ResourceStatusRequest uint64 = 7 + // E2AP_ENBConfigurationUpdate uint64 = 8 + // E2AP_ENDCConfigurationUpdate uint64 = 9 + // E2AP_ResetRequest uint64 = 10 + // E2AP_RICIndication uint64 = 11 + + // E2AP_RICServiceQuery uint64 = 12 + // E2AP_LoadInformation uint64 = 13 + // E2AP_GNBStatusIndication uint64 = 14 + // E2AP_ResourceStatusUpdate uint64 = 15 + // E2AP_ErrorIndication uint64 = 16 + // +) -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -const E2AP_TimeToWaitZero uint64 = 0 -const E2AP_TimeToWaitW1ms uint64 = 1 -const E2AP_TimeToWaitW2ms uint64 = 2 -const E2AP_TimeToWaitW5ms uint64 = 3 -const E2AP_TimeToWaitW10ms uint64 = 4 -const E2AP_TimeToWaitW20ms uint64 = 4 -const E2AP_TimeToWaitW30ms uint64 = 5 -const E2AP_TimeToWaitW40ms uint64 = 6 -const E2AP_TimeToWaitW50ms uint64 = 7 -const E2AP_TimeToWaitW100ms uint64 = 8 -const E2AP_TimeToWaitW200ms uint64 = 9 -const E2AP_TimeToWaitW500ms uint64 = 10 -const E2AP_TimeToWaitW1s uint64 = 11 -const E2AP_TimeToWaitW2s uint64 = 12 -const E2AP_TimeToWaitW5s uint64 = 13 -const E2AP_TimeToWaitW10s uint64 = 14 -const E2AP_TimeToWaitW20s uint64 = 15 -const E2AP_TimeToWaitW60 uint64 = 16 +// E2AP messages +// Successful outcome +const ( + E2AP_RICSubscriptionResponse uint64 = 1 + E2AP_RICSubscriptionDeleteResponse uint64 = 2 + + // E2AP_RICserviceUpdateAcknowledge uint64 = 3 + // E2AP_RICcontrolAcknowledge uint64 = 4 + // + // //E2AP_X2SetupResponse uint64 = 5; + // E2AP_ENDCX2SetupResponse uint64 = 6 + // E2AP_ResourceStatusResponse uint64 = 7 + // E2AP_ENBConfigurationUpdateAcknowledge uint64 = 8 + // E2AP_ENDCConfigurationUpdateAcknowledge uint64 = 9 + // E2AP_ResetResponse uint64 = 10 + // +) -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -const E2AP_InterfaceDirectionIncoming uint32 = 0 -const E2AP_InterfaceDirectionOutgoing uint32 = 1 +// E2AP messages +// Unsuccessful outcome +const ( + E2AP_RICSubscriptionFailure uint64 = 1 + E2AP_RICSubscriptionDeleteFailure uint64 = 2 + + // E2AP_RICserviceUpdateFailure uint64 = 3 + // E2AP_RICcontrolFailure uint64 = 4 + // + // //E2AP_X2SetupFailure uint64 = 5; + // E2AP_ENDCX2SetupFailure uint64 = 6 + // E2AP_ResourceStatusFailure uint64 = 7 + // E2AP_ENBConfigurationUpdateFailure uint64 = 8 + // E2AP_ENDCConfigurationUpdateFailure uint64 = 9 + // +) //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -const E2AP_CriticalityReject uint8 = 0 -const E2AP_CriticalityIgnore uint8 = 1 -const E2AP_CriticalityNotify uint8 = 2 +type PackedData struct { + Buf []byte +} //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -const E2AP_ENBIDMacroPBits20 uint8 = 20 -const E2AP_ENBIDHomeBits28 uint8 = 28 -const E2AP_ENBIDShortMacroits18 uint8 = 18 -const E2AP_ENBIDlongMacroBits21 uint8 = 21 +type MessageInfo struct { + MsgType uint64 + MsgId uint64 +} -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -const E2AP_InitiatingMessage uint64 = 1 -const E2AP_SuccessfulOutcome uint64 = 2 -const E2AP_UnsuccessfulOutcome uint64 = 3 +func (msgInfo *MessageInfo) String() string { + return "msginfo(" + strconv.FormatUint((uint64)(msgInfo.MsgType), 10) + string(":") + strconv.FormatUint((uint64)(msgInfo.MsgId), 10) + ")" +} //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- type RequestId struct { - Id uint32 - Seq uint32 + Id uint32 //RequestorId + InstanceId uint32 //Same as SubId in many place in the code. Name changed in E2 spec SubId -> InstanceId } func (rid *RequestId) String() string { - return strconv.FormatUint((uint64)(rid.Id), 10) + string(":") + strconv.FormatUint((uint64)(rid.Seq), 10) + return strconv.FormatUint((uint64)(rid.Id), 10) + string(":") + strconv.FormatUint((uint64)(rid.InstanceId), 10) } //----------------------------------------------------------------------------- @@ -167,6 +135,14 @@ type FunctionId uint16 //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- + +const ( + E2AP_ENBIDMacroPBits20 uint8 = 20 + E2AP_ENBIDHomeBits28 uint8 = 28 + E2AP_ENBIDShortMacroits18 uint8 = 18 + E2AP_ENBIDlongMacroBits21 uint8 = 21 +) + type NodeId struct { Bits uint8 Id uint32 @@ -181,7 +157,7 @@ func (nid *NodeId) String() string { //----------------------------------------------------------------------------- type GlobalNodeId struct { Present bool - PlmnIdentity conv.PlmnIdentity + PlmnIdentity conv.PlmnIdentityTbcd NodeId NodeId } @@ -200,11 +176,14 @@ type InterfaceId struct { //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- + +const ( + E2AP_InterfaceDirectionIncoming uint32 = 0 + E2AP_InterfaceDirectionOutgoing uint32 = 1 +) + type EventTriggerDefinition struct { - InterfaceId - InterfaceDirection uint32 - ProcedureCode uint32 - TypeOfMessage uint64 + Data OctetString } /* @@ -216,19 +195,82 @@ type CallProcessId struct { } */ +type ActionDefinitionChoice struct { + Data OctetString +} + //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -type ActionDefinition struct { - Present bool - StyleId uint64 - ParamId uint32 - //ParamValue +type BitString struct { + UnusedBits uint8 + Length uint64 + Data []uint8 } //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- +type OctetString struct { + Length uint64 + Data []uint8 +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +const ( + E2AP_SubSeqActionTypeContinue uint64 = 0 + E2AP_SubSeqActionTypeWait uint64 = 1 +) + +var E2AP_SubSeqActionTypeStrMap = map[string]uint64{ + "continue": E2AP_SubSeqActionTypeContinue, + "wait": E2AP_SubSeqActionTypeWait, +} + +const ( + E2AP_TimeToWaitZero uint64 = 0 + E2AP_TimeToWaitW1ms uint64 = 1 + E2AP_TimeToWaitW2ms uint64 = 2 + E2AP_TimeToWaitW5ms uint64 = 3 + E2AP_TimeToWaitW10ms uint64 = 4 + E2AP_TimeToWaitW20ms uint64 = 5 + E2AP_TimeToWaitW30ms uint64 = 6 + E2AP_TimeToWaitW40ms uint64 = 7 + E2AP_TimeToWaitW50ms uint64 = 8 + E2AP_TimeToWaitW100ms uint64 = 9 + E2AP_TimeToWaitW200ms uint64 = 10 + E2AP_TimeToWaitW500ms uint64 = 11 + E2AP_TimeToWaitW1s uint64 = 12 + E2AP_TimeToWaitW2s uint64 = 13 + E2AP_TimeToWaitW5s uint64 = 14 + E2AP_TimeToWaitW10s uint64 = 15 + E2AP_TimeToWaitW20s uint64 = 16 + E2AP_TimeToWaitW60 uint64 = 17 +) + +var E2AP_TimeToWaitStrMap = map[string]uint64{ + "zero": E2AP_TimeToWaitZero, + "w1ms": E2AP_TimeToWaitW1ms, + "w2ms": E2AP_TimeToWaitW2ms, + "w5ms": E2AP_TimeToWaitW5ms, + "w10ms": E2AP_TimeToWaitW10ms, + "w20ms": E2AP_TimeToWaitW20ms, + "w30ms": E2AP_TimeToWaitW30ms, + "w40ms": E2AP_TimeToWaitW40ms, + "w50ms": E2AP_TimeToWaitW50ms, + "w100ms": E2AP_TimeToWaitW100ms, + "w200ms": E2AP_TimeToWaitW200ms, + "w500ms": E2AP_TimeToWaitW500ms, + "w1s": E2AP_TimeToWaitW1s, + "w2s": E2AP_TimeToWaitW2s, + "w5s": E2AP_TimeToWaitW5s, + "w10s": E2AP_TimeToWaitW10s, + "w20s": E2AP_TimeToWaitW20s, + "w60s": E2AP_TimeToWaitW60, +} + type SubsequentAction struct { Present bool Type uint64 @@ -238,19 +280,63 @@ type SubsequentAction struct { //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- + +const ( + E2AP_ActionTypeReport uint64 = 0 + E2AP_ActionTypeInsert uint64 = 1 + E2AP_ActionTypePolicy uint64 = 2 + E2AP_ActionTypeInvalid uint64 = 99 // For RIC internal usage only +) + +var E2AP_ActionTypeStrMap = map[string]uint64{ + "report": E2AP_ActionTypeReport, + "insert": E2AP_ActionTypeInsert, + "policy": E2AP_ActionTypePolicy, +} + type ActionToBeSetupItem struct { - ActionId uint64 - ActionType uint64 - ActionDefinition + ActionId uint64 + ActionType uint64 + RicActionDefinitionPresent bool + ActionDefinitionChoice SubsequentAction } //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- + +// Cause CHOICE, E2AP-v02.00 +const ( + E2AP_CauseContent_RICrequest uint8 = 1 + E2AP_CauseContent_RICservice uint8 = 2 + E2AP_CauseContent_E2node uint8 = 3 + E2AP_CauseContent_Transport uint8 = 4 + E2AP_CauseContent_Protocol uint8 = 5 + E2AP_CauseContent_Misc uint8 = 6 +) + +// CauseRICrequest ENUMERATED, E2AP-v02.00 +const ( + E2AP_CauseValue_RICrequest_function_id_Invalid uint8 = 0 + E2AP_CauseValue_RICrequest_action_not_supported uint8 = 1 + E2AP_CauseValue_RICrequest_excessive_actions uint8 = 2 + E2AP_CauseValue_RICrequest_duplicate_action uint8 = 3 + E2AP_CauseValue_RICrequest_duplicate_event_trigger uint8 = 4 + E2AP_CauseValue_RICrequest_function_resource_limit uint8 = 5 + E2AP_CauseValue_RICrequest_request_id_unknown uint8 = 6 + E2AP_CauseValue_RICrequest_inconsistent_action_subsequent_action_sequence uint8 = 7 + E2AP_CauseValue_RICrequest_control_message_invalid uint8 = 8 + E2AP_CauseValue_RICrequest_ric_call_process_id_invalid uint8 = 9 + E2AP_CauseValue_RICrequest_control_timer_expired uint8 = 10 + E2AP_CauseValue_RICrequest_control_failed_to_execute uint8 = 11 + E2AP_CauseValue_RICrequest_system_not_ready uint8 = 12 + E2AP_CauseValue_RICrequest_unspecified uint8 = 13 +) + type Cause struct { - Content uint8 - CauseVal uint8 + Content uint8 + Value uint8 } //----------------------------------------------------------------------------- @@ -285,6 +371,12 @@ type ActionNotAdmittedList struct { //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- +const ( + E2AP_CriticalityReject uint8 = 0 + E2AP_CriticalityIgnore uint8 = 1 + E2AP_CriticalityNotify uint8 = 2 +) + type CriticalityDiagnosticsIEListItem struct { IeCriticality uint8 //Crit IeID uint32