fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37225?usp=email )

Change subject: {hnbap,ranap,rua,s1ap,sabp,sbcap}: use TITAN's ASN.1 PER codec
......................................................................

{hnbap,ranap,rua,s1ap,sabp,sbcap}: use TITAN's ASN.1 PER codec

TITAN has built-in ASN.1 PER codec since version 10.0.0.
Drop libfftranscode dependency, use TTCN_EncDec::CT_PER / PER_ALIGNED.

Change-Id: I990a9c01d965e185fc64bd751ea0685e5d3b869c
Related: OS#6490
---
M cbc/regen_makefile.sh
M hnbgw/regen_makefile.sh
M hnodeb/regen_makefile.sh
M library/hnbap/HNBAP_EncDec.cc
M library/hnbap/regen_makefile.sh
M library/ranap/RANAP_EncDec.cc
M library/ranap/regen_makefile.sh
M library/rua/RUA_EncDec.cc
M library/rua/regen_makefile.sh
M library/s1ap/S1AP_EncDec.cc
M library/s1ap/regen_makefile.sh
M library/sabp/SABP_EncDec.cc
M library/sabp/regen_makefile.sh
M library/sbcap/SBC_AP_EncDec.cc
M library/sbcap/regen_makefile.sh
M mme/regen_makefile.sh
M msc/regen_makefile.sh
M s1gw/regen_makefile.sh
M sgsn/regen_makefile.sh
19 files changed, 86 insertions(+), 310 deletions(-)

Approvals:
  pespin: Looks good to me, approved
  osmith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified




diff --git a/cbc/regen_makefile.sh b/cbc/regen_makefile.sh
index 8ec5fcb..4189a6a 100755
--- a/cbc/regen_makefile.sh
+++ b/cbc/regen_makefile.sh
@@ -25,5 +25,3 @@
 "

 . ../_buildsystem/regen_makefile.inc.sh
-
-sed -i -e 's/^LINUX_LIBS = -lxml2/LINUX_LIBS = -lxml2 -lfftranscode/' Makefile
diff --git a/hnbgw/regen_makefile.sh b/hnbgw/regen_makefile.sh
index 8e4b9d9..d75ec1c 100755
--- a/hnbgw/regen_makefile.sh
+++ b/hnbgw/regen_makefile.sh
@@ -38,5 +38,3 @@
 "

 . ../_buildsystem/regen_makefile.inc.sh
-
-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp 
-lfftranscode/' Makefile
diff --git a/hnodeb/regen_makefile.sh b/hnodeb/regen_makefile.sh
index 2d86343..7f71250 100755
--- a/hnodeb/regen_makefile.sh
+++ b/hnodeb/regen_makefile.sh
@@ -35,5 +35,3 @@
 "
 
 . ../_buildsystem/regen_makefile.inc.sh
-
-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp 
-lfftranscode/' Makefile
diff --git a/library/hnbap/HNBAP_EncDec.cc b/library/hnbap/HNBAP_EncDec.cc
index 37d764f..eaf1013 100644
--- a/library/hnbap/HNBAP_EncDec.cc
+++ b/library/hnbap/HNBAP_EncDec.cc
@@ -1,11 +1,8 @@
-
-#include <string.h>
-#include <stdarg.h>
 #include "HNBAP_PDU_Descriptions.hh"

