diff options
Diffstat (limited to 'library/AbisOML_Types.ttcn')
-rw-r--r-- | library/AbisOML_Types.ttcn | 54 |
1 files changed, 50 insertions, 4 deletions
diff --git a/library/AbisOML_Types.ttcn b/library/AbisOML_Types.ttcn index 0a562ae9..99ad2520 100644 --- a/library/AbisOML_Types.ttcn +++ b/library/AbisOML_Types.ttcn @@ -616,6 +616,15 @@ type record OML_FOM_T200 { uint8_t sacch_rch_sapi3_10ms }; +/* Section 9.4.64 */ +type record OML_FOM_ARI { + uint16_t len, + uint8_t non_reported_attr_len, + set of uint8_t non_reported_attr optional, + OML_FOM_IE_List ies optional +} with { variant (len) "LENGTHTO(non_reported_attr_len,non_reported_attr,ies)" + variant (non_reported_attr_len) "LENGTHTO(non_reported_attr)" }; + type union OML_FOM_IE_Body { OML_FOM_AbisChannel abis_channel, OML_FOM_AdministrativeState adm_state, @@ -669,6 +678,8 @@ type union OML_FOM_IE_Body { uint16_t paging_cfg, OCT2 freq_ctrl, + OML_FOM_ARI ari, + OML_IE_L16V other }; @@ -728,6 +739,8 @@ type record OML_FOM_IE { paging_cfg, iei = NM_ATT_IPACC_PAGING_CFG; freq_ctrl, iei = NM_ATT_IPACC_FREQ_CTRL; + ari, iei = NM_ATT_GET_ARI; + other, OTHERWISE; )" }; @@ -1124,6 +1137,20 @@ template OML_PDU tr_OML_GetAttributes(template OML_FOM_ObjectClass obj_class, tr_OML_IE(NM_ATT_LIST_REQ_ATTR, OML_FOM_IE_Body:{other := tr_OML_IE_L16V(?, req_attr)}) }); +/* 8.11.3 Get Attributes Response */ +template (value) OML_PDU ts_OML_GetAttributesResponse(template (value) OML_FOM_ObjectClass obj_class, + template (value) OML_FOM_ObjectInstance obj_inst, + template (value) octetstring req_attr) := + ts_OML_MsgType(NM_MT_GET_ATTR_RESP, obj_class, obj_inst, { + ts_OML_IE(NM_ATT_GET_ARI, OML_FOM_IE_Body:{other := ts_OML_IE_L16V(0, req_attr)}) + }); +template OML_PDU tr_OML_GetAttributesResponse(template OML_FOM_ObjectClass obj_class, + template OML_FOM_ObjectInstance obj_inst, + template OML_FOM_ARI ari := ?) := + tr_OML_MsgType(NM_MT_GET_ATTR_RESP, obj_class, obj_inst, { + tr_OML_IE(NM_ATT_GET_ARI, OML_FOM_IE_Body:{ari := ari}) + }); + /* convert a request into an ACK */ function f_OML_make_ack(OML_PDU orig) return OML_PDU { var OML_PDU resp := orig; @@ -1199,6 +1226,21 @@ function f_OML_make_nack_exp(OML_PDU orig, template OML_FOM_NackCause cause) ret return resp; } +function f_OML_FOM_IE_List_get_ie(OML_FOM_IE_List ie_list, OML_FOM_IE_Type iei) return OML_FOM_IE_Body +{ + for (var integer i := 0; i < lengthof(ie_list); i := i + 1) { + if (ie_list[i].iei == iei) { + return ie_list[i].body; + } + } + var OML_FOM_IE_Body dummy; + return dummy; /*TODO: setverdict(fail?) */ +} + +function f_OML_FOM_get_ie(OML_FOM fom, OML_FOM_IE_Type iei) return OML_FOM_IE_Body +{ + return f_OML_FOM_IE_List_get_ie(fom.ies, iei); +} /*********************************************************************** @@ -1207,13 +1249,17 @@ function f_OML_make_nack_exp(OML_PDU orig, template OML_FOM_NackCause cause) ret -template (value) OML_PDU ts_OML_IPA_RslConnect(uint8_t stream_id, uint16_t port_nr) := - ts_OML_IPA_MsgType(NM_MT_IPACC_RSL_CONNECT, NM_OC_BASEB_TRANSC, ts_OML_ObjectInstance(0,0,255), { +template (value) OML_PDU ts_OML_IPA_RslConnect(template (value) OML_FOM_ObjectInstance obj_inst, + template (value) uint8_t stream_id, + template (value) uint16_t port_nr) := + ts_OML_IPA_MsgType(NM_MT_IPACC_RSL_CONNECT, NM_OC_BASEB_TRANSC, obj_inst, { ts_OML_IE(NM_ATT_IPACC_STREAM_ID, OML_FOM_IE_Body:{stream_id := stream_id}), ts_OML_IE(NM_ATT_IPACC_DST_IP_PORT, OML_FOM_IE_Body:{portnr := port_nr}) }); -template OML_PDU tr_OML_IPA_RslConnect(template uint8_t stream_id, template uint16_t port_nr) := - tr_OML_IPA_MsgType(NM_MT_IPACC_RSL_CONNECT, NM_OC_BASEB_TRANSC, tr_OML_ObjectInstance(0,0,255), { +template OML_PDU tr_OML_IPA_RslConnect(template (present) OML_FOM_ObjectInstance obj_inst, + template (present) uint8_t stream_id, + template (present) uint16_t port_nr) := + tr_OML_IPA_MsgType(NM_MT_IPACC_RSL_CONNECT, NM_OC_BASEB_TRANSC, obj_inst, { tr_OML_IE(NM_ATT_IPACC_STREAM_ID, OML_FOM_IE_Body:{stream_id := stream_id}), tr_OML_IE(NM_ATT_IPACC_DST_IP_PORT, OML_FOM_IE_Body:{portnr := port_nr}) }); |