[RICPLT-1739] Extract and build Load Information Message
[ric-plt/e2mgr.git] / E2Manager / handlers / x2apPdu_asn1_unpacker.go
index 89ec216..592ba77 100644 (file)
@@ -28,11 +28,53 @@ import (
        "github.com/pkg/errors"
        "unsafe"
 )
+func unpackX2apPduUPer(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*C.E2AP_PDU_t, error) {
+       pdu := C.new_pdu(C.ulong(allocationBufferSize))
+
+       if pdu == nil {
+               return nil, errors.New("allocation failure (pdu)")
+       }
+
+       logger.Debugf("#x2apPdu_asn1_unpacker.unpackX2apPduUPer - Packed pdu(%d):%x", packedBufferSize, packedBuf)
+
+       errBuf := make([]C.char, maxMessageBufferSize)
+       if !C.unpack_pdu_aux(pdu, C.ulong(packedBufferSize), (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.ulong(len(errBuf)), &errBuf[0], C.ATS_UNALIGNED_BASIC_PER) {
+               return nil, errors.New(fmt.Sprintf("unpacking error: %s", C.GoString(&errBuf[0])))
+       }
+
+       if logger.DebugEnabled() {
+               C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0])
+               logger.Debugf("#x2apPdu_asn1_unpacker.unpackX2apPduUPer - PDU: %v  packed size:%d", C.GoString(&errBuf[0]), packedBufferSize)
+       }
 
+       return pdu, nil
+}
 type X2PduRefinedResponse struct {
        pduPrint string
 }
 
+//func unpackX2apPduUPer(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*C.E2AP_PDU_t, error) {
+//     pdu := C.new_pdu(C.ulong(allocationBufferSize))
+//
+//     if pdu == nil {
+//             return nil, errors.New("allocation failure (pdu)")
+//     }
+//
+//     logger.Debugf("#x2apPdu_asn1_unpacker.unpackX2apPduUPer - Packed pdu(%d):%x", packedBufferSize, packedBuf)
+//
+//     errBuf := make([]C.char, maxMessageBufferSize)
+//     if !C.unpack_pdu_aux(pdu, C.ulong(packedBufferSize), (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.ulong(len(errBuf)), &errBuf[0], C.ATS_UNALIGNED_BASIC_PER) {
+//             return nil, errors.New(fmt.Sprintf("unpacking error: %s", C.GoString(&errBuf[0])))
+//     }
+//
+//     if logger.DebugEnabled() {
+//             C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0])
+//             logger.Debugf("#x2apPdu_asn1_unpacker.unpackX2apPduUPer - PDU: %v  packed size:%d", C.GoString(&errBuf[0]), packedBufferSize)
+//     }
+//
+//     return pdu, nil
+//}
+
 func unpackX2apPdu(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*C.E2AP_PDU_t, error) {
        pdu := C.new_pdu(C.ulong(allocationBufferSize))