-extern "C" {
-#include <fftranscode/transcode.h>
-}
+/* 3GPP TS 25.469, section 9.4 Message transfer syntax:
+ * HNBAP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned 
Variant
+ * as transfer syntax as specified in ref. ITU-T Rec. X.691 */

 namespace HNBAP__Types {

@@ -13,52 +10,24 @@

 OCTETSTRING enc__HNBAP__PDU(const HNBAP__PDU__Descriptions::HNBAP__PDU &pdu)
 {
-       uint8_t *aper_buf;
-       int aper_buf_len;
-       TTCN_Buffer TTCN_buf;
-       TTCN_buf.clear();
+       TTCN_Buffer buf;

-       /* Encode from abstract data type into BER/DER */
-       pdu.encode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf,
-                  TTCN_EncDec::CT_BER, BER_ENCODE_DER);
-
-       aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_HNBAP, &aper_buf, 
TTCN_buf.get_data(), TTCN_buf.get_len());
-       if (aper_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* make octetstring from output buffer */
-       OCTETSTRING ret_val(aper_buf_len, aper_buf);
-
-       /* release dynamically-allocated output buffer */
-       fftranscode_free(aper_buf);
-
-       return ret_val;
+       buf.clear();
+       pdu.encode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return OCTETSTRING(buf.get_len(), buf.get_data());
 }

 HNBAP__PDU__Descriptions::HNBAP__PDU dec__HNBAP__PDU(const OCTETSTRING &stream)
 {
-       uint8_t *ber_buf;
-       int ber_buf_len;
-
-       /* First, decode APER + re-encode as BER */
-       ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_HNBAP, &ber_buf, (const 
unsigned char *)stream, stream.lengthof());
-       if (ber_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* Then, re-encode from BER to TITAN representation */
-       HNBAP__PDU__Descriptions::HNBAP__PDU ret_dcc;
+       HNBAP__PDU__Descriptions::HNBAP__PDU pdu;
        TTCN_Buffer TTCN_buf;
+
        TTCN_buf.clear();
-       TTCN_buf.put_s(ber_buf_len, ber_buf);
-
-       ret_dcc.decode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf,
-                       TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
-
-       fftranscode_free(ber_buf);
-
-       return ret_dcc;
+       TTCN_buf.put_os(stream);
+       pdu.decode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return pdu;
 }

 }
diff --git a/library/hnbap/regen_makefile.sh b/library/hnbap/regen_makefile.sh
index 7a63cf3..cdb17e7 100755
--- a/library/hnbap/regen_makefile.sh
+++ b/library/hnbap/regen_makefile.sh
@@ -3,7 +3,3 @@
 FILES="*.asn *.ttcn HNBAP_EncDec.cc"

 ../../_buildsystem/regen-makefile.sh $FILES
-
-sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
-sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
-sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
diff --git a/library/ranap/RANAP_EncDec.cc b/library/ranap/RANAP_EncDec.cc
index 7626b7b..5cee694 100644
--- a/library/ranap/RANAP_EncDec.cc
+++ b/library/ranap/RANAP_EncDec.cc
@@ -1,11 +1,8 @@
-
-#include <string.h>
-#include <stdarg.h>
 #include "RANAP_PDU_Descriptions.hh"

-extern "C" {
-#include <fftranscode/transcode.h>
-}
+/* 3GPP TS 25.413, section 9.4 Message transfer syntax:
+ * RANAP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned 
Variant
+ * as transfer syntax as specified in ref. ITU-T Rec. X.691 */

 namespace RANAP__Types {

@@ -13,54 +10,24 @@

 OCTETSTRING enc__RANAP__PDU(const RANAP__PDU__Descriptions::RANAP__PDU &pdu)
 {
-       uint8_t *aper_buf;
-       int aper_buf_len;
-       TTCN_Buffer TTCN_buf;
-       TTCN_buf.clear();
+       TTCN_Buffer buf;

-       /* Encode from abstract data type into BER/DER */
-       pdu.encode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf,
-                  TTCN_EncDec::CT_BER, BER_ENCODE_DER);
-
-       aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_RANAP, &aper_buf, 
TTCN_buf.get_data(), TTCN_buf.get_len());
-       if (aper_buf_len < 0) {
-               TTCN_Logger::begin_event_log2str();
-               TTCN_buf.log();
-               TTCN_error("fftranscode_ber2aper failed: %s", (const char *) 
TTCN_Logger::end_event_log2str());
-       }
-
-       /* make octetstring from output buffer */
-       OCTETSTRING ret_val(aper_buf_len, aper_buf);
-
-       /* release dynamically-allocated output buffer */
-       fftranscode_free(aper_buf);
-
-       return ret_val;
+       buf.clear();
+       pdu.encode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return OCTETSTRING(buf.get_len(), buf.get_data());
 }

 RANAP__PDU__Descriptions::RANAP__PDU dec__RANAP__PDU(const OCTETSTRING &stream)
 {
-       uint8_t *ber_buf;
-       int ber_buf_len;
-
-       /* First, decode APER + re-encode as BER */
-       ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_RANAP, &ber_buf, (const 
unsigned char *)stream, stream.lengthof());
-       if (ber_buf_len < 0) {
-               TTCN_error("fftranscode_aper2ber failed.");
-       }
-
-       /* Then, re-encode from BER to TITAN representation */
-       RANAP__PDU__Descriptions::RANAP__PDU ret_dcc;
+       RANAP__PDU__Descriptions::RANAP__PDU pdu;
        TTCN_Buffer TTCN_buf;
