| module RSRES { |
| |
| /* Implementation of the REmote Sim RESt (RSRES) JSON data types in TTCN-3. |
| * (C) 2019 by 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 |
| * |
| */ |
| |
| import from RSPRO all; |
| |
| /* resembles "enum remsim_server_client_fsm_state" */ |
| type enumerated ConnectionState { |
| INIT, |
| ESTABLISHED, |
| CONNECTED_CLIENT, |
| CONNECTED_BANKD |
| }; |
| |
| type record JsBank { |
| charstring peer, |
| ConnectionState state, |
| ComponentIdentity component_id, |
| BankId bankId, |
| SlotNumber numberOfSlots |
| }; |
| type record of JsBank JsBanks; |
| |
| template JsBank tr_JsBank(template ConnectionState state, |
| template ComponentIdentity comp_id, |
| template BankId bank_id, |
| template SlotNumber num_of_slots) := { |
| peer := ?, |
| state := state, |
| component_id := comp_id, |
| bankId := bank_id, |
| numberOfSlots := num_of_slots |
| } |
| |
| type record JsClient { |
| charstring peer, |
| ConnectionState state, |
| ComponentIdentity component_id |
| }; |
| type record of JsClient JsClients; |
| |
| template JsClient tr_JsClient(template ConnectionState state, |
| template ComponentIdentity comp_id) := { |
| peer := ?, |
| state := state, |
| component_id := comp_id |
| } |
| |
| /* resembles "enum slot_mapping_state" */ |
| type enumerated SlotmapState { |
| NEW, |
| UNACKNOWLEDGED, |
| ACTIVE, |
| DELETE_REQ, |
| DELETING |
| }; |
| |
| type record JsSlotmap { |
| BankSlot bank, |
| ClientSlot client, |
| SlotmapState state optional |
| }; |
| type record of JsSlotmap JsSlotmaps; |
| |
| template (value) JsSlotmap ts_JsSlotmap(template (value) BankSlot bslot, |
| template (value) ClientSlot cslot, |
| template (omit) SlotmapState state := omit) := { |
| bank := bslot, |
| client := cslot, |
| state := state |
| } |
| template JsSlotmap tr_JsSlotmap(template BankSlot bslot, |
| template ClientSlot cslot, |
| template SlotmapState state := ?) := { |
| bank := bslot, |
| client := cslot, |
| state := state |
| } |
| |
| |
| |
| /* root JSON type expressing what remsim-server can return */ |
| type record JsRoot { |
| JsClients clients optional, |
| JsBanks banks optional, |
| JsSlotmaps slotmaps optional |
| }; |
| |
| external function f_enc_JsRoot(in JsRoot inp) return octetstring |
| with { extension "prototype(convert) encode(JSON)" } |
| external function f_dec_JsRoot(in octetstring inp) return JsRoot |
| with { extension "prototype(convert) decode(JSON)" } |
| |
| external function f_enc_JsSlotmap(in JsSlotmap inp) return octetstring |
| with { extension "prototype(convert) encode(JSON)" } |
| external function f_dec_JsSlotmap(in octetstring inp) return JsSlotmap |
| with { extension "prototype(convert) decode(JSON)" } |
| |
| |
| |
| } with { encode "JSON" } |