import (
"encoding/xml"
- "errors"
- "fmt"
"gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
- "strconv"
"strings"
)
type RanFunctionItem struct {
Text string `xml:",chardata"`
- RanFunctionID string `xml:"ranFunctionID"`
+ RanFunctionID uint32 `xml:"ranFunctionID"`
RanFunctionDefinition string `xml:"ranFunctionDefinition"`
- RanFunctionRevision string `xml:"ranFunctionRevision"`
+ RanFunctionRevision uint32 `xml:"ranFunctionRevision"`
}
type RANfunctionsList struct {
} `xml:"ProtocolIE-SingleContainer"`
}
-func (m *E2SetupRequestMessage) ExtractRanFunctionsList() ([]*entities.RanFunction, error) {
-
- setupRequestIes := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs
-
- if len(setupRequestIes) < 2 {
- return nil, nil
+func (m *E2SetupRequestMessage) ExtractRanFunctionsList() []*entities.RanFunction {
+ // TODO: verify e2SetupRequestIEs structure with Adi
+ e2SetupRequestIes := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs
+ if len(e2SetupRequestIes) < 2 {
+ return nil
}
- list := setupRequestIes[1].Value.RANfunctionsList.ProtocolIESingleContainer
- funcs := make([]*entities.RanFunction, len(list))
+ ranFunctionsListContainer := e2SetupRequestIes[1].Value.RANfunctionsList.ProtocolIESingleContainer
+ funcs := make([]*entities.RanFunction, len(ranFunctionsListContainer))
for i := 0; i < len(funcs); i++ {
- funcs[i] = &entities.RanFunction{}
- id, err := strconv.ParseUint(list[i].Value.RANfunctionItem.RanFunctionID, 10, 32)
- if err != nil {
- return nil, errors.New(fmt.Sprintf("#e2_setup_request_message.ExtractRanFunctionsList - Failed parse uint RanFunctionID from %s", list[i].Value.RANfunctionItem.RanFunctionID))
- }
- funcs[i].RanFunctionId = uint32(id)
- rev, err := strconv.ParseUint(list[i].Value.RANfunctionItem.RanFunctionRevision, 10, 32)
- if err != nil {
- return nil, errors.New(fmt.Sprintf("#e2_setup_request_message.ExtractRanFunctionsList - Failed parse uint RanFunctionRevision from %s", list[i].Value.RANfunctionItem.RanFunctionRevision))
+ ranFunctionItem := ranFunctionsListContainer[i].Value.RANfunctionItem
+
+ funcs[i] = &entities.RanFunction{
+ RanFunctionId: ranFunctionItem.RanFunctionID,
+ RanFunctionDefinition: ranFunctionItem.RanFunctionDefinition,
+ RanFunctionRevision: ranFunctionItem.RanFunctionRevision,
}
- funcs[i].RanFunctionDefinition = m.trimSpaces(list[i].Value.RANfunctionItem.RanFunctionDefinition)
- funcs[i].RanFunctionRevision = uint32(rev)
}
- return funcs, nil
+ return funcs
}
func (m *E2SetupRequestMessage) getGlobalE2NodeId() GlobalE2NodeId {
return m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID
}
-//func (m *E2SetupRequestMessage) GetNodeType() entities.Node_Type {
-// globalE2NodeId := m.getGlobalE2NodeId()
-// if id := globalE2NodeId.GNB.GlobalGNBID.PlmnID; id != "" {
-// return entities.Node_GNB
-// }
-// if id := globalE2NodeId.EnGNB.GlobalGNBID.PlmnID; id != "" {
-// return entities.Node_GNB
-// }
-// if id := globalE2NodeId.ENB.GlobalENBID.PlmnID; id != "" {
-// return entities.Node_ENB
-// }
-// if id := globalE2NodeId.NgENB.GlobalNgENBID.PlmnID; id != "" {
-// return entities.Node_ENB
-// }
-// return entities.Node_UNKNOWN
-//}
-
func (m *E2SetupRequestMessage) GetPlmnId() string {
globalE2NodeId := m.getGlobalE2NodeId()
if id := globalE2NodeId.GNB.GlobalGNBID.PlmnID; id != "" {