+
        TTCN_buf.clear();
-       TTCN_buf.put_s(ber_buf_len, ber_buf);
-
-       ret_dcc.decode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf,
-                       TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
-
-       fftranscode_free(ber_buf);
-
-       return ret_dcc;
+       TTCN_buf.put_os(stream);
+       pdu.decode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return pdu;
 }

 }
diff --git a/library/ranap/regen_makefile.sh b/library/ranap/regen_makefile.sh
index 37122c5..ba8fd0a 100755
--- a/library/ranap/regen_makefile.sh
+++ b/library/ranap/regen_makefile.sh
@@ -3,7 +3,3 @@
 FILES="*.asn *.ttcn RANAP_EncDec.cc"

 ../../_buildsystem/regen-makefile.sh $FILES
-
-sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
-sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
-sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
diff --git a/library/rua/RUA_EncDec.cc b/library/rua/RUA_EncDec.cc
index 808e317..c702f54 100644
--- a/library/rua/RUA_EncDec.cc
+++ b/library/rua/RUA_EncDec.cc
@@ -1,11 +1,8 @@
-
-#include <string.h>
-#include <stdarg.h>
 #include "RUA_PDU_Descriptions.hh"

-extern "C" {
-#include <fftranscode/transcode.h>
-}
+/* 3GPP TS 25.468, section 9.4 Message transfer syntax:
+ * RUA shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned 
Variant
+ * as transfer syntax as specified in ref. ITU-T Rec. X.691 */

 namespace RUA__Types {

@@ -13,52 +10,24 @@

 OCTETSTRING enc__RUA__PDU(const RUA__PDU__Descriptions::RUA__PDU &pdu)
 {
-       uint8_t *aper_buf;
-       int aper_buf_len;
-       TTCN_Buffer TTCN_buf;
-       TTCN_buf.clear();
+       TTCN_Buffer buf;

-       /* Encode from abstract data type into BER/DER */
-       pdu.encode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf,
-                  TTCN_EncDec::CT_BER, BER_ENCODE_DER);
-
-       aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_RUA, &aper_buf, 
TTCN_buf.get_data(), TTCN_buf.get_len());
-       if (aper_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* make octetstring from output buffer */
-       OCTETSTRING ret_val(aper_buf_len, aper_buf);
-
-       /* release dynamically-allocated output buffer */
-       fftranscode_free(aper_buf);
-
-       return ret_val;
+       buf.clear();
+       pdu.encode(RUA__PDU__Descriptions::RUA__PDU_descr_, buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return OCTETSTRING(buf.get_len(), buf.get_data());
 }

 RUA__PDU__Descriptions::RUA__PDU dec__RUA__PDU(const OCTETSTRING &stream)
 {
-       uint8_t *ber_buf;
-       int ber_buf_len;
-
-       /* First, decode APER + re-encode as BER */
-       ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_RUA, &ber_buf, (const 
unsigned char *)stream, stream.lengthof());
-       if (ber_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* Then, re-encode from BER to TITAN representation */
-       RUA__PDU__Descriptions::RUA__PDU ret_dcc;
+       RUA__PDU__Descriptions::RUA__PDU pdu;
        TTCN_Buffer TTCN_buf;
+
        TTCN_buf.clear();
-       TTCN_buf.put_s(ber_buf_len, ber_buf);
-
-       ret_dcc.decode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf,
-                       TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
-
-       fftranscode_free(ber_buf);
-
-       return ret_dcc;
+       TTCN_buf.put_os(stream);
+       pdu.decode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return pdu;
 }

 }
