| /* SABP Templates in TTCN-3 |
| * (C) 2019 Harald Welte <laforge@gnumonks.org> |
| * All rights reserved. |
| * |
| * Released under the terms of GNU General Public License, Version 2 or |
| * (at your option) any later version. |
| * |
| * SPDX-License-Identifier: GPL-2.0-or-later |
| */ |
| |
| module SABP_Templates { |
| |
| import from General_Types all; |
| |
| import from SABP_IEs all; |
| import from SABP_CommonDataTypes all; |
| import from SABP_Constants all; |
| import from SABP_Containers all; |
| import from SABP_PDU_Contents all; |
| import from SABP_PDU_Descriptions all; |
| |
| template (value) Service_Area_Identifier ts_SabpSai(template (value) OCT3 plmn_id, |
| template (value) OCT2 lac, |
| template (value) OCT2 sac) := { |
| pLMNidentity := plmn_id, |
| lac := lac, |
| sac := sac |
| } |
| |
| /* 9.1.3 WRITE REPLACE */ |
| template (value) SABP_PDU |
| ts_SABP_Write(template (value) BIT16 msg_id, template (value) BIT16 ser_nr, |
| template (value) Service_Areas_List sa_list, template (value) integer rep_per, |
| template (value) integer num_bcast, template (value) BIT8 dcs, |
| template (value) bitstring content) := { |
| initiatingMessage := { |
| procedureCode := id_Write_Replace, |
| criticality := reject, |
| value_ := { |
| Write_Replace := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_New_Serial_Number, |
| criticality := reject, |
| value_ := { New_Serial_Number := ser_nr } |
| }, { |
| /* Optional: Old Serial Number */ |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| }, { |
| /* Optional: Category */ |
| id := SABP_Constants.id_Repetition_Period, |
| criticality := reject, |
| value_ := { Repetition_Period := rep_per } |
| }, { |
| id := SABP_Constants.id_Number_of_Broadcasts_Requested, |
| criticality := reject, |
| value_ := { Number_of_Broadcasts_Requested := num_bcast } |
| }, { |
| id := SABP_Constants.id_Data_Coding_Scheme, |
| criticality := reject, |
| value_ := { Data_Coding_Scheme := dcs } |
| }, { |
| id := SABP_Constants.id_Broadcast_Message_Content, |
| criticality := reject, |
| value_ := { Broadcast_Message_Content := content } |
| } |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_Write(template (present) BIT16 msg_id, template (present) BIT16 ser_nr, |
| template (present) Service_Areas_List sa_list := ?, template (present) integer rep_per := ?, |
| template (present) integer num_bcast := ?, template (present) BIT8 dcs := ?, |
| template (present) bitstring content := ?) := { |
| initiatingMessage := { |
| procedureCode := id_Write_Replace, |
| criticality := reject, |
| value_ := { |
| Write_Replace := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_New_Serial_Number, |
| criticality := reject, |
| value_ := { New_Serial_Number := ser_nr } |
| }, *, /* Optional: Old Serial Number */ |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| }, * /* Optional: Category */, |
| { |
| id := SABP_Constants.id_Repetition_Period, |
| criticality := reject, |
| value_ := { Repetition_Period := rep_per } |
| }, { |
| id := SABP_Constants.id_Number_of_Broadcasts_Requested, |
| criticality := reject, |
| value_ := { Number_of_Broadcasts_Requested := num_bcast } |
| }, { |
| id := SABP_Constants.id_Data_Coding_Scheme, |
| criticality := reject, |
| value_ := { Data_Coding_Scheme := dcs } |
| }, { |
| id := SABP_Constants.id_Broadcast_Message_Content, |
| criticality := reject, |
| value_ := { Broadcast_Message_Content := content } |
| } |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.4 WRITE REPLACE COMPLETE */ |
| template (value) SABP_PDU |
| ts_SABPWriteCompl(template (value) BIT16 msg_id, template (value) BIT16 ser_nr) := { |
| successfulOutcome := { |
| procedureCode := id_Write_Replace, |
| criticality := reject, |
| value_ := { |
| Write_Replace_Complete := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_New_Serial_Number, |
| criticality := reject, |
| value_ := { New_Serial_Number := ser_nr } |
| } |
| /* Optional: Number of Broadcasts Completed List */ |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_WriteCompl(template (present) BIT16 msg_id, template (present) BIT16 ser_nr) := { |
| successfulOutcome := { |
| procedureCode := id_Write_Replace, |
| criticality := reject, |
| value_ := { |
| Write_Replace_Complete := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_New_Serial_Number, |
| criticality := reject, |
| value_ := { New_Serial_Number := ser_nr } |
| }, * |
| /* Optional: Number of Broadcasts Completed List */ |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.5 WRITE REPLACE FAILURE */ |
| template (value) SABP_PDU |
| ts_SABP_WriteFail(template (value) BIT16 msg_id, template (value) BIT16 ser_nr, |
| template (value) Failure_List fail_list) := { |
| unsuccessfulOutcome := { |
| procedureCode := id_Write_Replace, |
| criticality := reject, |
| value_ := { |
| Write_Replace_Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_New_Serial_Number, |
| criticality := reject, |
| value_ := { New_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Failure_List, |
| criticality := reject, |
| value_ := { Failure_List := fail_list } |
| } |
| /* Optional: Number of Broadcasts Completed List */ |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_WriteFail(template (present) BIT16 msg_id, template (present) BIT16 ser_nr, |
| template (present) Failure_List fail_list := ?) := { |
| unsuccessfulOutcome := { |
| procedureCode := id_Write_Replace, |
| criticality := reject, |
| value_ := { |
| Write_Replace_Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_New_Serial_Number, |
| criticality := reject, |
| value_ := { New_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Failure_List, |
| criticality := reject, |
| value_ := { Failure_List := fail_list } |
| }, * |
| /* Optional: Number of Broadcasts Completed List */ |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.6 KILL */ |
| template (value) SABP_PDU |
| ts_SABP_Kill(template (value) BIT16 msg_id, template (value) BIT16 ser_nr, |
| template (value) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Kill, |
| criticality := reject, |
| value_ := { |
| kill_ := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_Old_Serial_Number, |
| criticality := reject, |
| value_ := { Old_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_Kill(template (present) BIT16 msg_id, template (present) BIT16 ser_nr, |
| template (present) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Kill, |
| criticality := reject, |
| value_ := { |
| kill_ := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_Old_Serial_Number, |
| criticality := reject, |
| value_ := { Old_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.7 KILL COMPLETE */ |
| template (value) SABP_PDU |
| ts_SABP_KillCompl(template (value) BIT16 msg_id, template (value) BIT16 ser_nr, |
| template (value) Number_of_Broadcasts_Completed_List num_bcast_compl) := { |
| successfulOutcome := { |
| procedureCode := id_Kill, |
| criticality := reject, |
| value_ := { |
| Kill_Complete := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_Old_Serial_Number, |
| criticality := reject, |
| value_ := { Old_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Number_of_Broadcasts_Completed_List, |
| criticality := reject, |
| value_ := { Number_of_Broadcasts_Completed_List := num_bcast_compl } |
| } |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_KillCompl(template (present) BIT16 msg_id, template (present) BIT16 ser_nr, |
| template (present) Number_of_Broadcasts_Completed_List num_bcast_compl := ?) := { |
| successfulOutcome := { |
| procedureCode := id_Kill, |
| criticality := reject, |
| value_ := { |
| Kill_Complete := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_Old_Serial_Number, |
| criticality := reject, |
| value_ := { Old_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Number_of_Broadcasts_Completed_List, |
| criticality := reject, |
| value_ := { Number_of_Broadcasts_Completed_List := num_bcast_compl } |
| }, * |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| |
| /* 9.1.7 KILL FAILURE */ |
| template (value) SABP_PDU |
| ts_SABP_KillFail(template (value) BIT16 msg_id, template (value) BIT16 ser_nr, |
| template (value) Failure_List fail_list) := { |
| unsuccessfulOutcome := { |
| procedureCode := id_Kill, |
| criticality := reject, |
| value_ := { |
| Kill_Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_Old_Serial_Number, |
| criticality := reject, |
| value_ := { Old_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Failure_List, |
| criticality := reject, |
| value_ := { Failure_List := fail_list } |
| } |
| /* Optional: Number-of-Broadcasts-Completed-List */ |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_KillFail(template (present) BIT16 msg_id, template (present) BIT16 ser_nr, |
| template (present) Failure_List fail_list := ?) := { |
| unsuccessfulOutcome := { |
| procedureCode := id_Kill, |
| criticality := reject, |
| value_ := { |
| Kill_Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := reject, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_Old_Serial_Number, |
| criticality := reject, |
| value_ := { Old_Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Failure_List, |
| criticality := reject, |
| value_ := { Failure_List := fail_list } |
| }, * |
| /* Optional: Number-of-Broadcasts-Completed-List */ |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* TODO: Load Query + Complete + Failure */ |
| /* TODO: Message Status Query + Complete + Failure */ |
| |
| /* 9.1.15 RESET */ |
| template (value) SABP_PDU |
| ts_SABP_Reset(template (value) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Reset, |
| criticality := reject, |
| value_ := { |
| Reset := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_Reset(template (present) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Reset, |
| criticality := reject, |
| value_ := { |
| Reset := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| |
| /* 9.1.16 RESET COMPLETE */ |
| template (value) SABP_PDU |
| ts_SABP_ResetCompl(template (value) Service_Areas_List sa_list) := { |
| successfulOutcome := { |
| procedureCode := id_Reset, |
| criticality := reject, |
| value_ := { |
| Reset_Complete := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_ResetCompl(template (present) Service_Areas_List sa_list) := { |
| successfulOutcome := { |
| procedureCode := id_Reset, |
| criticality := reject, |
| value_ := { |
| Reset_Complete := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| }, * |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.17 RESET FAILURE */ |
| template (value) SABP_PDU |
| ts_SABP_ResetFail(template (value) Failure_List f_list) := { |
| unsuccessfulOutcome := { |
| procedureCode := id_Reset, |
| criticality := reject, |
| value_ := { |
| Reset_Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Failure_List, |
| criticality := reject, |
| value_ := { Failure_List := f_list } |
| } |
| /* Optional: Service Area List */ |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_ResetFail(template (present) Failure_List f_list := ?) := { |
| unsuccessfulOutcome := { |
| procedureCode := id_Reset, |
| criticality := reject, |
| value_ := { |
| Reset_Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Failure_List, |
| criticality := reject, |
| value_ := { Failure_List := f_list } |
| }, * |
| /* Optional: Service Area List */ |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.18 RESTART (RNC->CN) */ |
| template (value) SABP_PDU |
| ts_SABP_Restart(template (value) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Restart_Indication, |
| criticality := ignore, |
| value_ := { |
| Restart := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| /* Optional: Recovery_Indication */ |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_Restart(template (present) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Restart_Indication, |
| criticality := ignore, |
| value_ := { |
| Restart := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := reject, |
| value_ := { Service_Areas_List := sa_list } |
| }, * |
| /* Optional: Recovery_Indication */ |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.19 FAILURE (RNC->CN) */ |
| template (value) SABP_PDU |
| ts_SABP_Failure(template (value) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Failure_Indication, |
| criticality := ignore, |
| value_ := { |
| Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := ignore, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_Failure(template (present) Service_Areas_List sa_list) := { |
| initiatingMessage := { |
| procedureCode := id_Failure_Indication, |
| criticality := ignore, |
| value_ := { |
| Failure := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Service_Areas_List, |
| criticality := ignore, |
| value_ := { Service_Areas_List := sa_list } |
| } |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| /* 9.1.20 ERROR INDICATION (RNC->CN) */ |
| template (value) SABP_PDU |
| ts_SABP_ErrorInd(template (value) BIT16 msg_id, template (value) BIT16 ser_nr, |
| template (value) Cause cause) := { |
| initiatingMessage := { |
| procedureCode := id_Error_Indication, |
| criticality := ignore, |
| value_ := { |
| Error_Indication := { |
| protocolIEs := { |
| { |
| id := SABP_Constants.id_Message_Identifier, |
| criticality := ignore, |
| value_ := { Message_Identifier := msg_id } |
| }, { |
| id := SABP_Constants.id_Serial_Number, |
| criticality := ignore, |
| value_ := { Serial_Number := ser_nr } |
| }, { |
| id := SABP_Constants.id_Cause, |
| criticality := ignore, |
| value_ :={ Cause := cause } |
| } |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := omit |
| } |
| } |
| } |
| } |
| template (present) SABP_PDU |
| tr_SABP_ErrorInd := { |
| initiatingMessage := { |
| procedureCode := id_Error_Indication, |
| criticality := ignore, |
| value_ := { |
| Error_Indication := { |
| protocolIEs := { |
| * |
| /* Optional: Message-Identifier */ |
| /* Optional: Serial-Number */ |
| /* Optional: Cause */ |
| /* Optional: Criticality-Diagnostics */ |
| }, |
| protocolExtensions := * |
| } |
| } |
| } |
| } |
| |
| |
| |
| } |
| |