aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2019-06-10 21:01:30 +0200
committerlaforge <laforge@gnumonks.org>2019-06-13 09:39:14 +0000
commit579cd7a4065f4fbe9079e1b7aca4b84a7f556d32 (patch)
tree9e507ccb54d129f81e20e3d068bffac59906a129 /library
parent5a2d743e5d36bc5f2205465603026c2e6a78ab88 (diff)
lib/CTRL: Improve and add more helper templates and functions
Diffstat (limited to 'library')
-rw-r--r--library/Osmocom_CTRL_Functions.ttcn33
-rw-r--r--library/Osmocom_CTRL_Types.ttcn44
2 files changed, 75 insertions, 2 deletions
diff --git a/library/Osmocom_CTRL_Functions.ttcn b/library/Osmocom_CTRL_Functions.ttcn
index 94dcb8ac..22ed4058 100644
--- a/library/Osmocom_CTRL_Functions.ttcn
+++ b/library/Osmocom_CTRL_Functions.ttcn
@@ -71,10 +71,16 @@ module Osmocom_CTRL_Functions {
}
}
+ /* send a TRAP */
+ function f_ctrl_trap(IPA_CTRL_PT pt, CtrlVariable variable, CtrlValue val) {
+ pt.send(ts_CtrlMsgTrap(variable, val));
+ }
+
/* Expect a matching TRAP */
function f_ctrl_exp_trap(IPA_CTRL_PT pt, template CtrlVariable variable,
- template CtrlValue val := ?) return CtrlValue {
- timer T := 2.0;
+ template CtrlValue val := ?, float timeout_val := 2.0)
+ return CtrlValue {
+ timer T := timeout_val;
var CtrlMessage rx;
T.start;
alt {
@@ -88,6 +94,29 @@ module Osmocom_CTRL_Functions {
return rx.trap.val;
}
+ /* Expect a matching SET, optionally answer */
+ function f_ctrl_exp_set(IPA_CTRL_PT pt, template CtrlVariable variable,
+ template CtrlValue val := ?,
+ template (omit) CtrlValue rsp := omit,
+ float timeout_val := 2.0)
+ return CtrlValue {
+ timer T := timeout_val;
+ var CtrlMessage rx;
+ T.start;
+ alt {
+ [] pt.receive(tr_CtrlMsgSet(?, variable, val)) -> value rx {
+ if (ispresent(rsp)) {
+ pt.send(ts_CtrlMsgSetRepl(rx.cmd.id, valueof(variable), valueof(rsp)));
+ }
+ }
+ [] T.timeout {
+ setverdict(fail, "Timeout waiting for SET ", variable);
+ mtc.stop;
+ }
+ }
+ return rx.cmd.val;
+ }
+
/* Expect a matching GET result */
function f_ctrl_get_exp(IPA_CTRL_PT pt, CtrlVariable variable, template CtrlValue exp) {
var charstring ctrl_resp;
diff --git a/library/Osmocom_CTRL_Types.ttcn b/library/Osmocom_CTRL_Types.ttcn
index 5c4527e5..52be9566 100644
--- a/library/Osmocom_CTRL_Types.ttcn
+++ b/library/Osmocom_CTRL_Types.ttcn
@@ -94,6 +94,50 @@ template CtrlMessage ts_CtrlMsgSet(CtrlId id, CtrlVariable variable, CtrlValue v
}
}
+template CtrlMessage ts_CtrlMsgTrap(CtrlVariable variable, template (omit) CtrlValue val := omit) := {
+ trap := {
+ variable := variable,
+ val := val
+ }
+}
+
+template CtrlMessage ts_CtrlMsgGetRepl(CtrlId id, CtrlVariable variable, CtrlValue val) := {
+ resp := {
+ verb := "GET_REPLY",
+ id := id,
+ variable := variable,
+ val := val
+ }
+};
+
+template CtrlMessage ts_CtrlMsgSetRepl(CtrlId id, CtrlVariable variable, CtrlValue val) := {
+ resp := {
+ verb := "SET_REPLY",
+ id := id,
+ variable := variable,
+ val := val
+ }
+}
+
+template CtrlMessage tr_CtrlMsgGet(template CtrlId id, template CtrlVariable variable := ?) := {
+ cmd := {
+ verb := "GET",
+ id := id,
+ variable := variable,
+ val := ?
+ }
+}
+
+template CtrlMessage tr_CtrlMsgSet(template CtrlId id, template CtrlVariable variable := ?,
+ template CtrlValue val := ?) := {
+ cmd := {
+ verb := "SET",
+ id := id,
+ variable := variable,
+ val := val
+ }
+}
+
template CtrlMessage tr_CtrlMsgGetRepl(template CtrlId id, template CtrlVariable variable := ?) := {
resp := {
verb := "GET_REPLY",