diff --git a/library/rua/regen_makefile.sh b/library/rua/regen_makefile.sh
index 72cee57..b4e3c9c 100755
--- a/library/rua/regen_makefile.sh
+++ b/library/rua/regen_makefile.sh
@@ -3,7 +3,3 @@
 FILES="*.asn *.ttcn RUA_EncDec.cc"

 ../../_buildsystem/regen-makefile.sh $FILES
-
-sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
-sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
-sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
diff --git a/library/s1ap/S1AP_EncDec.cc b/library/s1ap/S1AP_EncDec.cc
index a17f20e..6f82b2b 100644
--- a/library/s1ap/S1AP_EncDec.cc
+++ b/library/s1ap/S1AP_EncDec.cc
@@ -1,11 +1,8 @@
-
-#include <string.h>
-#include <stdarg.h>
 #include "S1AP_PDU_Descriptions.hh"

-extern "C" {
-#include <fftranscode/transcode.h>
-}
+/* 3GPP TS 36.413, section 9.4 Message transfer syntax:
+ * S1AP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned 
Variant
+ * as transfer syntax as specified in ref. ITU-T Rec. X.691 */

 namespace S1AP__Types {

@@ -13,52 +10,24 @@

 OCTETSTRING enc__S1AP__PDU(const S1AP__PDU__Descriptions::S1AP__PDU &pdu)
 {
-       uint8_t *aper_buf;
-       int aper_buf_len;
-       TTCN_Buffer TTCN_buf;
-       TTCN_buf.clear();
+       TTCN_Buffer buf;

-       /* Encode from abstract data type into BER/DER */
-       pdu.encode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, TTCN_buf,
-                  TTCN_EncDec::CT_BER, BER_ENCODE_DER);
-
-       aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_S1AP, &aper_buf, 
TTCN_buf.get_data(), TTCN_buf.get_len());
-       if (aper_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* make octetstring from output buffer */
-       OCTETSTRING ret_val(aper_buf_len, aper_buf);
-
-       /* release dynamically-allocated output buffer */
-       fftranscode_free(aper_buf);
-
-       return ret_val;
+       buf.clear();
+       pdu.encode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return OCTETSTRING(buf.get_len(), buf.get_data());
 }

 S1AP__PDU__Descriptions::S1AP__PDU dec__S1AP__PDU(const OCTETSTRING &stream)
 {
-       uint8_t *ber_buf;
-       int ber_buf_len;
-
-       /* First, decode APER + re-encode as BER */
-       ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_S1AP, &ber_buf, (const 
unsigned char *)stream, stream.lengthof());
-       if (ber_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* Then, re-encode from BER to TITAN representation */
-       S1AP__PDU__Descriptions::S1AP__PDU ret_dcc;
+       S1AP__PDU__Descriptions::S1AP__PDU pdu;
        TTCN_Buffer TTCN_buf;
+
        TTCN_buf.clear();
-       TTCN_buf.put_s(ber_buf_len, ber_buf);
-
-       ret_dcc.decode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, TTCN_buf,
-                       TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
-
-       fftranscode_free(ber_buf);
-
-       return ret_dcc;
+       TTCN_buf.put_os(stream);
+       pdu.decode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, TTCN_buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return pdu;
 }

 }
diff --git a/library/s1ap/regen_makefile.sh b/library/s1ap/regen_makefile.sh
index 6906618..fb53b05 100755
--- a/library/s1ap/regen_makefile.sh
+++ b/library/s1ap/regen_makefile.sh
@@ -3,7 +3,3 @@
 FILES="*.asn *.ttcn S1AP_EncDec.cc"

 ../../_buildsystem/regen-makefile.sh $FILES
-
-sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
-sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
-sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
diff --git a/library/sabp/SABP_EncDec.cc b/library/sabp/SABP_EncDec.cc
index 3c60e82..4aa0498 100644
--- a/library/sabp/SABP_EncDec.cc
+++ b/library/sabp/SABP_EncDec.cc
@@ -1,11 +1,8 @@
-
-#include <string.h>
-#include <stdarg.h>
 #include "SABP_PDU_Descriptions.hh"

