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 */ /*********************************************************************** * 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 } }); 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 } }); /*********************************************************************** * 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 } }); }