diff options
Diffstat (limited to 'library/SIMTRACE_Templates.ttcn')
-rw-r--r-- | library/SIMTRACE_Templates.ttcn | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/library/SIMTRACE_Templates.ttcn b/library/SIMTRACE_Templates.ttcn new file mode 100644 index 00000000..05f738fa --- /dev/null +++ b/library/SIMTRACE_Templates.ttcn @@ -0,0 +1,335 @@ +module SIMTRACE_Templates { + +import from SIMTRACE_Types all; +import from General_Types all; +import from Osmocom_Types all; + +/* TTCN-3 templates Osmocom SIMTRACE2 + * as found in simtrace2.git/host/include/osmocom/simtrace2/simtrace_prot.h + * + * (C) 2020 by Harald Welte <laforge@gnumonks.org> + */ + + +/*********************************************************************** + * GENERAL + ***********************************************************************/ + +template (value) SIMTRACE_PDU +ts_SIMTRACE(template (value) SIMTRACE_MsgClassType msg_type, + template (value) SIMTRACE_Payload payload) := { + msg_type := msg_type, + seq_nr := 0, + slot_nr := 0, + reserved := '0000'O, + msg_len := 0, /* overwritten */ + payload := payload +} +template (present) SIMTRACE_PDU +tr_SIMTRACE(template (present) SIMTRACE_MsgClassType msg_type, + template (present) SIMTRACE_Payload payload) := { + msg_type := msg_type, + seq_nr := ?, + slot_nr := ?, + reserved := '0000'O, + msg_len := ?, + payload := payload +} + +template (value) SIMTRACE_PDU ts_SIMTRACE_BOARD_INFO := + ts_SIMTRACE(SIMTRACE_CMD_BD_BOARD_INFO, + { gen_bd_board_info := { + hardware := { + manufacturer := "", + model := "", + version := "" + }, + software := { + provider := "", + name := "", + version := "", + buildhost := "", + crc := '00000000'O + }, + max_baud_rate := 0, + cap_generic_bytes := 0, + cap_vendor_bytes := 0, + cap_generic := omit, + cap_vendor := omit + } + }); +template (present) SIMTRACE_PDU +tr_SIMTRACE_BOARD_INFO(template (present) Board_Info_Hardware hw := ?, + template (present) Board_Info_Software sw := ?, + template Generic_Capability cap_gen := *, + template Generic_Capability_Vendor cap_vend := *) := + tr_SIMTRACE(SIMTRACE_CMD_BD_BOARD_INFO, + { gen_bd_board_info := { + hardware := hw, + software := sw, + max_baud_rate := ?, + cap_generic_bytes := ?, + cap_vendor_bytes := ?, + cap_generic := cap_gen, + cap_vendor := cap_vend + } + }); + + +/*********************************************************************** + * CARD EMULATION + ***********************************************************************/ + +/* dummy flags for BD_STATUS [request] */ +template (value) CardEmu_StatusFlags ts_CardEmu_StatusFlags := { + reserved := '000'B, + reset_active := false, + card_insert := false, + rcemu_active := false, + clk_active := false, + vcc_present := false, + reserved2 := '000000000000000000000000'B +}; +template (present) CardEmu_StatusFlags +tr_CardEmu_StatusFlags(template (present) boolean reset_active := ?, + template (present) boolean card_insert := ?, + template (present) boolean clk_active := ?, + template (present) boolean vcc_present := ?, + template (present) boolean rcemu_active := ?) := { + reserved := ?, + reset_active := reset_active, + card_insert := card_insert, + rcemu_active := rcemu_active, + clk_active := clk_active, + vcc_present := vcc_present, + reserved2 := ? +}; + +template (value) CardEmu_DataFlags +ts_CardEmu_DataFlags(template (value) boolean pb_and_rx := false, + template (value) boolean pb_and_tx := false, + template (value) boolean final := false, + template (value) boolean tpdu_hdr := false) := { + reserved := '0000'B, + pb_and_rx := pb_and_rx, + pb_and_tx := pb_and_tx, + final := final, + tpdu_hdr := tpdu_hdr, + reserved2 := '000000000000000000000000'B +}; +template (present) CardEmu_DataFlags +tr_CardEmu_DataFlags(template (present) boolean pb_and_rx := ?, + template (present) boolean pb_and_tx := ?, + template (present) boolean final := ?, + template (present) boolean tpdu_hdr := ?) := { + reserved := ?, + pb_and_rx := pb_and_rx, + pb_and_tx := pb_and_tx, + final := final, + tpdu_hdr := tpdu_hdr, + reserved2 := ? +}; + + +template (value) SIMTRACE_PDU + ts_SIMTRACE_CEMU_TX_DATA(template (value) CardEmu_DataFlags flags, + template (value) octetstring data) := +ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_TX_DATA, + { cardem_dt_txdata := { + flags := flags, + data_len := 0, /* overwritten */ + data := data } + }); + + +template (value) SIMTRACE_PDU +ts_SIMTRACE_CEMU_SET_ATR(template (value) octetstring atr) := + ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_SET_ATR, + { cardem_dt_setatr := { atr_len := 0 /* overwritten */, atr := atr } }); + + +template (value) SIMTRACE_PDU +ts_SIMTRACE_CEMU_STATUS := + ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_STATUS, + { cardem_bd_status := { + flags := ts_CardEmu_StatusFlags, + voltage_mv := 0, fi := 0, di := 0, wi := 0, waiting_time := 0 + } + }); + +template (present) SIMTRACE_PDU +tr_SIMTRACE_CEMU_STATUS(template (present) CardEmu_StatusFlags flags := ?, + template (present) uint16_t voltage_mv := ?, + template (present) uint8_t fi := ?, + template (present) uint8_t di := ?, + template (present) uint8_t wi := ?, + template (present) uint32_t waiting_time := ?) := + tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_STATUS, + { cardem_bd_status := { + flags := flags, + voltage_mv := voltage_mv, + fi := fi, + di := di, + wi := wi, + waiting_time := waiting_time + }}); + + +template (value) SIMTRACE_PDU +ts_SIMTRACE_CEMU_CARDINSERT(uint8_t insert) := + ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_CARDINSERT, + { cardem_dt_cardinsert := { card_insert := insert } }); + + +template (present) SIMTRACE_PDU +tr_SIMTRACE_CEMU_RX_DATA(template (present) CardEmu_DataFlags flags, + template (present) octetstring data) := + tr_SIMTRACE(SIMTRACE_MSGT_DO_CEMU_RX_DATA, + { cardem_do_rxdata := { + flags := flags, + data_len := ?, + data := data + } + }); + +template (present) SIMTRACE_PDU +tr_SIMTRACE_CEMU_PTS(template (present) octetstring req, template (present) octetstring resp) := + tr_SIMTRACE(SIMTRACE_MSGT_DO_CEMU_PTS, + { cardem_do_pts := { + pts_len := ?, + req := req, + resp := resp + } + }); + +template (value) CardEmu_FeatureFlags ts_FeatureFlags(boolean status_irq) := { + reserved := '0000000'B, + status_irq := status_irq, + reserved2 := '000000000000000000000000'B +} +template (present) CardEmu_FeatureFlags tr_FeatureFlags(template (present) boolean status_irq := ?) := { + reserved := '0000000'B, + status_irq := status_irq, + reserved2 := '000000000000000000000000'B +} + + +template (value) SIMTRACE_PDU +ts_SIMTRACE_CEMU_CONFIG(template (value) CardEmu_FeatureFlags flags) := + ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags, + slot_mux_nr := 0} }); + +template (present) SIMTRACE_PDU +tr_SIMTRACE_CEMU_CONFIG(template (present) CardEmu_FeatureFlags flags) := + tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags, + slot_mux_nr := * } }); + + +/*********************************************************************** + * MODEM CONTROL + ***********************************************************************/ + +template (value) Modem_Status ts_ModemStatus(boolean card_inserted, boolean wwan_led) := { + reserved := '000000'B, + card_inserted := card_inserted, + wwan_led := wwan_led +} +template (present) Modem_Status tr_ModemStatus(template (present) boolean card_inserted, + template (present) boolean wwan_led) := { + reserved := ?, + card_inserted := card_inserted, + wwan_led := wwan_led +} + + + +template (value) SIMTRACE_PDU +ts_SIMTRACE_MODEM_RESET(ModemResetType rst_type := MODEM_RESET_PULSE, + uint16_t duration_msec := 400) := + ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_RESET, + { modem_dt_reset := { + asserted := rst_type, + pulse_duration_msec := duration_msec + } + }); + +template (value) SIMTRACE_PDU +ts_SIMTRACE_MODEM_SIM_SELECT(SimSelect sim_sel) := + ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_SIM_SELECT, + { modem_dt_sim_select := { + sim_select := sim_sel + } + }); + +template (value) SIMTRACE_PDU +ts_SIMTRACE_MODEM_STATUS := + ts_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS, + { modem_bd_status := { + supported := ts_ModemStatus(false, false), + status := ts_ModemStatus(false, false), + changed := ts_ModemStatus(false, false) + } + }); +template (present) SIMTRACE_PDU +tr_SIMTRACE_MODEM_STATUS(template (present) Modem_Status supported := ?, + template (present) Modem_Status status := ?, + template (present) Modem_Status changed := ?) := + tr_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS, + { modem_bd_status := { + supported := supported, + status := status, + changed := changed + } + }); + + +/*********************************************************************** + * SNIFFER + ***********************************************************************/ + +template (present) SIMTRACE_PDU +tr_SIMTRACE_SNIFF_CHANGE(template (present) Sniff_Flags flags) := + tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_CHANGE, + { sniff_do_change := { flags := flags } }); + +template (present) SIMTRACE_PDU +tr_SIMTRACE_SNIFF_FIDI(template (present) uint8_t fidi := ?) := + tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI, + { sniff_do_fidi := { fidi := fidi } }); + +template (present) SIMTRACE_PDU +tr_SIMTRACE_SNIFF_ATR(template (present) octetstring data, + template (present) Sniff_Flags flags := ?) := + tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI, + { sniff_do_atr := { + flags := flags, + data_len := ?, + data := data + } + }); + +template (present) SIMTRACE_PDU +tr_SIMTRACE_SNIFF_PPS(template (present) octetstring data, + template (present) Sniff_Flags flags := ?) := + tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_PPS, + { sniff_do_atr := { + flags := flags, + data_len := ?, + data := data + } + }); + +template (present) SIMTRACE_PDU +tr_SIMTRACE_SNIFF_TPDU(template (present) octetstring data, + template (present) Sniff_Flags flags := ?) := + tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_TPDU, + { sniff_do_atr := { + flags := flags, + data_len := ?, + data := data + } + }); + + + +} |