-extern "C" {
-#include <fftranscode/transcode.h>
-}
+/* 3GPP TS 25.419, section 9.4 Message transfer syntax:
+ * SABP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned 
Variant
+ * as transfer syntax as specified in ref. ITU-T Rec. X.691 */

 namespace SABP__Types {

@@ -13,52 +10,24 @@

 OCTETSTRING enc__SABP__PDU(const SABP__PDU__Descriptions::SABP__PDU &pdu)
 {
-       uint8_t *aper_buf;
-       int aper_buf_len;
-       TTCN_Buffer TTCN_buf;
-       TTCN_buf.clear();
+       TTCN_Buffer buf;

-       /* Encode from abstract data type into BER/DER */
-       pdu.encode(SABP__PDU__Descriptions::SABP__PDU_descr_, TTCN_buf,
-                  TTCN_EncDec::CT_BER, BER_ENCODE_DER);
-
-       aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_SABP, &aper_buf, 
TTCN_buf.get_data(), TTCN_buf.get_len());
-       if (aper_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* make octetstring from output buffer */
-       OCTETSTRING ret_val(aper_buf_len, aper_buf);
-
-       /* release dynamically-allocated output buffer */
-       fftranscode_free(aper_buf);
-
-       return ret_val;
+       buf.clear();
+       pdu.encode(SABP__PDU__Descriptions::SABP__PDU_descr_, buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return OCTETSTRING(buf.get_len(), buf.get_data());
 }

 SABP__PDU__Descriptions::SABP__PDU dec__SABP__PDU(const OCTETSTRING &stream)
 {
-       uint8_t *ber_buf;
-       int ber_buf_len;
-
-       /* First, decode APER + re-encode as BER */
-       ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_SABP, &ber_buf, (const 
unsigned char *)stream, stream.lengthof());
-       if (ber_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* Then, re-encode from BER to TITAN representation */
-       SABP__PDU__Descriptions::SABP__PDU ret_dcc;
+       SABP__PDU__Descriptions::SABP__PDU pdu;
        TTCN_Buffer TTCN_buf;
+
        TTCN_buf.clear();
-       TTCN_buf.put_s(ber_buf_len, ber_buf);
-
-       ret_dcc.decode(SABP__PDU__Descriptions::SABP__PDU_descr_, TTCN_buf,
-                       TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
-
-       fftranscode_free(ber_buf);
-
-       return ret_dcc;
+       TTCN_buf.put_os(stream);
+       pdu.decode(SABP__PDU__Descriptions::SABP__PDU_descr_, TTCN_buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return pdu;
 }

 }
diff --git a/library/sabp/regen_makefile.sh b/library/sabp/regen_makefile.sh
index 0b9d88e..ae321e9 100755
--- a/library/sabp/regen_makefile.sh
+++ b/library/sabp/regen_makefile.sh
@@ -3,7 +3,3 @@
 FILES="*.asn *.ttcn SABP_EncDec.cc"

 ../../_buildsystem/regen-makefile.sh $FILES
-
-sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
-sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
-sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
diff --git a/library/sbcap/SBC_AP_EncDec.cc b/library/sbcap/SBC_AP_EncDec.cc
index 08ee75f..26e3364 100644
--- a/library/sbcap/SBC_AP_EncDec.cc
+++ b/library/sbcap/SBC_AP_EncDec.cc
@@ -1,11 +1,8 @@
-
-#include <string.h>
-#include <stdarg.h>
 #include "SBC_AP_PDU_Descriptions.hh"

-extern "C" {
-#include <fftranscode/transcode.h>
-}
+/* 3GPP TS 29.168, section 9.4 Message transfer syntax:
+ * SBC-AP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned 
Variant
+ * as transfer syntax as specified in ref. ITU-T Rec. X.691 */

 namespace SBC__AP__Types {

@@ -13,52 +10,24 @@

 OCTETSTRING enc__SBC__AP__PDU(const SBC__AP__PDU__Descriptions::SBC__AP__PDU 
&pdu)
 {
-       uint8_t *aper_buf;
-       int aper_buf_len;
-       TTCN_Buffer TTCN_buf;
-       TTCN_buf.clear();
+       TTCN_Buffer buf;

-       /* Encode from abstract data type into BER/DER */
-       pdu.encode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, TTCN_buf,
-                  TTCN_EncDec::CT_BER, BER_ENCODE_DER);
-
-       aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_SBCAP, &aper_buf, 
TTCN_buf.get_data(), TTCN_buf.get_len());
-       if (aper_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* make octetstring from output buffer */
-       OCTETSTRING ret_val(aper_buf_len, aper_buf);
-
-       /* release dynamically-allocated output buffer */
-       fftranscode_free(aper_buf);
-
-       return ret_val;
+       buf.clear();
+       pdu.encode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return OCTETSTRING(buf.get_len(), buf.get_data());
 }

 SBC__AP__PDU__Descriptions::SBC__AP__PDU dec__SBC__AP__PDU(const OCTETSTRING 
&stream)
 {
-       uint8_t *ber_buf;
-       int ber_buf_len;
-
-       /* First, decode APER + re-encode as BER */
-       ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_SBCAP, &ber_buf, (const 
unsigned char *)stream, stream.lengthof());
-       if (ber_buf_len < 0) {
-               TTCN_error("fftranscode failed.");
-       }
-
-       /* Then, re-encode from BER to TITAN representation */
-       SBC__AP__PDU__Descriptions::SBC__AP__PDU ret_dcc;
+       SBC__AP__PDU__Descriptions::SBC__AP__PDU pdu;
        TTCN_Buffer TTCN_buf;
+
        TTCN_buf.clear();
-       TTCN_buf.put_s(ber_buf_len, ber_buf);
-
-       ret_dcc.decode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, 
TTCN_buf,
-                       TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
-
-       fftranscode_free(ber_buf);
-
-       return ret_dcc;
+       TTCN_buf.put_os(stream);
+       pdu.decode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, TTCN_buf,
+                  TTCN_EncDec::CT_PER, PER_ALIGNED);
+       return pdu;
 }

 }
