<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12943">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">PCUIF: Prepare for simulating BTS side of PCU Interface<br><br>Our TTCN-3 PCUIF code so far was only used to simulate the PCU side<br>of the interface: connecting to the socket as a client.  However,<br>it's also useful to emulate the BTS side of the interface: Listening<br>for a connection as a server.<br><br>Also, the send/receive templates are prepared for the inverse role.<br><br>Change-Id: I779ff2903cab8c13ffb8fe10a4cacd996bafe69a<br>---<br>M library/PCUIF_CodecPort.ttcn<br>M library/PCUIF_Types.ttcn<br>2 files changed, 316 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/43/12943/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/PCUIF_CodecPort.ttcn b/library/PCUIF_CodecPort.ttcn</span><br><span>index 389c5ca..676a91a 100644</span><br><span>--- a/library/PCUIF_CodecPort.ttcn</span><br><span>+++ b/library/PCUIF_CodecPort.ttcn</span><br><span>@@ -83,6 +83,35 @@</span><br><span>   return -23;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_pcuif_listen(PCUIF_CODEC_PT pt, charstring sock) return integer {</span><br><span style="color: hsl(120, 100%, 40%);">+    var UD_listen_result res;</span><br><span style="color: hsl(120, 100%, 40%);">+     var UD_connected udc;</span><br><span style="color: hsl(120, 100%, 40%);">+ timer T := 5.0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     pt.send(UD_listen:{sock});</span><br><span style="color: hsl(120, 100%, 40%);">+    T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] pt.receive(UD_listen_result:?) -> value res {</span><br><span style="color: hsl(120, 100%, 40%);">+           if (ispresent(res.result) and ispresent (res.result.result_code) and</span><br><span style="color: hsl(120, 100%, 40%);">+              res.result.result_code == ERROR) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (ispresent(res.result.err)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              setverdict(fail, "Error listening on PCU socket: ", res.result.err);</span><br><span style="color: hsl(120, 100%, 40%);">+                        } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                              setverdict(fail, "Error listening on PCU socket");</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+                     mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      return res.id;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                setverdict(fail, "Timeout waiting for PCU socket connection");</span><br><span style="color: hsl(120, 100%, 40%);">+              mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return -23;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> function f_PCUIF_tx_imm_ass_pch(PCUIF_CODEC_PT pt, integer conn_id, octetstring imm_ass, hexstring imsi,</span><br><span>                                 uint8_t bts_nr := 0) return uint32_t {</span><br><span>       var PCUIF_send_data sd;</span><br><span>diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn</span><br><span>index 7bfaf9b..89a4c33 100644</span><br><span>--- a/library/PCUIF_Types.ttcn</span><br><span>+++ b/library/PCUIF_Types.ttcn</span><br><span>@@ -125,11 +125,12 @@</span><br><span>         OCT8            tsc,</span><br><span>         uint32_t        hLayer1</span><br><span> } with { variant (pdch_mask) "BITORDER(msb)" };</span><br><span style="color: hsl(120, 100%, 40%);">+type record length(8) of PCUIF_InfoTrx PCUIF_InfoTrxs;</span><br><span> </span><br><span> type record PCUIF_info_ind {</span><br><span>     uint32_t        version,</span><br><span>     PCUIF_Flags     flags,</span><br><span style="color: hsl(0, 100%, 40%);">-  record length(8) of PCUIF_InfoTrx       trx,</span><br><span style="color: hsl(120, 100%, 40%);">+  PCUIF_InfoTrxs  trx,</span><br><span>         uint8_t         bsic,</span><br><span> </span><br><span>    uint16_t        mcc,</span><br><span>@@ -232,6 +233,29 @@</span><br><span>  with { extension "prototype(convert) decode(RAW)" };</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_Message ts_PCUIF_RTS_REQ(template (value) uint8_t bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) uint8_t trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) uint8_t ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) PCUIF_Sapi sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             template (value) uint32_t fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         template (value) uint16_t arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) uint8_t block_nr</span><br><span style="color: hsl(120, 100%, 40%);">+                                     ) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        msg_type := PCU_IF_MSG_RTS_REQ,</span><br><span style="color: hsl(120, 100%, 40%);">+       bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                rts_req := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  sapi := sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                 spare := '000000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   fn := fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                     arfcn := arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                       trx_nr := trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ts_nr := ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       block_nr := block_nr</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> template PCUIF_Message tr_PCUIF_RTS_REQ(template uint8_t bts_nr := ?,</span><br><span>                                        template uint8_t trx_nr := ?,</span><br><span>                                        template uint8_t ts_nr := ?,</span><br><span>@@ -266,6 +290,20 @@</span><br><span>          }</span><br><span>    }</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+template PCUIF_Message tr_PCUIF_TXT_IND(template uint8_t bts_nr, template PCUIF_TextType tt,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  template charstring text := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+   msg_type := PCU_IF_MSG_TXT_IND,</span><br><span style="color: hsl(120, 100%, 40%);">+       bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                txt_ind := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  txt_type := tt,</span><br><span style="color: hsl(120, 100%, 40%);">+                       text := text</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> template (value) PCUIF_Message ts_PCUIF_ACT_REQ(uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr) := {</span><br><span>  msg_type := PCU_IF_MSG_ACT_REQ,</span><br><span>@@ -280,6 +318,20 @@</span><br><span>               }</span><br><span>    }</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+template PCUIF_Message tr_PCUIF_ACT_REQ(template uint8_t bts_nr, template uint8_t trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     template uint8_t ts_nr) := {</span><br><span style="color: hsl(120, 100%, 40%);">+  msg_type := PCU_IF_MSG_ACT_REQ,</span><br><span style="color: hsl(120, 100%, 40%);">+       bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                act_req := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  is_activate := 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                     trx_nr := trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ts_nr := ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       spare := '00'O</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> template (value) PCUIF_Message ts_PCUIF_DEACT_REQ(uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr) := {</span><br><span>    msg_type := PCU_IF_MSG_ACT_REQ,</span><br><span>@@ -294,7 +346,53 @@</span><br><span>               }</span><br><span>    }</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+template PCUIF_Message tr_PCUIF_DEACT_REQ(template uint8_t bts_nr, template uint8_t trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     template uint8_t ts_nr) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        msg_type := PCU_IF_MSG_ACT_REQ,</span><br><span style="color: hsl(120, 100%, 40%);">+       bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                act_req := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  is_activate := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                     trx_nr := trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ts_nr := ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       spare := '00'O</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_Message ts_PCUIF_DATA_IND(template (value) uint8_t bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            template (value) uint8_t trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) uint8_t ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) uint8_t block_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            template (value) PCUIF_Sapi sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             template (value) OCT162 data,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint32_t fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint16_t arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) int8_t rssi := -80,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) uint16_t ber10k := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                template (value) int16_t ta_offs_qbits := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) uint16_t lqual_cb := 10) := {</span><br><span style="color: hsl(120, 100%, 40%);">+       msg_type := PCU_IF_MSG_DATA_IND,</span><br><span style="color: hsl(120, 100%, 40%);">+      bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                data_ind := {</span><br><span style="color: hsl(120, 100%, 40%);">+                 sapi := sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                 len := lengthof(valueof(data)),</span><br><span style="color: hsl(120, 100%, 40%);">+                       data := data,</span><br><span style="color: hsl(120, 100%, 40%);">+                 fn := fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                     arfcn := arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                       trx_nr := trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ts_nr := ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       block_nr := block_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                 rssi := rssi,</span><br><span style="color: hsl(120, 100%, 40%);">+                 ber10k := ber10k,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ta_offs_qbits := ta_offs_qbits,</span><br><span style="color: hsl(120, 100%, 40%);">+                       lqual_cb := lqual_cb</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> template PCUIF_Message tr_PCUIF_DATA_IND(template uint8_t bts_nr := ?,</span><br><span>                                        template uint8_t trx_nr := ?,</span><br><span>                                        template uint8_t ts_nr := ?,</span><br><span>@@ -347,7 +445,63 @@</span><br><span>                 }</span><br><span>    }</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+template PCUIF_Message tr_PCUIF_DATA_REQ(template uint8_t bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                      template uint8_t trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                      template uint8_t ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       template uint8_t block_nr := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       template uint32_t fn := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    template PCUIF_Sapi sapi := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                        template octetstring data := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ msg_type := PCU_IF_MSG_DATA_REQ,</span><br><span style="color: hsl(120, 100%, 40%);">+      bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                data_req := {</span><br><span style="color: hsl(120, 100%, 40%);">+                 sapi := sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                 len := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                     data := data,</span><br><span style="color: hsl(120, 100%, 40%);">+                 fn := fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                     arfcn := 0, /* unused in BTS */</span><br><span style="color: hsl(120, 100%, 40%);">+                       trx_nr := trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ts_nr := ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       block_nr := block_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                 /* measurement parameters below unused on Tx */</span><br><span style="color: hsl(120, 100%, 40%);">+                       rssi := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    ber10k := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                  ta_offs_qbits := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                   lqual_cb := 0</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_Message ts_PCUIF_DATA_CNF(template (value) uint8_t bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            template (value) uint8_t trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) uint8_t ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) uint8_t block_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            template (value) uint32_t fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint16_t arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) PCUIF_Sapi sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             template (value) octetstring data) := {</span><br><span style="color: hsl(120, 100%, 40%);">+      msg_type := PCU_IF_MSG_DATA_CNF,</span><br><span style="color: hsl(120, 100%, 40%);">+      bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                data_cnf := {</span><br><span style="color: hsl(120, 100%, 40%);">+                 sapi := sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                 len := 0, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                   data := data,</span><br><span style="color: hsl(120, 100%, 40%);">+                 fn := fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                     arfcn := arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                       trx_nr := trx_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ts_nr := ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       block_nr := block_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                 rssi := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    ber10k := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                  ta_offs_qbits := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                   lqual_cb := 0</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> template PCUIF_Message tr_PCUIF_DATA_CNF(template uint8_t bts_nr := ?,</span><br><span>                                        template uint8_t trx_nr := ?,</span><br><span>                                        template uint8_t ts_nr := ?,</span><br><span>@@ -374,6 +528,29 @@</span><br><span>         }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_Message ts_PCUIF_RACH_IND(template (value) uint8_t bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) uint16_t ra,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint8_t is_11bit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            template (value) uint8_t burst_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) uint32_t fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint16_t arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) int16_t qta := 0</span><br><span style="color: hsl(120, 100%, 40%);">+) := {</span><br><span style="color: hsl(120, 100%, 40%);">+    msg_type := PCU_IF_MSG_RACH_IND,</span><br><span style="color: hsl(120, 100%, 40%);">+      bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                rach_ind := {</span><br><span style="color: hsl(120, 100%, 40%);">+                 sapi := PCU_IF_SAPI_RACH,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ra := ra,</span><br><span style="color: hsl(120, 100%, 40%);">+                     qta := qta,</span><br><span style="color: hsl(120, 100%, 40%);">+                   fn := fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                     arfcn := arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                       is_11bit := is_11bit,</span><br><span style="color: hsl(120, 100%, 40%);">+                 burst_type := burst_type</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> template PCUIF_Message tr_PCUIF_RACH_IND(template uint8_t bts_nr := ?,</span><br><span>                                        template uint16_t ra := ?,</span><br><span>                                   template uint8_t is_11bit := ?,</span><br><span>@@ -395,6 +572,21 @@</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_Message ts_PCUIF_PAG_REQ(template (value) uint8_t bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) OCT9 id_lv,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) uint8_t chan_needed,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         template (value) PCUIF_Sapi sapi) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        msg_type := PCU_IF_MSG_PAG_REQ,</span><br><span style="color: hsl(120, 100%, 40%);">+       bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                pag_req := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  sapi := sapi,</span><br><span style="color: hsl(120, 100%, 40%);">+                 chan_needed := chan_needed,</span><br><span style="color: hsl(120, 100%, 40%);">+                   identity_lv := id_lv</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> template PCUIF_Message tr_PCUIF_PAG_REQ(template uint8_t bts_nr := ?,</span><br><span>                                         template OCT9 id_lv := ?,</span><br><span>                                    template uint8_t chan_needed := ?,</span><br><span>@@ -411,6 +603,100 @@</span><br><span>  }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const PCUIF_Flags c_PCUIF_Flags_default := {</span><br><span style="color: hsl(120, 100%, 40%);">+      bts_active := true,</span><br><span style="color: hsl(120, 100%, 40%);">+   sysmo_direct_dsp := false,</span><br><span style="color: hsl(120, 100%, 40%);">+    spare := '00000000000000'B,</span><br><span style="color: hsl(120, 100%, 40%);">+   cs1 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+  cs2 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+  cs3 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+  cs4 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+  mcs1 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs2 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs3 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs4 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs5 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs6 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs7 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs8 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs9 := true,</span><br><span style="color: hsl(120, 100%, 40%);">+ spare2 := '000'B</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_InfoTrx ts_PCUIF_InfoTrx(template (value) uint16_t arfcn := 871,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) BIT8 pdch_mask := '00000001'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               OCT1 tsc := '07'O) := {</span><br><span style="color: hsl(120, 100%, 40%);">+       arfcn := arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+       pdch_mask := pdch_mask,</span><br><span style="color: hsl(120, 100%, 40%);">+       spare := '00'O,</span><br><span style="color: hsl(120, 100%, 40%);">+       tsc := tsc & tsc & tsc & tsc & tsc & tsc & tsc & tsc,</span><br><span style="color: hsl(120, 100%, 40%);">+     hLayer1 := 0</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_InfoTrx ts_PCUIF_InfoTrxNULL := ts_PCUIF_InfoTrx(0, '00000000'B, '00'O);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_InfoTrxs ts_PCUIF_InfoTrxs_def := {</span><br><span style="color: hsl(120, 100%, 40%);">+              ts_PCUIF_InfoTrx, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL,</span><br><span style="color: hsl(120, 100%, 40%);">+           ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PCUIF_Message ts_PCUIF_INFO_IND(template (value) uint8_t bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) uint16_t nsei,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) uint16_t nsvci,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) uint16_t bvci,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) uint16_t local_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint16_t remote_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                template (value) uint32_t remote_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) PCUIF_Flags flags := c_PCUIF_Flags_default,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) uint16_t mcc := 262,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint16_t mnc := 42,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template (value) uint16_t lac := 2342,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                template (value) uint8_t rac := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            template (value) uint16_t cell_id := 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) uint8_t bsic := 7,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           template (value) PCUIF_InfoTrxs trx := ts_PCUIF_InfoTrxs_def,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template (value) uint32_t version := PCU_IF_VERSION) := {</span><br><span style="color: hsl(120, 100%, 40%);">+    msg_type := PCU_IF_MSG_INFO_IND,</span><br><span style="color: hsl(120, 100%, 40%);">+      bts_nr := bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+     spare := '0000'O,</span><br><span style="color: hsl(120, 100%, 40%);">+     u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                info_ind := {</span><br><span style="color: hsl(120, 100%, 40%);">+                 version := version,</span><br><span style="color: hsl(120, 100%, 40%);">+                   flags := flags,</span><br><span style="color: hsl(120, 100%, 40%);">+                       trx := trx,</span><br><span style="color: hsl(120, 100%, 40%);">+                   bsic := bsic,</span><br><span style="color: hsl(120, 100%, 40%);">+                 mcc := mcc,</span><br><span style="color: hsl(120, 100%, 40%);">+                   mnc := mnc,</span><br><span style="color: hsl(120, 100%, 40%);">+                   mnc_3_digits := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    lac := lac,</span><br><span style="color: hsl(120, 100%, 40%);">+                   rac := rac,</span><br><span style="color: hsl(120, 100%, 40%);">+                   nsei := nsei,</span><br><span style="color: hsl(120, 100%, 40%);">+                 nse_timer := { 3, 3, 3, 3, 30, 3, 10 },</span><br><span style="color: hsl(120, 100%, 40%);">+                       cell_timer := { 3, 3, 3, 3, 3, 10, 3, 10, 3, 10, 3 },</span><br><span style="color: hsl(120, 100%, 40%);">+                 cell_id := cell_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                   repeat_time := 5 * 50,</span><br><span style="color: hsl(120, 100%, 40%);">+                        repeat_count := 3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    bvci := bvci,</span><br><span style="color: hsl(120, 100%, 40%);">+                 t3142 := 20,</span><br><span style="color: hsl(120, 100%, 40%);">+                  t3169 := 5,</span><br><span style="color: hsl(120, 100%, 40%);">+                   t3191 := 5,</span><br><span style="color: hsl(120, 100%, 40%);">+                   t3193_10ms := 160,</span><br><span style="color: hsl(120, 100%, 40%);">+                    t3195 := 5,</span><br><span style="color: hsl(120, 100%, 40%);">+                   t3101 := 10,</span><br><span style="color: hsl(120, 100%, 40%);">+                  t3103 := 4,</span><br><span style="color: hsl(120, 100%, 40%);">+                   t3105 := 8,</span><br><span style="color: hsl(120, 100%, 40%);">+                   cv_countdown := 15,</span><br><span style="color: hsl(120, 100%, 40%);">+                   dl_tbf_ext := 250 * 10, /* ms */</span><br><span style="color: hsl(120, 100%, 40%);">+                      ul_tbf_ext := 250 * 10, /* ms */</span><br><span style="color: hsl(120, 100%, 40%);">+                      initial_cs := 2,</span><br><span style="color: hsl(120, 100%, 40%);">+                      initial_mcs := 6,</span><br><span style="color: hsl(120, 100%, 40%);">+                     nsvci := { nsvci, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                        local_pprt := { local_port, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                      remote_port := { remote_port, 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                    remote_ip := { remote_ip , 0 }</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> template PCUIF_Message tr_PCUIF_INFO_IND(template uint8_t bts_nr := ?,</span><br><span>                                        template PCUIF_Flags flags := ?,</span><br><span>                                     template uint32_t version := PCU_IF_VERSION) := {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12943">change 12943</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12943"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I779ff2903cab8c13ffb8fe10a4cacd996bafe69a </div>
<div style="display:none"> Gerrit-Change-Number: 12943 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>