X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=E2Manager%2Fhandlers%2Fsetup_request_handler.go;h=4c49b1d2fa7ff0da93e559e691f265bc28eb6e6a;hb=ce7bdb1a54c10071a9aa0310a8e42411dcab9226;hp=146bdfbeefcd7272f92cb2719ac482b2ec90863f;hpb=07ef76dd471a0892a893c90e0ab06713aee34be1;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/handlers/setup_request_handler.go b/E2Manager/handlers/setup_request_handler.go index 146bdfb..4c49b1d 100644 --- a/E2Manager/handlers/setup_request_handler.go +++ b/E2Manager/handlers/setup_request_handler.go @@ -18,10 +18,12 @@ package handlers import ( + "e2mgr/e2pdus" "e2mgr/logger" "e2mgr/rNibWriter" "e2mgr/rnibBuilders" "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" "os" "sync" "time" @@ -38,18 +40,12 @@ const ( MaxAsn1CodecMessageBufferSize = 4096 ) -const ( - shortMacro_eNB_ID = 18 - macro_eNB_ID = 20 - longMacro_eNB_ID = 21 - home_eNB_ID = 28 -) /*The Ric Id is the combination of pLMNId and ENBId*/ var pLMNId []byte var eNBId []byte var eNBIdBitqty uint -var ricFlag = [3]byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ +var ricFlag = []byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ type SetupRequestHandler struct { rnibWriterProvider func() rNibWriter.RNibWriter @@ -62,7 +58,7 @@ func NewSetupRequestHandler(rnibWriterProvider func() rNibWriter.RNibWriter) *Se } func (handler SetupRequestHandler) PreHandle(logger *logger.Logger, details *models.RequestDetails) error { - nodebInfo, nodebIdentity := rnibBuilders.CreateInitialNodeInfo(details) + nodebInfo, nodebIdentity := rnibBuilders.CreateInitialNodeInfo(details, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) rNibErr := handler.rnibWriterProvider().SaveNodeb(nodebIdentity, nodebInfo) if rNibErr != nil { @@ -78,39 +74,17 @@ func (SetupRequestHandler) CreateMessage(logger *logger.Logger, requestDetails * wg.Add(1) - payload, err := packX2apSetupRequest(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, MaxAsn1PackedBufferSize /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId, eNBId, eNBIdBitqty) - if err != nil { - logger.Errorf("#setup_request_handler.CreateMessage - pack was failed. Error: %v", err) - } else { - transactionId := requestDetails.RanName - e2sessions[transactionId] = sessions.E2SessionDetails{SessionStart: startTime, Request: requestDetails} - setupRequestMessage := models.NewE2RequestMessage(transactionId, requestDetails.RanIp, requestDetails.RanPort, requestDetails.RanName, payload) + transactionId := requestDetails.RanName + e2sessions[transactionId] = sessions.E2SessionDetails{SessionStart: startTime, Request: requestDetails} + setupRequestMessage := models.NewE2RequestMessage(transactionId, requestDetails.RanIp, requestDetails.RanPort, requestDetails.RanName, e2pdus.PackedX2setupRequest) - logger.Debugf("#setup_request_handler.CreateMessage - setupRequestMessage was created successfully. setup request details(transactionId = [%s]): %+v", transactionId, setupRequestMessage) - messageChannel <- setupRequestMessage - } + logger.Debugf("#setup_request_handler.CreateMessage - PDU: %s", e2pdus.PackedX2setupRequestAsString) + logger.Debugf("#setup_request_handler.CreateMessage - setupRequestMessage was created successfully. setup request details(transactionId = [%s]): %+v", transactionId, setupRequestMessage) + messageChannel <- setupRequestMessage wg.Done() } -func asn1bstringToString(val []byte, numBits uint) string { - // Take the last byte - c := val[len(val)-1] - - b := numBits % 8 - - // If num bits is not evenly divisable by 8 ... - if b != 0 { - // ... shift the value to the higher bits (in our case: 0x0b -> 0xb0) - c <<= 8 - b - } - - if len(val) == 1 { - return fmt.Sprintf("%02x", c) - } - return fmt.Sprintf("%02x%02x", val[:len(val)-1], c) -} - //Expected value in RIC_ID = pLMN_Identity-eNB_ID/ //<6 hex digits>-<6 or 8 hex digits>/<18|20|21|28> //Each byte is represented by two hex digits, the value in the lowest byte of the eNB_ID must be assigned to the lowest bits @@ -128,7 +102,7 @@ func parseRicID(ricId string) error { return fmt.Errorf("invalid value for %s, len(eNBId:%v) != 3 or 4", ENV_RIC_ID, eNBId) } - if eNBIdBitqty != shortMacro_eNB_ID && eNBIdBitqty != macro_eNB_ID && eNBIdBitqty != longMacro_eNB_ID && eNBIdBitqty != home_eNB_ID { + if eNBIdBitqty != e2pdus.ShortMacro_eNB_ID && eNBIdBitqty != e2pdus.Macro_eNB_ID && eNBIdBitqty != e2pdus.LongMacro_eNB_ID && eNBIdBitqty != e2pdus.Home_eNB_ID { return fmt.Errorf("invalid value for %s, eNBIdBitqty: %d", ENV_RIC_ID, eNBIdBitqty) } @@ -141,11 +115,20 @@ func (SetupRequestHandler) GetMessageType() int { } func init() { + var err error ricId := os.Getenv(ENV_RIC_ID) //ricId="bbbccc-ffff0e/20" //ricId="bbbccc-abcd0e/20" - if err := parseRicID(ricId); err != nil { + if err = parseRicID(ricId); err != nil { panic(err) } + e2pdus.PackedEndcX2setupRequest,e2pdus.PackedEndcX2setupRequestAsString, err = e2pdus.PreparePackedEndcX2SetupRequest(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize,pLMNId, eNBId, eNBIdBitqty, ricFlag ) + if err != nil{ + panic(err) + } + e2pdus.PackedX2setupRequest,e2pdus.PackedX2setupRequestAsString, err = e2pdus.PreparePackedX2SetupRequest(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize,pLMNId, eNBId, eNBIdBitqty, ricFlag ) + if err != nil{ + panic(err) + } }