diff --git a/library/sbcap/regen_makefile.sh b/library/sbcap/regen_makefile.sh
index 82a2a15..98df295 100755
--- a/library/sbcap/regen_makefile.sh
+++ b/library/sbcap/regen_makefile.sh
@@ -3,7 +3,3 @@
 FILES="*.asn *.ttcn SBC_AP_EncDec.cc"

 ../../_buildsystem/regen-makefile.sh $FILES
-
-sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
-sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
-sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
diff --git a/mme/regen_makefile.sh b/mme/regen_makefile.sh
index c1859da..79686ab 100755
--- a/mme/regen_makefile.sh
+++ b/mme/regen_makefile.sh
@@ -30,4 +30,4 @@

 . ../_buildsystem/regen_makefile.inc.sh

-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp 
-lfftranscode -lgnutls/' Makefile
+sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lgnutls/' 
Makefile
diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh
index 7f897a5..28b4a98 100755
--- a/msc/regen_makefile.sh
+++ b/msc/regen_makefile.sh
@@ -48,4 +48,4 @@

 . ../_buildsystem/regen_makefile.inc.sh

-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp 
-lfftranscode -lssl/' Makefile
+sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lssl/' 
Makefile
diff --git a/s1gw/regen_makefile.sh b/s1gw/regen_makefile.sh
index cc7e2bb..aa575e7 100755
--- a/s1gw/regen_makefile.sh
+++ b/s1gw/regen_makefile.sh
@@ -23,7 +23,3 @@
 "

 . ../_buildsystem/regen_makefile.inc.sh
-
-sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
-sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
-sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
diff --git a/sgsn/regen_makefile.sh b/sgsn/regen_makefile.sh
index 7034243..b43f2c8 100755
--- a/sgsn/regen_makefile.sh
+++ b/sgsn/regen_makefile.sh
@@ -35,5 +35,3 @@
 "

 . ../_buildsystem/regen_makefile.inc.sh
-
-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp 
-lfftranscode/' Makefile

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37225?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I990a9c01d965e185fc64bd751ea0685e5d3b869c
Gerrit-Change-Number: 37225
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to