aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-03-02 21:39:09 +0100
committerHarald Welte <laforge@gnumonks.org>2018-03-03 22:39:56 +0100
commitacc93ab873d79399c17e2b7e83d1b42a1a910061 (patch)
tree6e3bd792e87cc4c6e161d8655d6d5eab5abcb8b3 /library
parent3a40ec7acb08787b35c5e8793c78a19492354747 (diff)
GSM_Types: Switch TLLI from uint32_t to OCT4
The TLLI is not really a number, but an opaque 4-byte value. Change-Id: I0901340a2211eeeb899f312bcc60573fec11f220
Diffstat (limited to 'library')
-rw-r--r--library/GSM_Types.ttcn2
-rw-r--r--library/Osmocom_Gb_Types.ttcn6
-rw-r--r--library/RLCMAC_CSN1_Types.ttcn17
-rw-r--r--library/RLCMAC_EncDec.cc17
4 files changed, 19 insertions, 23 deletions
diff --git a/library/GSM_Types.ttcn b/library/GSM_Types.ttcn
index b86bfd71..c7b79916 100644
--- a/library/GSM_Types.ttcn
+++ b/library/GSM_Types.ttcn
@@ -16,7 +16,7 @@ module GSM_Types {
type integer GsmRxLev (0..63);
type integer GsmTsc (0..7) with { variant "FIELDLENGTH(8)" };
type uint32_t GsmTmsi;
- type uint32_t GprsTlli;
+ type OCT4 GprsTlli;
type hexstring GsmMcc length(3);
type hexstring GsmMnc length(2 .. 3);
type uint16_t GsmLac;
diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index 2f2a8baf..a3121b5a 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -551,7 +551,7 @@ octetstring sdu) := {
template PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu) := {
pDU_BSSGP_DL_UNITDATA := {
bssgpPduType := '00'O,
- tLLI_current := f_oct_or_wc(tlli, 4),
+ tLLI_current := tlli,
qoS_Profile := t_defaultQos,
pDU_Lifetime := t_DefaultLifetime(65535),
mS_Radio_Access_Capability := omit,
@@ -608,7 +608,7 @@ octetstring sdu) := {
}
}
- template PDU_BSSGP ts_BSSGP_UL_UD(OCT4 tlli, BssgpCellId cell_id, octetstring payload) := {
+ template PDU_BSSGP ts_BSSGP_UL_UD(GprsTlli tlli, BssgpCellId cell_id, octetstring payload) := {
pDU_BSSGP_UL_UNITDATA := {
bssgpPduType := '01'O,
tLLI := tlli,
@@ -631,7 +631,7 @@ octetstring sdu) := {
template octetstring payload := ?) := {
pDU_BSSGP_UL_UNITDATA := {
bssgpPduType := '01'O,
- tLLI := f_oct_or_wc(tlli, 4),
+ tLLI := tlli,
qoS_Profile := ?,
cell_Identifier := t_BSSGP_IE_CellId(cell_id),
pFI := *,
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index 076b1c16..2335c29d 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -52,7 +52,9 @@ module RLCMAC_CSN1_Types {
type record TenTlli {
BIT2 presence ('10'B),
GprsTlli tlli
- } with { variant "" };
+ } with { variant ""
+ variant (tlli) "BYTEORDER(first)"
+ };
type union GlobalTfiOrTlli {
NullGlobalTfi global_tfi,
@@ -78,7 +80,9 @@ module RLCMAC_CSN1_Types {
type record IO_Tlli {
BIT2 presence ('10'B),
GprsTlli tlli
- } with { variant "" };
+ } with { variant ""
+ variant (tlli) "BYTEORDER(first)"
+ };
type record IIO_Tqi {
BIT3 presence ('110'B),
PacketRequestReference pkt_req_ref
@@ -244,6 +248,7 @@ module RLCMAC_CSN1_Types {
variant (cont_res_tlli) "PRESENCE(cont_res_tlli_present = '1'B)"
variant (pkt_ta) "PRESENCE(pkt_ta_present = '1'B)"
variant (pwr_ctrl) "PRESENCE(pwr_ctrl_present = '1'B)"
+ variant (cont_res_tlli) "BYTEORDER(first)"
};
type record PacketUlAckNack {
PageMode page_mode,
@@ -323,12 +328,16 @@ module RLCMAC_CSN1_Types {
GprsTlli tlli,
CtrlAck ctrl_ack
/* TODO: Rel5 additions */
- } with { variant "" };
+ } with { variant ""
+ variant (tlli) "BYTEORDER(first)"
+ };
/* 1.2.8b Packet Uplink Dummy Control Block */
type record PacketUlDummy {
GprsTlli tlli
- } with { variant "" };
+ } with { variant ""
+ variant (tlli) "BYTEORDER(first)"
+ };
/* 11.2.0.2 */
type union RlcmacUlCtrlUnion {
diff --git a/library/RLCMAC_EncDec.cc b/library/RLCMAC_EncDec.cc
index 4cdeae7e..ad52f913 100644
--- a/library/RLCMAC_EncDec.cc
+++ b/library/RLCMAC_EncDec.cc
@@ -136,14 +136,7 @@ OCTETSTRING enc__RlcmacUlDataBlock(const RlcmacUlDataBlock& si)
}
if (in.mac__hdr().tlli__ind()) {
- /* FIXME */
- //in.tlli().encode(GSM__Types::GprsTlli_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
- INTEGER t = in.tlli();
- unsigned int tmp = t.get_long_long_val();
- ttcn_buffer.put_c(tmp >> 24);
- ttcn_buffer.put_c(tmp >> 16);
- ttcn_buffer.put_c(tmp >> 8);
- ttcn_buffer.put_c(tmp);
+ ttcn_buffer.put_string(in.tlli());
}
if (in.mac__hdr().pfi__ind()) {
@@ -215,13 +208,7 @@ RlcmacUlDataBlock dec__RlcmacUlDataBlock(const OCTETSTRING& stream)
/* parse optional TLLI */
if (ret_val.mac__hdr().tlli__ind()) {
- /* FIXME: Why is this not working ?!? */
- //ret_val.tlli().decode(GSM__Types::GprsTlli_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
- const unsigned char *cur = ttcn_buffer.get_read_data();
- unsigned int tmp = cur[0] << 24 | cur[1] << 16 | cur[2] << 8 | cur[3];
- INTEGER t;
- t.set_long_long_val(tmp);
- ret_val.tlli() = t;
+ ret_val.tlli() = OCTETSTRING(4, ttcn_buffer.get_read_data());
ttcn_buffer.increase_pos(4);
}
/* parse optional PFI */