blob: 934253ed37406f0c73fe9960f88a4ca684abf8b0 [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) :=
219 ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags } });
220
221template (present) SIMTRACE_PDU
222tr_SIMTRACE_CEMU_CONFIG(template (present) CardEmu_FeatureFlags flags) :=
223 tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags } });
224
225
226/***********************************************************************
227 * MODEM CONTROL
228 ***********************************************************************/
229
230template (value) Modem_Status ts_ModemStatus(boolean card_inserted, boolean wwan_led) := {
231 reserved := '000000'B,
232 card_inserted := card_inserted,
233 wwan_led := wwan_led
234}
235template (present) Modem_Status tr_ModemStatus(template (present) boolean card_inserted,
236 template (present) boolean wwan_led) := {
237 reserved := ?,
238 card_inserted := card_inserted,
239 wwan_led := wwan_led
240}
241
242
243
244template (value) SIMTRACE_PDU
245ts_SIMTRACE_MODEM_RESET(ModemResetType rst_type := MODEM_RESET_PULSE,
246 uint16_t duration_msec := 400) :=
247 ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_RESET,
248 { modem_dt_reset := {
249 asserted := rst_type,
250 pulse_duration_msec := duration_msec
251 }
252 });
253
254template (value) SIMTRACE_PDU
255ts_SIMTRACE_MODEM_SIM_SELECT(SimSelect sim_sel) :=
256 ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_SIM_SELECT,
257 { modem_dt_sim_select := {
258 sim_select := sim_sel
259 }
260 });
261
262template (value) SIMTRACE_PDU
263ts_SIMTRACE_MODEM_STATUS :=
264 ts_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS,
265 { modem_bd_status := {
266 supported := ts_ModemStatus(false, false),
267 status := ts_ModemStatus(false, false),
268 changed := ts_ModemStatus(false, false)
269 }
270 });
271template (present) SIMTRACE_PDU
272tr_SIMTRACE_MODEM_STATUS(template (present) Modem_Status supported := ?,
273 template (present) Modem_Status status := ?,
274 template (present) Modem_Status changed := ?) :=
275 tr_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS,
276 { modem_bd_status := {
277 supported := supported,
278 status := status,
279 changed := changed
280 }
281 });
282
283
284/***********************************************************************
285 * SNIFFER
286 ***********************************************************************/
287
288template (present) SIMTRACE_PDU
289tr_SIMTRACE_SNIFF_CHANGE(template (present) Sniff_Flags flags) :=
290 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_CHANGE,
291 { sniff_do_change := { flags := flags } });
292
293template (present) SIMTRACE_PDU
294tr_SIMTRACE_SNIFF_FIDI(template (present) uint8_t fidi := ?) :=
295 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI,
296 { sniff_do_fidi := { fidi := fidi } });
297
298template (present) SIMTRACE_PDU
299tr_SIMTRACE_SNIFF_ATR(template (present) octetstring data,
300 template (present) Sniff_Flags flags := ?) :=
301 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI,
302 { sniff_do_atr := {
303 flags := flags,
304 data_len := ?,
305 data := data
306 }
307 });
308
309template (present) SIMTRACE_PDU
310tr_SIMTRACE_SNIFF_PPS(template (present) octetstring data,
311 template (present) Sniff_Flags flags := ?) :=
312 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_PPS,
313 { sniff_do_atr := {
314 flags := flags,
315 data_len := ?,
316 data := data
317 }
318 });
319
320template (present) SIMTRACE_PDU
321tr_SIMTRACE_SNIFF_TPDU(template (present) octetstring data,
322 template (present) Sniff_Flags flags := ?) :=
323 tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_TPDU,
324 { sniff_do_atr := {
325 flags := flags,
326 data_len := ?,
327 data := data
328 }
329 });
330
331
332
333}