Merge newe2 into master
[ric-plt/submgr.git] / e2ap / pkg / e2ap / msg_e2ap.go
index 153f07b..2ce2c17 100644 (file)
@@ -99,181 +99,299 @@ const (
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-const (
-       E2AP_IndicationTypeReport uint64 = 0
-       E2AP_IndicationTypeInsert uint64 = 1
-)
+type PackedData struct {
+       Buf []byte
+}
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-const (
-       E2AP_ActionTypeReport  uint64 = 0
-       E2AP_ActionTypeInsert  uint64 = 1
-       E2AP_ActionTypePolicy  uint64 = 2
-       E2AP_ActionTypeInvalid uint64 = 99 // For RIC internal usage only
-)
+type MessageInfo struct {
+       MsgType uint64
+       MsgId   uint64
+}
+
+func (msgInfo *MessageInfo) String() string {
+       return "msginfo(" + strconv.FormatUint((uint64)(msgInfo.MsgType), 10) + string(":") + strconv.FormatUint((uint64)(msgInfo.MsgId), 10) + ")"
+}
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-const (
-       E2AP_SubSeqActionTypeContinue uint64 = 0
-       E2AP_SubSeqActionTypeWait     uint64 = 1
-)
+type RequestId struct {
+       Id         uint32
+       InstanceId uint32
+}
+
+func (rid *RequestId) String() string {
+       return strconv.FormatUint((uint64)(rid.Id), 10) + string(":") + strconv.FormatUint((uint64)(rid.InstanceId), 10)
+}
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
+type FunctionId uint16
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+
 const (
-       E2AP_TimeToWaitZero   uint64 = 0
-       E2AP_TimeToWaitW1ms   uint64 = 1
-       E2AP_TimeToWaitW2ms   uint64 = 2
-       E2AP_TimeToWaitW5ms   uint64 = 3
-       E2AP_TimeToWaitW10ms  uint64 = 4
-       E2AP_TimeToWaitW20ms  uint64 = 4
-       E2AP_TimeToWaitW30ms  uint64 = 5
-       E2AP_TimeToWaitW40ms  uint64 = 6
-       E2AP_TimeToWaitW50ms  uint64 = 7
-       E2AP_TimeToWaitW100ms uint64 = 8
-       E2AP_TimeToWaitW200ms uint64 = 9
-       E2AP_TimeToWaitW500ms uint64 = 10
-       E2AP_TimeToWaitW1s    uint64 = 11
-       E2AP_TimeToWaitW2s    uint64 = 12
-       E2AP_TimeToWaitW5s    uint64 = 13
-       E2AP_TimeToWaitW10s   uint64 = 14
-       E2AP_TimeToWaitW20s   uint64 = 15
-       E2AP_TimeToWaitW60    uint64 = 16
+       E2AP_ENBIDMacroPBits20    uint8 = 20
+       E2AP_ENBIDHomeBits28      uint8 = 28
+       E2AP_ENBIDShortMacroits18 uint8 = 18
+       E2AP_ENBIDlongMacroBits21 uint8 = 21
 )
 
+type NodeId struct {
+       Bits uint8
+       Id   uint32
+}
+
+func (nid *NodeId) String() string {
+       return strconv.FormatUint((uint64)(nid.Id), 10)
+}
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type GlobalNodeId struct {
+       Present      bool
+       PlmnIdentity conv.PlmnIdentityTbcd
+       NodeId       NodeId
+}
+
+func (gnid *GlobalNodeId) String() string {
+       return gnid.PlmnIdentity.String() + string(":") + gnid.NodeId.String()
+}
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type InterfaceId struct {
+       GlobalEnbId GlobalNodeId
+       GlobalGnbId GlobalNodeId
+}
+
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
+
 const (
        E2AP_InterfaceDirectionIncoming uint32 = 0
        E2AP_InterfaceDirectionOutgoing uint32 = 1
 )
 
+type EventTriggerDefinition struct {
+       NBX2EventTriggerDefinitionPresent bool
+       X2EventTriggerDefinition
+       NBNRTEventTriggerDefinitionPresent bool
+       NBNRTEventTriggerDefinition
+}
+
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-const (
-       E2AP_CriticalityReject uint8 = 0
-       E2AP_CriticalityIgnore uint8 = 1
-       E2AP_CriticalityNotify uint8 = 2
-)
+type X2EventTriggerDefinition struct {
+       InterfaceId
+       InterfaceDirection uint32
+       ProcedureCode      uint32
+       TypeOfMessage      uint64
+}
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-const (
-       E2AP_ENBIDMacroPBits20    uint8 = 20
-       E2AP_ENBIDHomeBits28      uint8 = 28
-       E2AP_ENBIDShortMacroits18 uint8 = 18
-       E2AP_ENBIDlongMacroBits21 uint8 = 21
+type NBNRTEventTriggerDefinition struct {
+       TriggerNature uint8
+}
+
+const ( // enum NRTTriggerNature
+       NRTTriggerNature_now = iota
+       NRTTriggerNature_onchange
 )
 
+/*
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type PackedData struct {
-       Buf []byte
+type CallProcessId struct {
+  CallProcessIDVal uint32
+}
+*/
+
+type ActionDefinitionChoice struct {
+       ActionDefinitionX2Format1Present  bool
+       ActionDefinitionX2Format1         E2SMgNBX2actionDefinition
+       ActionDefinitionX2Format2Present  bool
+       ActionDefinitionX2Format2         ActionDefinitionFormat2
+       ActionDefinitionNRTFormat1Present bool
+       ActionDefinitionNRTFormat1        E2SMgNBNRTActionDefinitionFormat1
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type MessageInfo struct {
-       MsgType uint64
-       MsgId   uint64
+type E2SMgNBNRTActionDefinitionFormat1 struct {
+       RanParameterList []RANParameterItem // 1..255
 }
 
-func (msgInfo *MessageInfo) String() string {
-       return "msginfo(" + strconv.FormatUint((uint64)(msgInfo.MsgType), 10) + string(":") + strconv.FormatUint((uint64)(msgInfo.MsgId), 10) + ")"
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type E2SMgNBX2actionDefinition struct {
+       StyleID              uint64
+       ActionParameterItems []ActionParameterItem // 1..255
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type RequestId struct {
-       Id  uint32
-       Seq uint32
+type ActionParameterItem struct {
+       ParameterID          uint32 // 1..255
+       ActionParameterValue ActionParameterValue
 }
 
-func (rid *RequestId) String() string {
-       return strconv.FormatUint((uint64)(rid.Id), 10) + string(":") + strconv.FormatUint((uint64)(rid.Seq), 10)
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type ActionParameterValue struct {
+       ValueIntPresent  bool
+       ValueInt         int64
+       ValueEnumPresent bool
+       ValueEnum        int64
+       ValueBoolPresent bool
+       ValueBool        bool
+       ValueBitSPresent bool
+       ValueBitS        BitString
+       ValueOctSPresent bool
+       ValueOctS        OctetString
+       ValuePrtSPresent bool
+       ValuePrtS        OctetString
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type FunctionId uint16
+type ActionDefinitionFormat2 struct {
+       RanUEgroupItems []RANueGroupItem // 1..15
+}
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type NodeId struct {
-       Bits uint8
-       Id   uint32
+type RANueGroupItem struct {
+       RanUEgroupID         int64
+       RanUEgroupDefinition RANueGroupDefinition
+       RanPolicy            RANimperativePolicy
 }
 
-func (nid *NodeId) String() string {
-       return strconv.FormatUint((uint64)(nid.Id), 10)
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type RANueGroupDefinition struct {
+       RanUEGroupDefItems []RANueGroupDefItem // 1..255
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type GlobalNodeId struct {
-       Present      bool
-       PlmnIdentity conv.PlmnIdentity
-       NodeId       NodeId
+type RANimperativePolicy struct {
+       RanParameterItems []RANParameterItem // 1..255
 }
 
-func (gnid *GlobalNodeId) String() string {
-       return gnid.PlmnIdentity.String() + string(":") + gnid.NodeId.String()
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type RANueGroupDefItem struct {
+       RanParameterID    uint32 // 1..255
+       RanParameterTest  uint8
+       RanParameterValue RANParameterValue
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type InterfaceId struct {
-       GlobalEnbId GlobalNodeId
-       GlobalGnbId GlobalNodeId
+type RANParameterItem struct {
+       RanParameterID    uint8 // 1..255
+       RanParameterValue RANParameterValue
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type EventTriggerDefinition struct {
-       InterfaceId
-       InterfaceDirection uint32
-       ProcedureCode      uint32
-       TypeOfMessage      uint64
+const ( // enum RANParameterTest
+       RANParameterTest_equal = iota
+       RANParameterTest_greaterthan
+       RANParameterTest_lessthan
+       RANParameterTest_contains
+       RANParameterTest_present
+)
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type RANParameterValue struct {
+       ValueIntPresent  bool
+       ValueInt         int64
+       ValueEnumPresent bool
+       ValueEnum        int64
+       ValueBoolPresent bool
+       ValueBool        bool
+       ValueBitSPresent bool
+       ValueBitS        BitString
+       ValueOctSPresent bool
+       ValueOctS        OctetString
+       ValuePrtSPresent bool
+       ValuePrtS        OctetString
 }
 
-/*
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type CallProcessId struct {
-  CallProcessIDVal uint32
+type BitString struct {
+       UnusedBits uint8
+       Length     uint64
+       Data       []uint8
 }
-*/
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-type ActionDefinition struct {
-       Present bool
-       StyleId uint64
-       ParamId uint32
-       //ParamValue
+type OctetString struct {
+       Length uint64
+       Data   []uint8
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
+const (
+       E2AP_SubSeqActionTypeContinue uint64 = 0
+       E2AP_SubSeqActionTypeWait     uint64 = 1
+)
+
+const (
+       E2AP_TimeToWaitZero   uint64 = 0
+       E2AP_TimeToWaitW1ms   uint64 = 1
+       E2AP_TimeToWaitW2ms   uint64 = 2
+       E2AP_TimeToWaitW5ms   uint64 = 3
+       E2AP_TimeToWaitW10ms  uint64 = 4
+       E2AP_TimeToWaitW20ms  uint64 = 4
+       E2AP_TimeToWaitW30ms  uint64 = 5
+       E2AP_TimeToWaitW40ms  uint64 = 6
+       E2AP_TimeToWaitW50ms  uint64 = 7
+       E2AP_TimeToWaitW100ms uint64 = 8
+       E2AP_TimeToWaitW200ms uint64 = 9
+       E2AP_TimeToWaitW500ms uint64 = 10
+       E2AP_TimeToWaitW1s    uint64 = 11
+       E2AP_TimeToWaitW2s    uint64 = 12
+       E2AP_TimeToWaitW5s    uint64 = 13
+       E2AP_TimeToWaitW10s   uint64 = 14
+       E2AP_TimeToWaitW20s   uint64 = 15
+       E2AP_TimeToWaitW60    uint64 = 16
+)
+
 type SubsequentAction struct {
        Present    bool
        Type       uint64
@@ -283,19 +401,66 @@ 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
+)
+
 type ActionToBeSetupItem struct {
-       ActionId   uint64
-       ActionType uint64
-       ActionDefinition
+       ActionId                   uint64
+       ActionType                 uint64
+       RicActionDefinitionPresent bool
+       ActionDefinitionChoice
        SubsequentAction
 }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
+
+const (
+       E2AP_CauseContent_RadioNetwork uint8 = 1
+       E2AP_CauseContent_Transport    uint8 = 2
+       E2AP_CauseContent_Protocol     uint8 = 3
+       E2AP_CauseContent_Misc         uint8 = 4
+       E2AP_CauseContent_Ric          uint8 = 5
+)
+
+//const (
+//     E2AP_CauseValue_RadioNetwork_ uint8 = 0
+//)
+//const (
+//     E2AP_CauseValue_Transport_ uint8 = 0
+//)
+//const (
+//     E2AP_CauseValue_Protocol_ uint8 = 0
+//)
+//const (
+//     E2AP_CauseValue_Misc_ uint8 = 0
+//)
+
+const (
+       E2AP_CauseValue_Ric_function_id_Invalid                            uint8 = 0
+       E2AP_CauseValue_Ric_action_not_supported                           uint8 = 1
+       E2AP_CauseValue_Ric_excessive_actions                              uint8 = 2
+       E2AP_CauseValue_Ric_duplicate_action                               uint8 = 3
+       E2AP_CauseValue_Ric_duplicate_event                                uint8 = 4
+       E2AP_CauseValue_Ric_function_resource_limit                        uint8 = 5
+       E2AP_CauseValue_Ric_request_id_unknown                             uint8 = 6
+       E2AP_CauseValue_Ric_inconsistent_action_subsequent_action_sequence uint8 = 7
+       E2AP_CauseValue_Ric_control_message_invalid                        uint8 = 8
+       E2AP_CauseValue_Ric_call_process_id_invalid                        uint8 = 9
+       E2AP_CauseValue_Ric_function_not_required                          uint8 = 10
+       E2AP_CauseValue_Ric_excessive_functions                            uint8 = 11
+       E2AP_CauseValue_Ric_ric_resource_limi                              uint8 = 12
+)
+
 type Cause struct {
-       Content  uint8
-       CauseVal uint8
+       Content uint8
+       Value   uint8
 }
 
 //-----------------------------------------------------------------------------
@@ -330,6 +495,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