diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-06-10 21:01:30 +0200 |
---|---|---|
committer | laforge <laforge@gnumonks.org> | 2019-06-13 09:39:14 +0000 |
commit | 579cd7a4065f4fbe9079e1b7aca4b84a7f556d32 (patch) | |
tree | 9e507ccb54d129f81e20e3d068bffac59906a129 /library | |
parent | 5a2d743e5d36bc5f2205465603026c2e6a78ab88 (diff) |
lib/CTRL: Improve and add more helper templates and functions
Change-Id: Icc6ac860ebd6a719f9e0cb5c5345fb4d39a864ce
Diffstat (limited to 'library')
-rw-r--r-- | library/Osmocom_CTRL_Functions.ttcn | 33 | ||||
-rw-r--r-- | library/Osmocom_CTRL_Types.ttcn | 44 |
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", |