blob: 05f738fa48b99bb9668652911c15b412242ae161 [file] [log] [blame]
Harald Welte0ee22972020-02-29 11:32:50 +01001module SIMTRACE_Templates {
2
3import from SIMTRACE_Types all;
4import from General_Types all;
5import from Osmocom_Types all;
6
7/* TTCN-3 templates Osmocom SIMTRACE2
8 * as found in simtrace2.git/host/include/osmocom/simtrace2/simtrace_prot.h
9 *
10 * (C) 2020 by Harald Welte <laforge@gnumonks.org>
11 */
12
13
14/***********************************************************************
15 * GENERAL
16 ***********************************************************************/
17
18template (value) SIMTRACE_PDU
19ts_SIMTRACE(template (value) SIMTRACE_MsgClassType msg_type,
20 template (value) SIMTRACE_Payload payload) := {
21 msg_type := msg_type,
22 seq_nr := 0,
23 slot_nr := 0,
24 reserved := '0000'O,
25 msg_len := 0, /* overwritten */
26 payload := payload
27}
28template (present) SIMTRACE_PDU
29tr_SIMTRACE(template (present) SIMTRACE_MsgClassType msg_type,
30 template (present) SIMTRACE_Payload payload) := {
31 msg_type := msg_type,
32 seq_nr := ?,
33 slot_nr := ?,
34 reserved := '0000'O,
35 msg_len := ?,
36 payload := payload
37}
38
39template (value) SIMTRACE_PDU ts_SIMTRACE_BOARD_INFO :=
40 ts_SIMTRACE(SIMTRACE_CMD_BD_BOARD_INFO,
41 { gen_bd_board_info := {
42 hardware := {
43 manufacturer := "",
44 model := "",
45 version := ""
46 },
47 software := {
48 provider := "",
49 name := "",
50 version := "",
51 buildhost := "",
52 crc := '00000000'O
53 },
54 max_baud_rate := 0,
55 cap_generic_bytes := 0,
56 cap_vendor_bytes := 0,
57 cap_generic := omit,
58 cap_vendor := omit
59 }
60 });
61template (present) SIMTRACE_PDU
62tr_SIMTRACE_BOARD_INFO(template (present) Board_Info_Hardware hw := ?,
63 template (present) Board_Info_Software sw := ?,
64 template Generic_Capability cap_gen := *,
65 template Generic_Capability_Vendor cap_vend := *) :=
66 tr_SIMTRACE(SIMTRACE_CMD_BD_BOARD_INFO,
67 { gen_bd_board_info := {
68 hardware := hw,
69 software := sw,
70 max_baud_rate := ?,
71 cap_generic_bytes := ?,
72 cap_vendor_bytes := ?,
73 cap_generic := cap_gen,
74 cap_vendor := cap_vend
75 }
76 });
77
78
79/***********************************************************************
80 * CARD EMULATION
81 ***********************************************************************/
82
83/* dummy flags for BD_STATUS [request] */
84template (value) CardEmu_StatusFlags ts_CardEmu_StatusFlags := {
85 reserved := '000'B,
86 reset_active := false,
87 card_insert := false,
88 rcemu_active := false,
89 clk_active := false,
90 vcc_present := false,
91 reserved2 := '000000000000000000000000'B
92};
93template (present) CardEmu_StatusFlags
94tr_CardEmu_StatusFlags(template (present) boolean reset_active := ?,
95 template (present) boolean card_insert := ?,
96 template (present) boolean clk_active := ?,
97 template (present) boolean vcc_present := ?,
98 template (present) boolean rcemu_active := ?) := {
99 reserved := ?,
100 reset_active := reset_active,
101 card_insert := card_insert,
102 rcemu_active := rcemu_active,
103 clk_active := clk_active,
104 vcc_present := vcc_present,
105 reserved2 := ?
106};
107
108template (value) CardEmu_DataFlags
109ts_CardEmu_DataFlags(template (value) boolean pb_and_rx := false,
110 template (value) boolean pb_and_tx := false,
111 template (value) boolean final := false,
112 template (value) boolean tpdu_hdr := false) := {
113 reserved := '0000'B,
114 pb_and_rx := pb_and_rx,
115 pb_and_tx := pb_and_tx,
116 final := final,
117 tpdu_hdr := tpdu_hdr,
118 reserved2 := '000000000000000000000000'B
119};
120template (present) CardEmu_DataFlags
121tr_CardEmu_DataFlags(template (present) boolean pb_and_rx := ?,
122 template (present) boolean pb_and_tx := ?,
123 template (present) boolean final := ?,
124 template (present) boolean tpdu_hdr := ?) := {
125 reserved := ?,
126 pb_and_rx := pb_and_rx,
127 pb_and_tx := pb_and_tx,
128 final := final,
129 tpdu_hdr := tpdu_hdr,
130 reserved2 := ?
131};
132
133
134template (value) SIMTRACE_PDU
135 ts_SIMTRACE_CEMU_TX_DATA(template (value) CardEmu_DataFlags flags,
136 template (value) octetstring data) :=
137ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_TX_DATA,
138 { cardem_dt_txdata := {
139 flags := flags,
140 data_len := 0, /* overwritten */
141 data := data }
142 });
143
144
145template (value) SIMTRACE_PDU
146ts_SIMTRACE_CEMU_SET_ATR(template (value) octetstring atr) :=
147 ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_SET_ATR,
148 { cardem_dt_setatr := { atr_len := 0 /* overwritten */, atr := atr } });
149
150
151template (value) SIMTRACE_PDU
152ts_SIMTRACE_CEMU_STATUS :=
153 ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_STATUS,
154 { cardem_bd_status := {
155 flags := ts_CardEmu_StatusFlags,
156 voltage_mv := 0, fi := 0, di := 0, wi := 0, waiting_time := 0
157 }
158 });
159
160template (present) SIMTRACE_PDU
161tr_SIMTRACE_CEMU_STATUS(template (present) CardEmu_StatusFlags flags := ?,
162 template (present) uint16_t voltage_mv := ?,
163 template (present) uint8_t fi := ?,
164 template (present) uint8_t di := ?,
165 template (present) uint8_t wi := ?,
166 template (present) uint32_t waiting_time := ?) :=
167 tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_STATUS,
168 { cardem_bd_status := {
169 flags := flags,
170 voltage_mv := voltage_mv,
171 fi := fi,
172 di := di,
173 wi := wi,
174 waiting_time := waiting_time
175 }});
176
177
178template (value) SIMTRACE_PDU
179ts_SIMTRACE_CEMU_CARDINSERT(uint8_t insert) :=
180 ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_CARDINSERT,
181 { cardem_dt_cardinsert := { card_insert := insert } });
182
183
184template (present) SIMTRACE_PDU
185tr_SIMTRACE_CEMU_RX_DATA(template (present) CardEmu_DataFlags flags,
186 template (present) octetstring data) :=
187 tr_SIMTRACE(SIMTRACE_MSGT_DO_CEMU_RX_DATA,
188 { cardem_do_rxdata := {
189 flags := flags,
190 data_len := ?,
191 data := data
192 }
193 });
194
195template (present) SIMTRACE_PDU
196tr_SIMTRACE_CEMU_PTS(template (present) octetstring req, template (present) octetstring resp) :=
197 tr_SIMTRACE(SIMTRACE_MSGT_DO_CEMU_PTS,
198 { cardem_do_pts := {
199 pts_len := ?,
200 req := req,
201 resp := resp
202 }
203 });
204
205template (value) CardEmu_FeatureFlags ts_FeatureFlags(boolean status_irq) := {
206 reserved := '0000000'B,
207 status_irq := status_irq,
208 reserved2 := '000000000000000000000000'B
209}
210template (present) CardEmu_FeatureFlags tr_FeatureFlags(template (present) boolean status_irq := ?) := {
211 reserved := '0000000'B,
212 status_irq := status_irq,
213 reserved2 := '000000000000000000000000'B
214}
215
216
217template (value) SIMTRACE_PDU
218ts_SIMTRACE_CEMU_CONFIG(template (value) CardEmu_FeatureFlags flags) :=
Harald Welte97c71972021-06-03 23:01:44 +0200219 ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags,
220 slot_mux_nr := 0} });
Harald Welte0ee22972020-02-29 11:32:50 +0100221
222template (present) SIMTRACE_PDU
223tr_SIMTRACE_CEMU_CONFIG(template (present) CardEmu_FeatureFlags flags) :=
Harald Welte97c71972021-06-03 23:01:44 +0200224 tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags,
225 slot_mux_nr := * } });
Harald Welte0ee22972020-02-29 11:32:50 +0100226
227
228/***********************************************************************
229 * MODEM CONTROL
230 ***********************************************************************/
231
232template (value) Modem_Status ts_ModemStatus(boolean card_inserted, boolean wwan_led) := {
233 reserved := '000000'B,
234 card_inserted := card_inserted,
235 wwan_led := wwan_led
236}
237template (present) Modem_Status tr_ModemStatus(template (present) boolean card_inserted,
238 template (present) boolean wwan_led) := {
239 reserved := ?,
240 card_inserted := card_inserted,
241 wwan_led := wwan_led
242}
243
244
245
246template (value) SIMTRACE_PDU
247ts_SIMTRACE_MODEM_RESET(ModemResetType rst_type := MODEM_RESET_PULSE,
248 uint16_t duration_msec := 400) :=
249 ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_RESET,
250 { modem_dt_reset := {
251 asserted := rst_type,
252 pulse_duration_msec := duration_msec
253 }
254 });
255
256template (value) SIMTRACE_PDU
257ts_SIMTRACE_MODEM_SIM_SELECT(SimSelect sim_sel) :=
258 ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_SIM_SELECT,
259 { modem_dt_sim_select := {
260 sim_select := sim_sel
261 }
262 });
263
264template (value) SIMTRACE_PDU
265ts_SIMTRACE_MODEM_STATUS :=
266 ts_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS,
267 { modem_bd_status := {
268 supported := ts_ModemStatus(false, false),
269 status := ts_ModemStatus(false, false),
270 changed := ts_ModemStatus(false, false)
271 }
272 });
273template (present) SIMTRACE_PDU
274tr_SIMTRACE_MODEM_STATUS(template (present) Modem_Status supported := ?,
275 template (present) Modem_Status status := ?,
276 template (present) Modem_Status changed := ?) :=
277 tr_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS,
278 { modem_bd_status := {
279 supported := supported,
280 status := status,
281 changed := changed
282 }
283 });
284
285
286/***********************************************************************
287 * SNIFFER
288 ***********************************************************************/
289
290template (present) SIMTRACE_PDU
291tr_SIMTRACE_SNIFF_CHANGE(template (present) Sniff_Flags flags) :=
292 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_CHANGE,
293 { sniff_do_change := { flags := flags } });
294
295template (present) SIMTRACE_PDU
296tr_SIMTRACE_SNIFF_FIDI(template (present) uint8_t fidi := ?) :=
297 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI,
298 { sniff_do_fidi := { fidi := fidi } });
299
300template (present) SIMTRACE_PDU
301tr_SIMTRACE_SNIFF_ATR(template (present) octetstring data,
302 template (present) Sniff_Flags flags := ?) :=
303 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI,
304 { sniff_do_atr := {
305 flags := flags,
306 data_len := ?,
307 data := data
308 }
309 });
310
311template (present) SIMTRACE_PDU
312tr_SIMTRACE_SNIFF_PPS(template (present) octetstring data,
313 template (present) Sniff_Flags flags := ?) :=
314 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_PPS,
315 { sniff_do_atr := {
316 flags := flags,
317 data_len := ?,
318 data := data
319 }
320 });
321
322template (present) SIMTRACE_PDU
323tr_SIMTRACE_SNIFF_TPDU(template (present) octetstring data,
324 template (present) Sniff_Flags flags := ?) :=
325 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_TPDU,
326 { sniff_do_atr := {
327 flags := flags,
328 data_len := ?,
329 data := data
330 }
331 });
332
333
334
335}