summaryrefslogtreecommitdiffstats
path: root/lapdm
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-07-31 16:15:56 +0200
committerHarald Welte <laforge@gnumonks.org>2017-07-31 16:15:56 +0200
commit5aa500791ea7093e3f5eaef18248203963391ae2 (patch)
tree5a0feaab4a2fa8f8f87dd676dbf18fef63908352 /lapdm
parentefbc2fca2423599777b7d6a0ce935c65582d884b (diff)
move LAPDm_types to library + make lapdm executable compile again
Diffstat (limited to 'lapdm')
-rw-r--r--lapdm/LAPDm_Types.ttcn202
-rwxr-xr-xlapdm/gen_links.sh2
-rwxr-xr-xlapdm/regen_makefile.sh2
3 files changed, 2 insertions, 204 deletions
diff --git a/lapdm/LAPDm_Types.ttcn b/lapdm/LAPDm_Types.ttcn
deleted file mode 100644
index 98f6956..0000000
--- a/lapdm/LAPDm_Types.ttcn
+++ /dev/null
@@ -1,202 +0,0 @@
-/* LAPDm definitiona according to 3GPP TS 44.006 */
-/* (C) 2017 bh Harald Welte <laforge@gnumonks.org> */
-module LAPDm_Types {
-
- import from General_Types all;
- import from Osmocom_Types all;
-
- type uint3_t LapdmSapi;
- type BIT2 LapdmSBits;
- type BIT3 LapdmUBits;
- type BIT2 LapdmU2Bits;
-
- type record LapdmLengthIndicator {
- uint6_t len,
- boolean m,
- uint1_t el
- } with { variant "FIELDORDER(msb)" };
-
- template LapdmLengthIndicator t_LapdmLengthIndicator(template uint6_t len, boolean m := false) := {
- len := len,
- m := m,
- el := 1
- };
-
- /* TS 44.006 Figure 4 */
- type record LapdmAddressField {
- BIT1 spare,
- uint2_t lpd,
- LapdmSapi sapi,
- boolean c_r,
- boolean ea
- } with { variant "FIELDORDER(msb)" };
-
- template LapdmAddressField tr_LapdmAddr(template LapdmSapi sapi, template boolean c_r) := {
- spare := '0'B,
- lpd := 0,
- sapi := sapi,
- c_r := c_r,
- ea := true
- };
-
- type record LapdmCtrlI {
- BIT1 spare ('0'B),
- uint3_t n_s,
- boolean p,
- uint3_t n_r
- } with { variant "FIELDORDER(lsb)" };
-
- type record LapdmCtrlS {
- BIT2 spare ('01'B),
- LapdmSBits s,
- boolean p_f,
- uint3_t n_r
- } with { variant "FIELDORDER(lsb)" };
-
- type record LapdmCtrlU {
- BIT2 spare ('11'B),
- LapdmU2Bits u2,
- boolean p_f,
- LapdmUBits u
- } with { variant "FIELDORDER(lsb)" };
-
- /* TS 44.006 Table 3 */
- type union LapdmCtrl {
- LapdmCtrlS s,
- LapdmCtrlU u,
- LapdmCtrlI i,
- uint8_t other
- } with { variant "TAG(u, spare = '11'B;
- s, spare = '01'B;
- i, spare = '0'B;
- other, OTHERWISE)" };
- /* )" }; */
-
- /* TS 44.006 Table 4 */
-
- template LapdmCtrl t_LapdmCtrlS := {
- s := { spare := '01'B, s := ?, p_f := ?, n_r := ? }
- };
-
- template LapdmCtrl t_LapdmCtrlU := {
- u := { spare := '11'B, u2 := ?, p_f := ?, u := ? }
- };
-
- /* TS 44.006 Table 4 */
- template LapdmCtrl t_LapdmCtrlI(template uint3_t nr, template uint3_t ns, template boolean p) := {
- i := { spare := '0'B, n_s := ns, p := p, n_r := nr }
- };
-
- template LapdmCtrl t_LapdmCtrlRR(template uint3_t nr, template boolean pf) modifies t_LapdmCtrlS := {
- s := { s:= '00'B, p_f := pf, n_r := nr }
- };
-
- template LapdmCtrl t_LapdmCtrlRNR(template uint3_t nr, template boolean pf) modifies t_LapdmCtrlS := {
- s := { s:= '01'B, p_f := pf, n_r := nr }
- };
-
- template LapdmCtrl t_LapdmCtrlREJ(template uint3_t nr, template boolean pf) modifies t_LapdmCtrlS := {
- s := { s:= '10'B, p_f := pf, n_r := nr }
- };
-
- template LapdmCtrl t_LapdmCtrlSABM(template boolean p) modifies t_LapdmCtrlU := {
- u := { u2 := '11'B, p_f := p, u := '001'B }
- };
-
- template LapdmCtrl t_LapdmCtrlDM(template boolean f) modifies t_LapdmCtrlU := {
- u := { u2 := '11'B, p_f := f, u := '000'B }
- };
-
- template LapdmCtrl t_LapdmCtrlUI(template boolean p) modifies t_LapdmCtrlU := {
- u := { u2 := '00'B, p_f := p, u := '000'B }
- };
-
- template LapdmCtrl t_LapdmCtrlDISC(template boolean p) modifies t_LapdmCtrlU := {
- u := { u2 := '00'B, p_f := p, u := '010'B }
- };
-
- template LapdmCtrl t_LapdmCtrlUA(template boolean f) modifies t_LapdmCtrlU := {
- u := { u2 := '00'B, p_f := f, u := '011'B }
- };
-
- external function dec_LapdmAddressField(in octetstring stream) return LapdmAddressField
- with { extension "prototype(convert) decode(RAW)" };
-
- external function dec_LapdmCtrl(in octetstring stream) return LapdmCtrl
- with { extension "prototype(convert) decode(RAW)" };
-
- external function dec_LapdmCtrlU(in octetstring stream) return LapdmCtrlU
- with { extension "prototype(convert) decode(RAW)" };
-
- external function dec_LapdmLengthIndicator(in octetstring stream) return LapdmLengthIndicator
- with { extension "prototype(convert) decode(RAW)" };
-
- /* Format A is used on DCCHs for frames where there is no information field */
- type record LapdmFrameA {
- LapdmAddressField addr,
- LapdmCtrl ctrl,
- LapdmLengthIndicator len
- } with { variant "" };
-
- external function enc_LapdmFrameA(in LapdmFrameA si) return octetstring
- with { extension "prototype(convert) encode(RAW)" };
- external function dec_LapdmFrameA(in octetstring stream) return LapdmFrameA
- with { extension "prototype(convert) decode(RAW)" };
-
- /* Formats B, Bter and B4 are used on DCCHs for frames containing an information field:
- /* - format Bter is used on request of higher layers if and only if short L2 header type 1 is
- * supported and a UI command is to be transmitted on SAPI 0 */
- /* - format B4 is used for UI frames transmitted by the network on SACCH; */
- /* - format B is applied in all other cases. */
- /* Format Bbis is used only on BCCH, PCH, NCH, and AGCH.
-
- /* Format B */
- type record LapdmFrameB {
- LapdmAddressField addr,
- LapdmCtrl ctrl,
- uint6_t len,
- boolean m,
- uint1_t el (1),
- octetstring payload
- } with { variant (len) "LENGTHTO(payload)"
- variant "FIELDORDER(msb)" };
-
- external function enc_LapdmFrameB(in LapdmFrameB si) return octetstring
- with { extension "prototype(convert) encode(RAW)" };
- external function dec_LapdmFrameB(in octetstring stream) return LapdmFrameB
- with { extension "prototype(convert) decode(RAW)" };
-
- /* Format B4 */
- type record LapdmFrameB4 {
- LapdmAddressField addr,
- LapdmCtrl ctrl,
- octetstring payload
- } with { variant "" };
-
- external function enc_LapdmFrameB4(in LapdmFrameB4 si) return octetstring
- with { extension "prototype(convert) encode(RAW)" };
- external function dec_LapdmFrameB4(in octetstring stream) return LapdmFrameB4
- with { extension "prototype(convert) decode(RAW)" };
-
- type record LapdmFrameBbis {
- octetstring payload
- } with { variant "" };
-
- external function enc_LapdmFrameBbis(in LapdmFrameBbis si) return octetstring
- with { extension "prototype(convert) encode(RAW)" };
- external function dec_LapdmFrameBbis(in octetstring stream) return LapdmFrameBbis
- with { extension "prototype(convert) decode(RAW)" };
-
- type union LapdmFrame {
- LapdmFrameA a,
- LapdmFrameB b,
- LapdmFrameBbis bbis,
- LapdmFrameB4 b4
- } with { variant "" };
-
- external function enc_LapdmFrame(in LapdmFrame si) return octetstring
- with { extension "prototype(convert) encode(RAW)" };
- /* automatic decoding to the generic LapdmFrame will not work, you have to call one of the
- * type-specific decoder routines above */
-
-} with { encode "RAW"; /*variant "FIELDORDER(msb)" */}
diff --git a/lapdm/gen_links.sh b/lapdm/gen_links.sh
index 97e6e84..ab4eec3 100755
--- a/lapdm/gen_links.sh
+++ b/lapdm/gen_links.sh
@@ -18,5 +18,5 @@ gen_links $DIR $FILES
DIR=../library
-FILES="General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn RLCMAC_CSN1_Types.ttcn Osmocom_Types.ttcn L1CTL_PortType.ttcn L1CTL_Types.ttcn LAPDm_RAW_PT.ttcn"
+FILES="General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn RLCMAC_CSN1_Types.ttcn Osmocom_Types.ttcn L1CTL_PortType.ttcn L1CTL_Types.ttcn LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn RLCMAC_Types.ttcn RLCMAC_EncDec.cc"
gen_links $DIR $FILES
diff --git a/lapdm/regen_makefile.sh b/lapdm/regen_makefile.sh
index f4cf882..7a94d08 100755
--- a/lapdm/regen_makefile.sh
+++ b/lapdm/regen_makefile.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-FILES="*.ttcn UD_PT.cc UD_PT.hh"
+FILES="*.ttcn UD_PT.cc UD_PT.hh RLCMAC_EncDec.cc"
ttcn3_makefilegen -f L1CTL_Test.ttcn $FILES
sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile