osmo-ttcn3-hacks/remsim/RSRES.ttcn

111 lines
2.6 KiB
Plaintext

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" }