Harald Welte | 0ee2297 | 2020-02-29 11:32:50 +0100 | [diff] [blame] | 1 | module SIMTRACE_Templates { |
| 2 | |
| 3 | import from SIMTRACE_Types all; |
| 4 | import from General_Types all; |
| 5 | import 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 | |
| 18 | template (value) SIMTRACE_PDU |
| 19 | ts_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 | } |
| 28 | template (present) SIMTRACE_PDU |
| 29 | tr_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 | |
| 39 | template (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 | }); |
| 61 | template (present) SIMTRACE_PDU |
| 62 | tr_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] */ |
| 84 | template (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 | }; |
| 93 | template (present) CardEmu_StatusFlags |
| 94 | tr_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 | |
| 108 | template (value) CardEmu_DataFlags |
| 109 | ts_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 | }; |
| 120 | template (present) CardEmu_DataFlags |
| 121 | tr_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 | |
| 134 | template (value) SIMTRACE_PDU |
| 135 | ts_SIMTRACE_CEMU_TX_DATA(template (value) CardEmu_DataFlags flags, |
| 136 | template (value) octetstring data) := |
| 137 | ts_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 | |
| 145 | template (value) SIMTRACE_PDU |
| 146 | ts_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 | |
| 151 | template (value) SIMTRACE_PDU |
| 152 | ts_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 | |
| 160 | template (present) SIMTRACE_PDU |
| 161 | tr_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 | |
| 178 | template (value) SIMTRACE_PDU |
| 179 | ts_SIMTRACE_CEMU_CARDINSERT(uint8_t insert) := |
| 180 | ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_CARDINSERT, |
| 181 | { cardem_dt_cardinsert := { card_insert := insert } }); |
| 182 | |
| 183 | |
| 184 | template (present) SIMTRACE_PDU |
| 185 | tr_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 | |
| 195 | template (present) SIMTRACE_PDU |
| 196 | tr_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 | |
| 205 | template (value) CardEmu_FeatureFlags ts_FeatureFlags(boolean status_irq) := { |
| 206 | reserved := '0000000'B, |
| 207 | status_irq := status_irq, |
| 208 | reserved2 := '000000000000000000000000'B |
| 209 | } |
| 210 | template (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 | |
| 217 | template (value) SIMTRACE_PDU |
| 218 | ts_SIMTRACE_CEMU_CONFIG(template (value) CardEmu_FeatureFlags flags) := |
Harald Welte | 97c7197 | 2021-06-03 23:01:44 +0200 | [diff] [blame] | 219 | ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags, |
| 220 | slot_mux_nr := 0} }); |
Harald Welte | 0ee2297 | 2020-02-29 11:32:50 +0100 | [diff] [blame] | 221 | |
| 222 | template (present) SIMTRACE_PDU |
| 223 | tr_SIMTRACE_CEMU_CONFIG(template (present) CardEmu_FeatureFlags flags) := |
Harald Welte | 97c7197 | 2021-06-03 23:01:44 +0200 | [diff] [blame] | 224 | tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags, |
| 225 | slot_mux_nr := * } }); |
Harald Welte | 0ee2297 | 2020-02-29 11:32:50 +0100 | [diff] [blame] | 226 | |
| 227 | |
| 228 | /*********************************************************************** |
| 229 | * MODEM CONTROL |
| 230 | ***********************************************************************/ |
| 231 | |
| 232 | template (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 | } |
| 237 | template (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 | |
| 246 | template (value) SIMTRACE_PDU |
| 247 | ts_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 | |
| 256 | template (value) SIMTRACE_PDU |
| 257 | ts_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 | |
| 264 | template (value) SIMTRACE_PDU |
| 265 | ts_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 | }); |
| 273 | template (present) SIMTRACE_PDU |
| 274 | tr_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 | |
| 290 | template (present) SIMTRACE_PDU |
| 291 | tr_SIMTRACE_SNIFF_CHANGE(template (present) Sniff_Flags flags) := |
| 292 | tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_CHANGE, |
| 293 | { sniff_do_change := { flags := flags } }); |
| 294 | |
| 295 | template (present) SIMTRACE_PDU |
| 296 | tr_SIMTRACE_SNIFF_FIDI(template (present) uint8_t fidi := ?) := |
| 297 | tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI, |
| 298 | { sniff_do_fidi := { fidi := fidi } }); |
| 299 | |
| 300 | template (present) SIMTRACE_PDU |
| 301 | tr_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 | |
| 311 | template (present) SIMTRACE_PDU |
| 312 | tr_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 | |
| 322 | template (present) SIMTRACE_PDU |
| 323 | tr_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 | } |