diff options
Diffstat (limited to 'library/L1CTL_PortType.ttcn')
-rw-r--r-- | library/L1CTL_PortType.ttcn | 81 |
1 files changed, 47 insertions, 34 deletions
diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn index 19b3ee39..07c536ce 100644 --- a/library/L1CTL_PortType.ttcn +++ b/library/L1CTL_PortType.ttcn @@ -12,11 +12,12 @@ module L1CTL_PortType { import from L1CTL_Types all; import from UD_PortType all; + import from Socket_API_Definitions all; import from UD_Types all; import from Osmocom_Types all; - import from Osmocom_Types all; import from GSM_Types all; import from GSM_RR_Types all; + import from GSM_RestOctets all; import from L1CTL_PortType_CtrlFunct all; type record L1CTL_connect { @@ -32,7 +33,7 @@ module L1CTL_PortType { charstring m_l1ctl_sock_path := "/tmp/osmocom_l2"; } - function f_L1CTL_getMsgLen(in octetstring stream, inout ro_integer args) return integer { + function f_L1CTL_getMsgLen(in octetstring stream, inout Socket_API_Definitions.ro_integer args) return integer { var integer stream_len := lengthof(stream); var integer len; if (stream_len < 2) { @@ -42,10 +43,36 @@ module L1CTL_PortType { return len; } - function f_L1CTL_FBSB(L1CTL_PT pt, Arfcn arfcn, L1ctlCcchMode ccch_mode := CCCH_MODE_COMBINED, integer rxlev_exp := 57) { + function f_L1CTL_rx_data(L1CTL_PT pt, + template (present) RslChannelNr chan_nr := ?, + template (present) RslLinkId link_id := ?) + return L1ctlMessage { + var L1ctlMessage dl; + timer T := 2.0; + + T.start; + alt { + [] pt.receive(tr_L1CTL_DATA_IND(chan_nr, link_id)) -> value dl { + return dl; + } + [] pt.receive { repeat; } + [] T.timeout { + setverdict(fail, "Timeout waiting for L1CTL DATA.ind"); + mtc.stop; + } + } + + /* Unreachable, make TITAN happy */ + return dl; + } + + function f_L1CTL_FBSB(L1CTL_PT pt, GsmBandArfcn arfcn, + L1ctlCcchMode ccch_mode := CCCH_MODE_COMBINED, + integer rxlev_exp := 57) + { timer T := 15.0; for (var integer i := 0; i < 10; i := i+1) { - var L1ctlDlMessage dl; + var L1ctlMessage dl; pt.send(ts_L1CTL_FBSB_REQ(arfcn, valueof(t_L1CTL_FBSB_F_ALL), 0, ccch_mode, rxlev_exp)); T.start alt { @@ -80,9 +107,10 @@ module L1CTL_PortType { } } - function f_L1CTL_TCH_MODE(L1CTL_PT pt, L1ctlTchMode tch_mode) { + function f_L1CTL_TCH_MODE(L1CTL_PT pt, + template (value) L1ctlMessage tch_mode_req_tmpl := ts_L1CTL_TCH_MODE_REQ) { timer T := 2.0; - pt.send(ts_L1CTL_TCH_MODE_REQ(tch_mode)); + pt.send(tch_mode_req_tmpl); T.start; alt { [] pt.receive(tr_L1CTL_MsgType(L1CTL_TCH_MODE_CONF)) { } @@ -98,7 +126,7 @@ module L1CTL_PortType { template (value) RslChannelNr chan_nr := ts_RslChanNr_RACH(0), template (value) RslLinkId link_id := ts_RslLinkID_DCCH(0)) return GsmFrameNumber { - var L1ctlDlMessage rc; + var L1ctlMessage rc; var GsmFrameNumber fn; timer T := 2.0; T.start @@ -118,7 +146,7 @@ module L1CTL_PortType { L1CTL_PT pt, uint16_t ra11, L1ctlRachSynchSeq seq, uint8_t combined := 1, uint16_t offset := 0 ) return GsmFrameNumber { - var L1ctlDlMessage rc; + var L1ctlMessage rc; var GsmFrameNumber fn; timer T := 2.0; @@ -142,7 +170,7 @@ module L1CTL_PortType { function f_L1CTL_WAIT_IMM_ASS(L1CTL_PT pt, uint8_t ra, GsmFrameNumber rach_fn) return ImmediateAssignment { var template GsmRrMessage rr_imm_ass; - var L1ctlDlMessage dl; + var L1ctlMessage dl; var GsmRrMessage rr; timer T := 10.0; @@ -176,7 +204,7 @@ module L1CTL_PortType { function f_L1CTL_WAIT_IMM_ASS_TBF_DL(L1CTL_PT pt, GprsTlli tlli) return ImmediateAssignment { var template PacketDlAssign dl_ass := tr_PacketDlAssign(tlli); var template IaRestOctets rest := tr_IaRestOctets_DLAss(dl_ass); - var L1ctlDlMessage dl; + var L1ctlMessage dl; var GsmRrMessage rr; timer T := 10.0; T.start; @@ -201,21 +229,6 @@ module L1CTL_PortType { return rr.payload.imm_ass; } - function f_L1CTL_TBF_CFG(L1CTL_PT pt, boolean is_uplink, TfiUsfArr tfi_usf) { - timer T := 2.0; - T.start; - pt.send(ts_L1CTL_TBF_CFG_REQ(is_uplink, tfi_usf)); - alt { - [] pt.receive(tr_L1CTL_TBF_CFG_CONF(is_uplink)) {} - [] pt.receive { repeat }; - [] T.timeout { - setverdict(fail, "Timeout waiting for L1CTL_TBF_CFG_CONF"); - mtc.stop; - }; - } - T.stop; - } - /* Send DM_EST_REQ from parameters derived from IMM ASS */ function f_L1CTL_DM_EST_REQ_IA(L1CTL_PT pt, ImmediateAssignment imm_ass, L1ctlMA ma := {}) { /* FIXME: handle Packet Channel Description */ @@ -282,28 +295,28 @@ module L1CTL_PortType { pout.err := pin.result.err; } with { extension "prototype(fast)" } - private function L1CTL_to_UD_ul(in L1ctlUlMessage pin, out UD_send_data pout) { - var L1ctlUlMessageLV msg_lv := { msg := pin }; - pout.data := enc_L1ctlUlMessageLV(msg_lv); + private function L1CTL_to_UD(in L1ctlMessage pin, out UD_send_data pout) { + var L1ctlMessageLV msg_lv := { msg := pin }; + pout.data := enc_L1ctlMessageLV(msg_lv); pout.id := 0; } with { extension "prototype(fast)" } - private function UD_to_L1CTL_dl(in UD_send_data pin, out L1ctlDlMessage pout) { - var L1ctlDlMessageLV msg_lv := dec_L1ctlDlMessageLV(pin.data); + private function UD_to_L1CTL(in UD_send_data pin, out L1ctlMessage pout) { + var L1ctlMessageLV msg_lv := dec_L1ctlMessageLV(pin.data); pout:= msg_lv.msg; } with { extension "prototype(fast)" } type port L1CTL_PT message { - out L1ctlUlMessage + out L1ctlMessage out L1CTL_connect - in L1ctlDlMessage + in L1ctlMessage in L1CTL_connect_result in UD_listen_result in UD_connected } with { extension "user UD_PT - out(L1ctlUlMessage -> UD_send_data: function(L1CTL_to_UD_ul); + out(L1ctlMessage -> UD_send_data: function(L1CTL_to_UD); L1CTL_connect -> UD_connect: function(L1CTL_to_UD_connect)) - in(UD_send_data -> L1ctlDlMessage: function(UD_to_L1CTL_dl); + in(UD_send_data -> L1ctlMessage: function(UD_to_L1CTL); UD_connect_result -> L1CTL_connect_result: function(UD_to_L1CTL_connect_result); UD_listen_result -> UD_listen_result: simple; UD_connected -> UD_connected: simple |