Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign up| /* | |
| * | |
| * oFono - Open Source Telephony | |
| * | |
| * Copyright (C) 2008-2011 Intel Corporation. All rights reserved. | |
| * | |
| * This program is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License version 2 as | |
| * published by the Free Software Foundation. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU General Public License | |
| * along with this program; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
| * | |
| */ | |
| struct l_queue; | |
| /* | |
| * TS 101.220, Section 7.2, Card Application Toolkit assigned templates, | |
| * These are the same as 3GPP 11.14 Sections 13.1 and 13.2 | |
| */ | |
| enum stk_envelope_type { | |
| STK_ENVELOPE_TYPE_SMS_PP_DOWNLOAD = 0xD1, | |
| STK_ENVELOPE_TYPE_CBS_PP_DOWNLOAD = 0xD2, | |
| STK_ENVELOPE_TYPE_MENU_SELECTION = 0xD3, | |
| STK_ENVELOPE_TYPE_CALL_CONTROL = 0xD4, | |
| STK_ENVELOPE_TYPE_MO_SMS_CONTROL = 0xD5, | |
| STK_ENVELOPE_TYPE_EVENT_DOWNLOAD = 0xD6, | |
| STK_ENVELOPE_TYPE_TIMER_EXPIRATION = 0xD7, | |
| STK_ENVELOPE_TYPE_USSD_DOWNLOAD = 0xD9, | |
| STK_ENVELOPE_TYPE_MMS_TRANSFER_STATUS = 0xDA, | |
| STK_ENVELOPE_TYPE_MMS_NOTIFICATION = 0xDB, | |
| STK_ENVELOPE_TYPE_TERMINAL_APP = 0xDC, | |
| STK_ENVELOPE_TYPE_GEOLOCATION_REPORT = 0xDD, | |
| }; | |
| /* TS 102.223 Section 9.4 */ | |
| enum stk_command_type { | |
| STK_COMMAND_TYPE_REFRESH = 0x01, | |
| STK_COMMAND_TYPE_MORE_TIME = 0x02, | |
| STK_COMMAND_TYPE_POLL_INTERVAL = 0x03, | |
| STK_COMMAND_TYPE_POLLING_OFF = 0x04, | |
| STK_COMMAND_TYPE_SETUP_EVENT_LIST = 0x05, | |
| STK_COMMAND_TYPE_SETUP_CALL = 0x10, | |
| STK_COMMAND_TYPE_SEND_SS = 0x11, | |
| STK_COMMAND_TYPE_SEND_USSD = 0x12, | |
| STK_COMMAND_TYPE_SEND_SMS = 0x13, | |
| STK_COMMAND_TYPE_SEND_DTMF = 0x14, | |
| STK_COMMAND_TYPE_LAUNCH_BROWSER = 0x15, | |
| STK_COMMAND_TYPE_GEOGRAPICAL_LOCATION_REQUEST = 0x16, | |
| STK_COMMAND_TYPE_PLAY_TONE = 0x20, | |
| STK_COMMAND_TYPE_DISPLAY_TEXT = 0x21, | |
| STK_COMMAND_TYPE_GET_INKEY = 0x22, | |
| STK_COMMAND_TYPE_GET_INPUT = 0x23, | |
| STK_COMMAND_TYPE_SELECT_ITEM = 0x24, | |
| STK_COMMAND_TYPE_SETUP_MENU = 0x25, | |
| STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO = 0x26, | |
| STK_COMMAND_TYPE_TIMER_MANAGEMENT = 0x27, | |
| STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT = 0x28, | |
| STK_COMMAND_TYPE_PERFORM_CARD_APDU = 0x30, | |
| STK_COMMAND_TYPE_POWER_ON_CARD = 0x31, | |
| STK_COMMAND_TYPE_POWER_OFF_CARD = 0x32, | |
| STK_COMMAND_TYPE_GET_READER_STATUS = 0x33, | |
| STK_COMMAND_TYPE_RUN_AT_COMMAND = 0x34, | |
| STK_COMMAND_TYPE_LANGUAGE_NOTIFICATION = 0x35, | |
| STK_COMMAND_TYPE_OPEN_CHANNEL = 0x40, | |
| STK_COMMAND_TYPE_CLOSE_CHANNEL = 0x41, | |
| STK_COMMAND_TYPE_RECEIVE_DATA = 0x42, | |
| STK_COMMAND_TYPE_SEND_DATA = 0x43, | |
| STK_COMMAND_TYPE_GET_CHANNEL_STATUS = 0x44, | |
| STK_COMMAND_TYPE_SERVICE_SEARCH = 0x45, | |
| STK_COMMAND_TYPE_GET_SERVICE_INFO = 0x46, | |
| STK_COMMAND_TYPE_DECLARE_SERVICE = 0x47, | |
| STK_COMMAND_TYPE_SET_FRAMES = 0x50, | |
| STK_COMMAND_TYPE_GET_FRAMES_STATUS = 0x51, | |
| STK_COMMAND_TYPE_RETRIEVE_MMS = 0x60, | |
| STK_COMMAND_TYPE_SUBMIT_MMS = 0x61, | |
| STK_COMMAND_TYPE_DISPLAY_MMS = 0x62, | |
| STK_COMMAND_TYPE_ACTIVATE = 0x70, | |
| STK_COMMAND_TYPE_END_SESSION = 0x81, | |
| }; | |
| enum stk_data_object_type { | |
| STK_DATA_OBJECT_TYPE_INVALID = 0x00, | |
| STK_DATA_OBJECT_TYPE_COMMAND_DETAILS = 0x01, | |
| STK_DATA_OBJECT_TYPE_DEVICE_IDENTITIES = 0x02, | |
| STK_DATA_OBJECT_TYPE_RESULT = 0x03, | |
| STK_DATA_OBJECT_TYPE_DURATION = 0x04, | |
| STK_DATA_OBJECT_TYPE_ALPHA_ID = 0x05, | |
| STK_DATA_OBJECT_TYPE_ADDRESS = 0x06, | |
| STK_DATA_OBJECT_TYPE_CCP = 0x07, | |
| STK_DATA_OBJECT_TYPE_SUBADDRESS = 0x08, | |
| STK_DATA_OBJECT_TYPE_SS_STRING = 0x09, | |
| STK_DATA_OBJECT_TYPE_USSD_STRING = 0x0A, | |
| STK_DATA_OBJECT_TYPE_GSM_SMS_TPDU = 0x0B, | |
| STK_DATA_OBJECT_TYPE_CBS_PAGE = 0x0C, | |
| STK_DATA_OBJECT_TYPE_TEXT = 0x0D, | |
| STK_DATA_OBJECT_TYPE_TONE = 0x0E, | |
| STK_DATA_OBJECT_TYPE_ITEM = 0x0F, | |
| STK_DATA_OBJECT_TYPE_ITEM_ID = 0x10, | |
| STK_DATA_OBJECT_TYPE_RESPONSE_LENGTH = 0x11, | |
| STK_DATA_OBJECT_TYPE_FILE_LIST = 0x12, | |
| STK_DATA_OBJECT_TYPE_LOCATION_INFO = 0x13, | |
| STK_DATA_OBJECT_TYPE_IMEI = 0x14, | |
| STK_DATA_OBJECT_TYPE_HELP_REQUEST = 0x15, | |
| STK_DATA_OBJECT_TYPE_NETWORK_MEASUREMENT_RESULTS = 0x16, | |
| STK_DATA_OBJECT_TYPE_DEFAULT_TEXT = 0x17, | |
| STK_DATA_OBJECT_TYPE_ITEMS_NEXT_ACTION_INDICATOR = 0x18, | |
| STK_DATA_OBJECT_TYPE_EVENT_LIST = 0x19, | |
| STK_DATA_OBJECT_TYPE_CAUSE = 0x1A, | |
| STK_DATA_OBJECT_TYPE_LOCATION_STATUS = 0x1B, | |
| STK_DATA_OBJECT_TYPE_TRANSACTION_ID = 0x1C, | |
| STK_DATA_OBJECT_TYPE_BCCH_CHANNEL_LIST = 0x1D, | |
| STK_DATA_OBJECT_TYPE_ICON_ID = 0x1E, | |
| STK_DATA_OBJECT_TYPE_ITEM_ICON_ID_LIST = 0x1F, | |
| STK_DATA_OBJECT_TYPE_CARD_READER_STATUS = 0x20, | |
| STK_DATA_OBJECT_TYPE_CARD_ATR = 0x21, | |
| STK_DATA_OBJECT_TYPE_C_APDU = 0x22, | |
| STK_DATA_OBJECT_TYPE_R_APDU = 0x23, | |
| STK_DATA_OBJECT_TYPE_TIMER_ID = 0x24, | |
| STK_DATA_OBJECT_TYPE_TIMER_VALUE = 0x25, | |
| STK_DATA_OBJECT_TYPE_DATETIME_TIMEZONE = 0x26, | |
| STK_DATA_OBJECT_TYPE_CALL_CONTROL_REQUESTED_ACTION = 0x27, | |
| STK_DATA_OBJECT_TYPE_AT_COMMAND = 0x28, | |
| STK_DATA_OBJECT_TYPE_AT_RESPONSE = 0x29, | |
| STK_DATA_OBJECT_TYPE_BC_REPEAT_INDICATOR = 0x2A, | |
| STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE = 0x2B, | |
| STK_DATA_OBJECT_TYPE_DTMF_STRING = 0x2C, | |
| STK_DATA_OBJECT_TYPE_LANGUAGE = 0x2D, | |
| STK_DATA_OBJECT_TYPE_TIMING_ADVANCE = 0x2E, | |
| STK_DATA_OBJECT_TYPE_AID = 0x2F, | |
| STK_DATA_OBJECT_TYPE_BROWSER_ID = 0x30, | |
| STK_DATA_OBJECT_TYPE_URL = 0x31, | |
| STK_DATA_OBJECT_TYPE_BEARER = 0x32, | |
| STK_DATA_OBJECT_TYPE_PROVISIONING_FILE_REF = 0x33, | |
| STK_DATA_OBJECT_TYPE_BROWSER_TERMINATION_CAUSE = 0x34, | |
| STK_DATA_OBJECT_TYPE_BEARER_DESCRIPTION = 0x35, | |
| STK_DATA_OBJECT_TYPE_CHANNEL_DATA = 0x36, | |
| STK_DATA_OBJECT_TYPE_CHANNEL_DATA_LENGTH = 0x37, | |
| STK_DATA_OBJECT_TYPE_CHANNEL_STATUS = 0x38, | |
| STK_DATA_OBJECT_TYPE_BUFFER_SIZE = 0x39, | |
| STK_DATA_OBJECT_TYPE_CARD_READER_ID = 0x3A, | |
| STK_DATA_OBJECT_TYPE_FILE_UPDATE_INFO = 0x3B, | |
| STK_DATA_OBJECT_TYPE_UICC_TE_INTERFACE = 0x3C, | |
| STK_DATA_OBJECT_TYPE_OTHER_ADDRESS = 0x3E, | |
| STK_DATA_OBJECT_TYPE_ACCESS_TECHNOLOGY = 0x3F, | |
| STK_DATA_OBJECT_TYPE_DISPLAY_PARAMETERS = 0x40, | |
| STK_DATA_OBJECT_TYPE_SERVICE_RECORD = 0x41, | |
| STK_DATA_OBJECT_TYPE_DEVICE_FILTER = 0x42, | |
| STK_DATA_OBJECT_TYPE_SERVICE_SEARCH = 0x43, | |
| STK_DATA_OBJECT_TYPE_ATTRIBUTE_INFO = 0x44, | |
| STK_DATA_OBJECT_TYPE_SERVICE_AVAILABILITY = 0x45, | |
| STK_DATA_OBJECT_TYPE_ESN = 0x46, | |
| STK_DATA_OBJECT_TYPE_NETWORK_ACCESS_NAME = 0x47, | |
| STK_DATA_OBJECT_TYPE_CDMA_SMS_TPDU = 0x48, | |
| STK_DATA_OBJECT_TYPE_REMOTE_ENTITY_ADDRESS = 0x49, | |
| STK_DATA_OBJECT_TYPE_I_WLAN_ID_TAG = 0x4A, | |
| STK_DATA_OBJECT_TYPE_I_WLAN_ACCESS_STATUS = 0x4B, | |
| STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE = 0x50, | |
| STK_DATA_OBJECT_TYPE_ITEM_TEXT_ATTRIBUTE_LIST = 0x51, | |
| STK_DATA_OBJECT_TYPE_PDP_ACTIVATION_PARAMETER = 0x52, | |
| STK_DATA_OBJECT_TYPE_IMEISV = 0x62, | |
| STK_DATA_OBJECT_TYPE_BATTERY_STATE = 0x63, | |
| STK_DATA_OBJECT_TYPE_BROWSING_STATUS = 0x64, | |
| STK_DATA_OBJECT_TYPE_NETWORK_SEARCH_MODE = 0x65, | |
| STK_DATA_OBJECT_TYPE_FRAME_LAYOUT = 0x66, | |
| STK_DATA_OBJECT_TYPE_FRAMES_INFO = 0x67, | |
| STK_DATA_OBJECT_TYPE_FRAME_ID = 0x68, | |
| STK_DATA_OBJECT_TYPE_UTRAN_MEASUREMENT_QUALIFIER = 0x69, | |
| STK_DATA_OBJECT_TYPE_MMS_REFERENCE = 0x6A, | |
| STK_DATA_OBJECT_TYPE_MMS_ID = 0x6B, | |
| STK_DATA_OBJECT_TYPE_MMS_TRANSFER_STATUS = 0x6C, | |
| STK_DATA_OBJECT_TYPE_MEID = 0x6D, | |
| STK_DATA_OBJECT_TYPE_MMS_CONTENT_ID = 0x6E, | |
| STK_DATA_OBJECT_TYPE_MMS_NOTIFICATION = 0x6F, | |
| STK_DATA_OBJECT_TYPE_LAST_ENVELOPE = 0x70, | |
| STK_DATA_OBJECT_TYPE_REGISTRY_APPLICATION_DATA = 0x71, | |
| STK_DATA_OBJECT_TYPE_ROUTING_AREA_INFO = 0x73, | |
| STK_DATA_OBJECT_TYPE_UPDATE_ATTACH_TYPE = 0x74, | |
| STK_DATA_OBJECT_TYPE_REJECTION_CAUSE_CODE = 0x75, | |
| STK_DATA_OBJECT_TYPE_NMEA_SENTENCE = 0x78, | |
| STK_DATA_OBJECT_TYPE_PLMN_LIST = 0x79, | |
| STK_DATA_OBJECT_TYPE_BROADCAST_NETWORK_INFO = 0x7A, | |
| STK_DATA_OBJECT_TYPE_ACTIVATE_DESCRIPTOR = 0x7B, | |
| STK_DATA_OBJECT_TYPE_EPS_PDN_CONN_ACTIVATION_REQ = 0x7C, | |
| STK_DATA_OBJECT_TYPE_TRACKING_AREA_ID = 0x7D, | |
| }; | |
| enum stk_device_identity_type { | |
| STK_DEVICE_IDENTITY_TYPE_KEYPAD = 0x01, | |
| STK_DEVICE_IDENTITY_TYPE_DISPLAY = 0x02, | |
| STK_DEVICE_IDENTITY_TYPE_EARPIECE = 0x03, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_0 = 0x10, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_1 = 0x11, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_2 = 0x12, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_3 = 0x13, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_4 = 0x14, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_5 = 0x15, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_6 = 0x16, | |
| STK_DEVICE_IDENTITY_TYPE_CARD_READER_7 = 0x17, | |
| STK_DEVICE_IDENTITY_TYPE_CHANNEL_1 = 0x21, | |
| STK_DEVICE_IDENTITY_TYPE_CHANNEL_7 = 0x27, | |
| STK_DEVICE_IDENTITY_TYPE_UICC = 0x81, | |
| STK_DEVICE_IDENTITY_TYPE_TERMINAL = 0x82, | |
| STK_DEVICE_IDENTITY_TYPE_NETWORK = 0x83, | |
| }; | |
| enum stk_qualifier_get_reader_status_type { | |
| STK_QUALIFIER_TYPE_CARD_READER_STATUS = 0x00, | |
| STK_QUALIFIER_TYPE_CARD_READER_ID = 0x01, | |
| }; | |
| enum stk_duration_type { | |
| STK_DURATION_TYPE_MINUTES = 0x00, | |
| STK_DURATION_TYPE_SECONDS = 0x01, | |
| STK_DURATION_TYPE_SECOND_TENTHS = 0x02, | |
| }; | |
| /* Defined according to TS 102.223 Section 8.12 */ | |
| enum stk_result_type { | |
| /* 0x00 to 0x1F are used to indicate that command has been performed */ | |
| STK_RESULT_TYPE_SUCCESS = 0x00, | |
| STK_RESULT_TYPE_PARTIAL = 0x01, | |
| STK_RESULT_TYPE_MISSING_INFO = 0x02, | |
| STK_RESULT_TYPE_REFRESH_WITH_EFS = 0x03, | |
| STK_RESULT_TYPE_NO_ICON = 0x04, | |
| STK_RESULT_TYPE_CALL_CONTROL = 0x05, | |
| STK_RESULT_TYPE_NO_SERVICE = 0x06, | |
| STK_RESULT_TYPE_MODIFED = 0x07, | |
| STK_RESULT_TYPE_REFRES_NO_NAA = 0x08, | |
| STK_RESULT_TYPE_NO_TONE = 0x09, | |
| STK_RESULT_TYPE_USER_TERMINATED = 0x10, | |
| STK_RESULT_TYPE_GO_BACK = 0x11, | |
| STK_RESULT_TYPE_NO_RESPONSE = 0x12, | |
| STK_RESULT_TYPE_HELP_REQUESTED = 0x13, | |
| STK_RESULT_TYPE_USSD_OR_SS_USER_TERMINATION = 0x14, | |
| /* 0x20 to 0x2F are used to indicate that SIM should retry */ | |
| STK_RESULT_TYPE_TERMINAL_BUSY = 0x20, | |
| STK_RESULT_TYPE_NETWORK_UNAVAILABLE = 0x21, | |
| STK_RESULT_TYPE_USER_REJECT = 0x22, | |
| STK_RESULT_TYPE_USER_CANCEL = 0x23, | |
| STK_RESULT_TYPE_TIMER_CONFLICT = 0x24, | |
| STK_RESULT_TYPE_CALL_CONTROL_TEMPORARY = 0x25, | |
| STK_RESULT_TYPE_BROWSER_TEMPORARY = 0x26, | |
| STK_RESULT_TYPE_MMS_TEMPORARY = 0x27, | |
| /* 0x30 to 0x3F are used to indicate permanent problems */ | |
| STK_RESULT_TYPE_NOT_CAPABLE = 0x30, | |
| STK_RESULT_TYPE_COMMAND_NOT_UNDERSTOOD = 0x31, | |
| STK_RESULT_TYPE_DATA_NOT_UNDERSTOOD = 0x32, | |
| STK_RESULT_TYPE_COMMAND_ID_UNKNOWN = 0x33, | |
| STK_RESULT_TYPE_SS_RETURN_ERROR = 0x34, | |
| STK_RESULT_TYPE_SMS_RP_ERROR = 0x35, | |
| STK_RESULT_TYPE_MINIMUM_NOT_MET = 0x36, | |
| STK_RESULT_TYPE_USSD_RETURN_ERROR = 0x37, | |
| STK_RESULT_TYPE_CALL_CONTROL_PERMANENT = 0x39, | |
| STK_RESULT_TYPE_BIP_ERROR = 0x3A, | |
| STK_RESULT_TYPE_ACCESS_TECHNOLOGY_ERROR = 0x3B, | |
| STK_RESULT_TYPE_FRAMES_ERROR = 0x3C, | |
| STK_RESULT_TYPE_MMS_ERROR = 0x3D, | |
| }; | |
| /* Defined according to TS 102.223 Section 8.12.2 */ | |
| enum stk_result_addnl_me_pb { | |
| STK_RESULT_ADDNL_ME_PB_NO_SPECIFIC_CAUSE = 0x00, | |
| STK_RESULT_ADDNL_ME_PB_SCREEN_BUSY = 0x01, | |
| STK_RESULT_ADDNL_ME_PB_BUSY_ON_CALL = 0x02, | |
| STK_RESULT_ADDNL_ME_PB_SS_BUSY = 0x03, | |
| STK_RESULT_ADDNL_ME_PB_NO_SERVICE = 0x04, | |
| STK_RESULT_ADDNL_ME_PB_NO_ACCESS = 0x05, | |
| STK_RESULT_ADDNL_ME_PB_NO_RADIO_RESOURCE = 0x06, | |
| STK_RESULT_ADDNL_ME_PB_NOT_IN_SPEECH_CALL = 0x07, | |
| STK_RESULT_ADDNL_ME_PB_USSD_BUSY = 0x08, | |
| STK_RESULT_ADDNL_ME_PB_BUSY_ON_SEND_DTMF = 0x09, | |
| STK_RESULT_ADDNL_ME_PB_NO_NAA_ACTIVE = 0x0A | |
| }; | |
| /* Defined according to TS 31.111 Section 8.12.4 */ | |
| enum stk_result_addnl_ss_pb { | |
| STK_RESULT_ADDNL_SS_PB_NO_SPECIFIC_CAUSE = 0x00 | |
| }; | |
| /* Defined according to TS 31.111 Section 8.12.4 */ | |
| enum stk_result_addnl_bip_pb { | |
| STK_RESULT_ADDNL_BIP_PB_NO_SPECIFIC_CAUSE = 0x00, | |
| STK_RESULT_ADDNL_BIP_PB_NO_CHANNEL_AVAIL = 0x01, | |
| STK_RESULT_ADDNL_BIP_PB_CHANNEL_CLOSED = 0x02, | |
| STK_RESULT_ADDNL_BIP_PB_CHANNEL_ID_NOT_VALID = 0x03, | |
| STK_RESULT_ADDNL_BIP_PB_BUFFER_SIZE_NOT_AVAIL = 0x04, | |
| STK_RESULT_ADDNL_BIP_PB_SECURITY_ERROR = 0x05, | |
| STK_RESULT_ADDNL_BIP_PB_INTERFACE_NOT_AVAIL = 0x06, | |
| STK_RESULT_ADDNL_BIP_PB_DEVICE_NOT_REACHABLE = 0x07, | |
| STK_RESULT_ADDNL_BIP_PB_SERVICE_ERROR = 0x08, | |
| STK_RESULT_ADDNL_BIP_PB_SERVICE_ID_UNKNOWN = 0x09, | |
| STK_RESULT_ADDNL_BIP_PB_PORT_NOT_AVAIL = 0x10, | |
| STK_RESULT_ADDNL_BIP_PB_LAUNCH_PARAMETERS_MISSING = 0x11, | |
| STK_RESULT_ADDNL_BIP_PB_APPLICATION_LAUNCH_FAILED = 0x12 | |
| }; | |
| enum stk_tone_type { | |
| STK_TONE_TYPE_DIAL_TONE = 0x01, | |
| STK_TONE_TYPE_BUSY_TONE = 0x02, | |
| STK_TONE_TYPE_CONGESTION = 0x03, | |
| STK_TONE_TYPE_RP_ACK = 0x04, | |
| STK_TONE_TYPE_CALL_DROPPED = 0x05, | |
| STK_TONE_TYPE_ERROR = 0x06, | |
| STK_TONE_TYPE_CALL_WAITING = 0x07, | |
| STK_TONE_TYPE_RINGING = 0x08, | |
| STK_TONE_TYPE_GENERAL_BEEP = 0x10, | |
| STK_TONE_TYPE_POSITIVE_ACK = 0x11, | |
| STK_TONE_TYPE_NEGATIVE_ACK = 0x12, | |
| STK_TONE_TYPE_INCOMING_CALL = 0x13, | |
| STK_TONE_TYPE_INCOMING_SMS = 0x14, | |
| STK_TONE_TYPE_CRITICAL_ALERT = 0x15, | |
| STK_TONE_TYPE_VIBRATE = 0x20, | |
| STK_TONE_TYPE_HAPPY_TONE = 0x31, | |
| STK_TONE_TYPE_SAD_TONE = 0x32, | |
| STK_TONE_TYPE_URGENT_TONE = 0x33, | |
| STK_TONE_TYPE_QUESTION_TONE = 0x34, | |
| STK_TONE_TYPE_MESSAGE_TONE = 0x35, | |
| STK_TONE_TYPE_MELODY_1 = 0x40, | |
| STK_TONE_TYPE_MELODY_2 = 0x41, | |
| STK_TONE_TYPE_MELODY_3 = 0x42, | |
| STK_TONE_TYPE_MELODY_4 = 0x43, | |
| STK_TONE_TYPE_MELODY_5 = 0x44, | |
| STK_TONE_TYPE_MELODY_6 = 0x45, | |
| STK_TONE_TYPE_MELODY_7 = 0x46, | |
| STK_TONE_TYPE_MELODY_8 = 0x47 | |
| }; | |
| enum stk_event_type { | |
| STK_EVENT_TYPE_MT_CALL = 0x00, | |
| STK_EVENT_TYPE_CALL_CONNECTED = 0x01, | |
| STK_EVENT_TYPE_CALL_DISCONNECTED = 0x02, | |
| STK_EVENT_TYPE_LOCATION_STATUS = 0x03, | |
| STK_EVENT_TYPE_USER_ACTIVITY = 0x04, | |
| STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE = 0x05, | |
| STK_EVENT_TYPE_CARD_READER_STATUS = 0x06, | |
| STK_EVENT_TYPE_LANGUAGE_SELECTION = 0x07, | |
| STK_EVENT_TYPE_BROWSER_TERMINATION = 0x08, | |
| STK_EVENT_TYPE_DATA_AVAILABLE = 0x09, | |
| STK_EVENT_TYPE_CHANNEL_STATUS = 0x0A, | |
| STK_EVENT_TYPE_SINGLE_ACCESS_TECHNOLOGY_CHANGE = 0x0B, | |
| STK_EVENT_TYPE_DISPLAY_PARAMETERS_CHANGED = 0x0C, | |
| STK_EVENT_TYPE_LOCAL_CONNECTION = 0x0D, | |
| STK_EVENT_TYPE_NETWORK_SEARCH_MODE_CHANGE = 0x0E, | |
| STK_EVENT_TYPE_BROWSING_STATUS = 0x0F, | |
| STK_EVENT_TYPE_FRAMES_INFORMATION_CHANGE = 0x10, | |
| STK_EVENT_TYPE_I_WLAN_ACCESS_STATUS = 0x11, | |
| STK_EVENT_TYPE_NETWORK_REJECTION = 0x12, | |
| STK_EVENT_TYPE_HCI_CONNECTIVITY_EVENT = 0x13, | |
| STK_EVENT_TYPE_MULTIPLE_ACCESS_TECHNOLOGIES_CHANGE = 0x14 | |
| }; | |
| enum stk_service_state { | |
| STK_NORMAL_SERVICE = 0x00, | |
| STK_LIMITED_SERVICE = 0x01, | |
| STK_NO_SERVICE = 0x02 | |
| }; | |
| enum stk_icon_qualifier { | |
| STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY = 0x00, | |
| STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY = 0x01 | |
| }; | |
| enum stk_ins { | |
| STK_INS_DEACTIVATE_FILE = 0x04, | |
| STK_INS_ERASE_RECORDS = 0x0C, | |
| STK_INS_ERASE_BINARY_0E = 0x0E, | |
| STK_INS_ERASE_BINARY_0F = 0x0F, | |
| STK_INS_PERFORM_SCQL_OPERATION = 0x10, | |
| STK_INS_PERFORM_TRANSACTION_OPERATION = 0x12, | |
| STK_INS_PERFORM_USER_OPERATION = 0x14, | |
| STK_INS_VERIFY_20 = 0x20, | |
| STK_INS_VERIFY_21 = 0x21, | |
| STK_INS_MANAGE_SECURITY_ENVIRONMENT = 0x22, | |
| STK_INS_CHANGE_REFERENCE_DATA = 0x24, | |
| STK_INS_DISABLE_VERIFICATION_REQUIREMENT = 0x26, | |
| STK_INS_ENABLE_VERIFICATION_REQUIREMENT = 0x28, | |
| STK_INS_PERFORM_SECURITY_OPERATION = 0x2A, | |
| STK_INS_RESET_RETRY_COUNTER = 0x2C, | |
| STK_INS_ACTIVATE_FILE = 0x44, | |
| STK_INS_GENERATE_ASYMMETRIC_KEY_PAIR = 0x46, | |
| STK_INS_MANAGE_CHANNEL = 0x70, | |
| STK_INS_EXTERNAL_AUTHENTICATE = 0x82, | |
| STK_INS_GET_CHALLENGE = 0x84, | |
| STK_INS_GENERAL_AUTHENTICATE_86 = 0x86, | |
| STK_INS_GENERAL_AUTHENTICATE_87 = 0x87, | |
| STK_INS_INTERNAL_AUTHENTICATE = 0x88, | |
| STK_INS_SEARCH_BINARY_A0 = 0xA0, | |
| STK_INS_SEARCH_BINARY_A1 = 0xA1, | |
| STK_INS_SEARCH_RECORD = 0xA2, | |
| STK_INS_SELECT = 0xA4, | |
| STK_INS_READ_BINARY_B0 = 0xB0, | |
| STK_INS_READ_BINARY_B1 = 0xB1, | |
| STK_INS_READ_RECORDS_B2 = 0xB2, | |
| STK_INS_READ_RECORDS_B3 = 0xB3, | |
| STK_INS_GET_RESPONSE = 0xC0, | |
| STK_INS_ENVELOPE_C2 = 0xC2, | |
| STK_INS_ENVELOPE_C3 = 0xC3, | |
| STK_INS_GET_DATA_CA = 0xCA, | |
| STK_INS_GET_DATA_CB = 0xCB, | |
| STK_INS_WRITE_BINARY_D0 = 0xD0, | |
| STK_INS_WRITE_BINARY_D1 = 0xD1, | |
| STK_INS_WRITE_RECORD = 0xD2, | |
| STK_INS_UPDATE_BINARY_D6 = 0xD6, | |
| STK_INS_UPDATE_BINARY_D7 = 0xD7, | |
| STK_INS_PUT_DATA_DA = 0xDA, | |
| STK_INS_PUT_DATA_DB = 0xDB, | |
| STK_INS_UPDATE_RECORD_DC = 0xDC, | |
| STK_INS_UPDATE_RECORD_DD = 0xDD, | |
| STK_INS_CREATE_FILE = 0xE0, | |
| STK_INS_APPEND_RECORD = 0xE2, | |
| STK_INS_DELETE_FILE = 0xE4, | |
| STK_INS_TERMINATE_DF = 0xE6, | |
| STK_INS_TERMINATE_EF = 0xE8, | |
| STK_INS_TERMINATE_CARD_USAGE = 0xFE | |
| }; | |
| enum stk_browser_id { | |
| STK_BROWSER_ID_DEFAULT = 0x00, | |
| STK_BROWSER_ID_WML = 0x01, | |
| STK_BROWSER_ID_HTML = 0x02, | |
| STK_BROWSER_ID_XHTML = 0x03, | |
| STK_BROWSER_ID_CHTML = 0x04 | |
| }; | |
| enum stk_bearer { | |
| STK_BEARER_SMS = 0x00, | |
| STK_BEARER_CS_DATA = 0x01, | |
| STK_BEARER_GSM_3G = 0x02, | |
| STK_BEARER_PS = 0x03 | |
| }; | |
| enum stk_browser_termination_cause { | |
| STK_BROWSER_USER_TERMINATION = 0x00, | |
| STK_BROWSER_ERROR_TERMINATION = 0x01 | |
| }; | |
| /* Defined in TS 31.111 Section 8.52 */ | |
| enum stk_bearer_type { | |
| STK_BEARER_TYPE_CS = 0x01, | |
| STK_BEARER_TYPE_GPRS_UTRAN = 0x02, | |
| STK_BEARER_TYPE_DEFAULT = 0x03, | |
| STK_BEARER_TYPE_INDEPENDENT = 0x04, | |
| STK_BEARER_TYPE_BLUETOOTH = 0x05, | |
| STK_BEARER_TYPE_IRDA = 0x06, | |
| STK_BEARER_TYPE_RS232 = 0x07, | |
| STK_BEARER_TYPE_TIA_EIA_IS_820 = 0x08, | |
| STK_BEARER_TYPE_UTRAN_WITH_EXT_PARAMS = 0x09, | |
| STK_BEARER_TYPE_I_WLAN = 0x0A, | |
| STK_BEARER_TYPE_EUTRAN_MAPPED_UTRAN = 0x0B, | |
| STK_BEARER_TYPE_USB = 0x10 | |
| }; | |
| enum stk_address_type { | |
| STK_ADDRESS_AUTO = -1, | |
| STK_ADDRESS_IPV4 = 0x21, | |
| STK_ADDRESS_IPV6 = 0x57 | |
| }; | |
| enum stk_access_technology_type { | |
| STK_ACCESS_TECHNOLOGY_GSM = 0x00, | |
| STK_ACCESS_TECHNOLOGY_TIA_EIA_553 = 0x01, | |
| STK_ACCESS_TECHNOLOGY_TIA_EIA_136_C = 0x02, | |
| STK_ACCESS_TECHNOLOGY_UTRAN = 0x03, | |
| STK_ACCESS_TECHNOLOGY_TETRA = 0x04, | |
| STK_ACCESS_TECHNOLOGY_TIA_EIA_95 = 0x05, | |
| STK_ACCESS_TECHNOLOGY_CDMA2000_1X = 0x06, | |
| STK_ACCESS_TECHNOLOGY_CDMA2000_HRPD = 0x07, | |
| STK_ACCESS_TECHNOLOGY_EUTRAN = 0x08 | |
| }; | |
| enum stk_technology_id { | |
| STK_TECHNOLOGY_INDEPENDENT = 0x00, | |
| STK_TECHNOLOGY_BLUETOOTH = 0x01, | |
| STK_TECHNOLOGY_IRDA = 0x02, | |
| STK_TECHNOLOGY_RS232 = 0x03, | |
| STK_TECHNOLOGY_USB = 0x04 | |
| }; | |
| enum stk_battery_state { | |
| STK_BATTERY_VERY_LOW = 0x00, | |
| STK_BATTERY_LOW = 0x01, | |
| STK_BATTERY_AVERAGE = 0x02, | |
| STK_BATTERY_GOOD = 0x03, | |
| STK_BATTERY_FULL = 0x04 | |
| }; | |
| enum stk_frame_layout_type { | |
| STK_LAYOUT_HORIZONTAL = 0x01, | |
| STK_LAYOUT_VERTICAL = 0x02 | |
| }; | |
| enum stk_broadcast_network_technology { | |
| STK_BROADCAST_NETWORK_DVB_H = 0x00, | |
| STK_BROADCAST_NETWORK_DVB_T = 0x01, | |
| STK_BROADCAST_NETWORK_DVB_SH = 0x02, | |
| STK_BROADCAST_NETWORK_T_DMB = 0x03 | |
| }; | |
| enum stk_i_wlan_access_status { | |
| STK_I_WLAN_STATUS_NO_COVERAGE = 0x00, | |
| STK_I_WLAN_STATUS_NOT_CONNECTED = 0x01, | |
| STK_I_WLAN_STATUS_CONNECTED = 0x02, | |
| }; | |
| enum stk_update_attach_type { | |
| STK_UPDATE_ATTACH_NORMAL_LOCATION_UPDATING = 0x00, | |
| STK_UPDATE_ATTACH_PERIODIC_UPDATING = 0x01, | |
| STK_UPDATE_ATTACH_IMSI_ATTACH = 0x02, | |
| STK_UPDATE_ATTACH_GPRS_ATTACH = 0x03, | |
| STK_UPDATE_ATTACH_GPRS_IMSI_ATTACH = 0x04, | |
| STK_UPDATE_ATTACH_RA_UPDATING = 0x05, | |
| STK_UPDATE_ATTACH_RA_LA_UPDATING = 0x06, | |
| STK_UPDATE_ATTACH_RA_LA_UPDATING_IMSI_ATTACH = 0x07, | |
| STK_UPDATE_ATTACH_PERIODIC_RA_UPDATING = 0x08, | |
| STK_UPDATE_ATTACH_EPS_ATTACH = 0x09, | |
| STK_UPDATE_ATTACH_EPS_IMSI_ATTACH = 0x0a, | |
| STK_UPDATE_ATTACH_TA_UPDATING = 0x0b, | |
| STK_UPDATE_ATTACH_TA_LA_UPDATING = 0x0c, | |
| STK_UPDATE_ATTACH_TA_LA_UPDATING_IMSI_ATTACH = 0x0d, | |
| STK_UPDATE_ATTACH_PERIDIC_TA_UPDATING = 0x0e, | |
| }; | |
| enum stk_rejection_cause_code { | |
| /* MM and GMM codes (GERAN/UTRAN) */ | |
| STK_CAUSE_GMM_IMSI_UNKNOWN_IN_HLR = 0x02, | |
| STK_CAUSE_GMM_ILLEGAL_MS = 0x03, | |
| STK_CAUSE_GMM_IMSI_UNKNOWN_IN_VLR = 0x04, | |
| STK_CAUSE_GMM_IMEI_NOT_ACCEPTED = 0x05, | |
| STK_CAUSE_GMM_ILLEGAL_ME = 0x06, | |
| STK_CAUSE_GMM_GPRS_NOT_ALLOWED = 0x07, | |
| STK_CAUSE_GMM_GPRS_AND_NON_GPRS_NOT_ALLOWED = 0x08, | |
| STK_CAUSE_GMM_IMEI_NOT_DERIVED_BY_NETWORK = 0x09, | |
| STK_CAUSE_GMM_IMPLICITLY_DETACHED = 0x0a, | |
| STK_CAUSE_GMM_PLMN_NOT_ALLOWED = 0x0b, | |
| STK_CAUSE_GMM_LAC_NOT_ALLOWED = 0x0c, | |
| STK_CAUSE_GMM_ROAMING_NOT_ALLOWED = 0x0d, | |
| STK_CAUSE_GMM_GPRS_NOT_ALLOWED_IN_PLMN = 0x0e, | |
| STK_CAUSE_GMM_NO_SUITABLE_CELLS = 0x0f, | |
| STK_CAUSE_GMM_MSC_TEMPORARILY_UNREACHABLE = 0x10, | |
| STK_CAUSE_GMM_NETWORK_FAILURE = 0x11, | |
| STK_CAUSE_GMM_MAC_FAILURE = 0x14, | |
| STK_CAUSE_GMM_SYNCH_FAILURE = 0x15, | |
| STK_CAUSE_GMM_CONGESTION = 0x16, | |
| STK_CAUSE_GMM_GSM_AUTHENTICATION_UNACCEPTABLE = 0x17, | |
| STK_CAUSE_GMM_NOT_AUTHORISED_FOR_CSG = 0x19, | |
| STK_CAUSE_GMM_SERVICE_OPTION_NOT_SUPPORTED = 0x20, | |
| STK_CAUSE_GMM_SERVICE_OPTION_NOT_SUBSCRIBED = 0x21, | |
| STK_CAUSE_GMM_SERVICE_OPTION_TEMPORARY_DEFUNC = 0x22, | |
| STK_CAUSE_GMM_CALL_NOT_IDENTIFIED = 0x26, | |
| STK_CAUSE_GMM_NO_PDP_CONTEXT_ACTIVATED = 0x28, | |
| STK_CAUSE_GMM_RETRY_ON_NEW_CELL = 0x30, /* to 0x3f */ | |
| STK_CAUSE_GMM_SEMANTICALLY_INCORRECT_MESSAGE = 0x5f, | |
| STK_CAUSE_GMM_INVALID_MANDATORY_INFO = 0x60, | |
| STK_CAUSE_GMM_MESSAGE_TYPE_UNKNOWN = 0x61, | |
| STK_CAUSE_GMM_MESSAGE_TYPE_INCOMPATIBLE_STATE = 0x62, | |
| STK_CAUSE_GMM_IE_UNKNOWN = 0x63, | |
| STK_CAUSE_GMM_CONDITIONAL_IE_ERROR = 0x64, | |
| STK_CAUSE_GMM_MESSAGE_INCOMPATIBLE_WITH_STATE = 0x65, | |
| STK_CAUSE_GMM_PROTOCOL_ERROR = 0x6f, | |
| /* EMM codes (E-UTRAN) */ | |
| STK_CAUSE_EMM_IMSI_UNKNOWN_IN_HSS = 0x02, | |
| STK_CAUSE_EMM_ILLEGAL_UE = 0x03, | |
| STK_CAUSE_EMM_ILLEGAL_ME = 0x06, | |
| STK_CAUSE_EMM_EPS_NOT_ALLOWED = 0x07, | |
| STK_CAUSE_EMM_EPS_AND_NON_EPS_NOT_ALLOWED = 0x08, | |
| STK_CAUSE_EMM_IMEI_NOT_DERIVED_BY_NETWORK = 0x09, | |
| STK_CAUSE_EMM_IMPLICITLY_DETACHED = 0x0a, | |
| STK_CAUSE_EMM_PLMN_NOT_ALLOWED = 0x0b, | |
| STK_CAUSE_EMM_TAC_NOT_ALLOWED = 0x0c, | |
| STK_CAUSE_EMM_ROAMING_NOT_ALLOWED = 0x0d, | |
| STK_CAUSE_EMM_EPS_NOT_ALLOWED_IN_PLMN = 0x0e, | |
| STK_CAUSE_EMM_NO_SUITABLE_CELLS = 0x0f, | |
| STK_CAUSE_EMM_MSC_TEMPORARILY_UNREACHABLE = 0x10, | |
| STK_CAUSE_EMM_NETWORK_FAILURE = 0x11, | |
| STK_CAUSE_EMM_MAC_FAILURE = 0x14, | |
| STK_CAUSE_EMM_SYNCH_FAILURE = 0x15, | |
| STK_CAUSE_EMM_CONGESTION = 0x16, | |
| STK_CAUSE_EMM_SECURITY_MODE_REJECTED = 0x18, | |
| STK_CAUSE_EMM_NOT_AUTHORISED_FOR_CSG = 0x19, | |
| STK_CAUSE_EMM_CS_FALLBACK_NOT_ALLOWED = 0x26, | |
| STK_CAUSE_EMM_CS_DOMAIN_TEMPORARY_UNAVAILABLE = 0x27, | |
| STK_CAUSE_EMM_NO_EPS_BEARER_CONTEXT_ACTIVATED = 0x28, | |
| STK_CAUSE_EMM_SEMANTICALLY_INCORRECT_MESSAGE = 0x5f, | |
| STK_CAUSE_EMM_INVALID_MANDATORY_INFO = 0x60, | |
| STK_CAUSE_EMM_MESSAGE_TYPE_UNKNOWN = 0x61, | |
| STK_CAUSE_EMM_MESSAGE_TYPE_INCOMPATIBLE_STATE = 0x62, | |
| STK_CAUSE_EMM_IE_UNKNOWN = 0x63, | |
| STK_CAUSE_EMM_CONDITIONAL_IE_ERROR = 0x64, | |
| STK_CAUSE_EMM_MESSAGE_INCOMPATIBLE_WITH_STATE = 0x65, | |
| STK_CAUSE_EMM_PROTOCOL_ERROR = 0x6f, | |
| }; | |
| enum stk_me_status { | |
| STK_ME_STATUS_IDLE = 0x00, | |
| STK_ME_STATUS_NOT_IDLE = 0x01 | |
| }; | |
| enum stk_img_scheme { | |
| STK_IMG_SCHEME_BASIC = 0x11, | |
| STK_IMG_SCHEME_COLOR = 0x21, | |
| STK_IMG_SCHEME_TRANSPARENCY = 0x22, | |
| }; | |
| /* Defined in TS 102.223 Section 8.6 */ | |
| enum stk_qualifier_open_channel { | |
| STK_OPEN_CHANNEL_FLAG_IMMEDIATE = 0x01, | |
| STK_OPEN_CHANNEL_FLAG_AUTO_RECONNECT = 0x02, | |
| STK_OPEN_CHANNEL_FLAG_BACKGROUND = 0x04, | |
| }; | |
| /* Defined in TS 102.223 Section 8.6 */ | |
| enum stk_qualifier_send_data { | |
| STK_SEND_DATA_STORE_DATA = 0x00, | |
| STK_SEND_DATA_IMMEDIATELY = 0x01, | |
| }; | |
| /* Defined in TS 102.223 Section 8.56 */ | |
| enum stk_channel_status { | |
| STK_CHANNEL_PACKET_DATA_SERVICE_NOT_ACTIVATED = 0x00, | |
| STK_CHANNEL_PACKET_DATA_SERVICE_ACTIVATED = 0x01, | |
| STK_CHANNEL_TCP_IN_CLOSED_STATE = 0x02, | |
| STK_CHANNEL_TCP_IN_LISTEN_STATE = 0x03, | |
| STK_CHANNEL_TCP_IN_ESTABLISHED_STATE = 0x04, | |
| STK_CHANNEL_LINK_DROPPED = 0x05, | |
| }; | |
| /* Defined in TS 102.223 Section 8.59 */ | |
| enum stk_transport_protocol_type { | |
| STK_TRANSPORT_PROTOCOL_UDP_CLIENT_REMOTE = 0x01, | |
| STK_TRANSPORT_PROTOCOL_TCP_CLIENT_REMOTE = 0x02, | |
| STK_TRANSPORT_PROTOCOL_TCP_SERVER = 0x03, | |
| STK_TRANSPORT_PROTOCOL_UDP_CLIENT_LOCAL = 0x04, | |
| STK_TRANSPORT_PROTOCOL_TCP_CLIENT_LOCAL = 0x05, | |
| STK_TRANSPORT_PROTOCOL_DIRECT = 0x06, | |
| }; | |
| /* For data object that only has a byte array with undetermined length */ | |
| struct stk_common_byte_array { | |
| uint8_t *array; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.1 */ | |
| struct stk_address { | |
| uint8_t ton_npi; | |
| char *number; | |
| }; | |
| /* | |
| * Defined in TS 102.223 Section 8.3 | |
| * | |
| * The maximum size of the subaddress is different depending on the referenced | |
| * specification. According to TS 24.008 Section 10.5.4.8: "The called party | |
| * subaddress is a type 4 information element with a minimum length of 2 octets | |
| * and a maximum length of 23 octets" | |
| * | |
| * According to TS 31.102 Section 4.4.2.4: "The subaddress data contains | |
| * information as defined for this purpose in TS 24.008 [9]. All information | |
| * defined in TS 24.008, except the information element identifier, shall be | |
| * stored in the USIM. The length of this subaddress data can be up to 22 | |
| * bytes." | |
| */ | |
| struct stk_subaddress { | |
| bool has_subaddr; | |
| uint8_t len; | |
| uint8_t subaddr[23]; | |
| }; | |
| /* | |
| * Defined in TS 102.223 Section 8.4 | |
| * | |
| * According to 24.008 Section 10.5.4.5 "The bearer capability is a type 4 | |
| * information element with a minimum length of 3 octets and a maximum length | |
| * of 16 octets." | |
| * | |
| * According to TS 31.102 Section 4.2.38 the CCP length is 15 bytes. | |
| * | |
| * The CCP structure is not decoded, but stored as is from the CTLV | |
| */ | |
| struct stk_ccp { | |
| uint8_t len; | |
| uint8_t ccp[16]; | |
| }; | |
| /* Defined in TS 31.111 Section 8.5 */ | |
| struct stk_cbs_page { | |
| uint8_t len; | |
| uint8_t page[88]; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.8 interval values of 0x00 are reserved. | |
| * We use this to denote empty duration objects. | |
| */ | |
| struct stk_duration { | |
| enum stk_duration_type unit; | |
| uint8_t interval; | |
| }; | |
| /* Defined in TS 102.223 Section 8.9 */ | |
| struct stk_item { | |
| uint8_t id; | |
| char *text; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.11, the maximum length should never be set | |
| * to 0. | |
| */ | |
| struct stk_response_length { | |
| uint8_t min; | |
| uint8_t max; | |
| }; | |
| /* Defined in TS 102.223 Section 8.12 */ | |
| struct stk_result { | |
| enum stk_result_type type; | |
| unsigned int additional_len; | |
| uint8_t *additional; | |
| }; | |
| /* Defined in TS 102.223 Section 8.14 */ | |
| struct stk_ss { | |
| uint8_t ton_npi; | |
| char *ss; | |
| }; | |
| /* Defined in TS 131.111 Section 8.17. Length limit of 160 chars in 23.028 */ | |
| struct stk_ussd_string { | |
| uint8_t dcs; | |
| uint8_t string[160]; | |
| int len; | |
| }; | |
| /* | |
| * Define the struct of single file in TS102.223 Section 8.18. | |
| * According to TS 11.11 Section 6.2, each file id has two bytes, and the | |
| * maximum Dedicated File level is 2. So the maximum size of file is 8, which | |
| * contains two bytes of Master File, 2 bytes of 1st level Dedicated File, | |
| * 2 bytes of 2nd level Dedicated File and 2 bytes of Elementary File. | |
| */ | |
| struct stk_file { | |
| uint8_t file[8]; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.19 */ | |
| struct stk_location_info { | |
| char mnc[OFONO_MAX_MNC_LENGTH + 1]; | |
| char mcc[OFONO_MAX_MCC_LENGTH + 1]; | |
| uint16_t lac_tac; | |
| bool has_ci; | |
| uint16_t ci; | |
| bool has_ext_ci; | |
| uint16_t ext_ci; | |
| bool has_eutran_ci; | |
| uint32_t eutran_ci; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.24 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_items_next_action_indicator { | |
| uint8_t list[127]; | |
| unsigned int len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.25, there are 21 kinds of event type and no | |
| * one should appear more than once. | |
| */ | |
| struct stk_event_list { | |
| uint8_t list[21]; | |
| unsigned int len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.26, the maximum length of cause is 30. | |
| */ | |
| struct stk_cause { | |
| uint8_t cause[30]; | |
| unsigned int len; | |
| bool has_cause; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.28 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_transaction_id { | |
| uint8_t list[127]; | |
| unsigned int len; | |
| }; | |
| /* | |
| * According to 31.111 Section 8.29 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. Each channel | |
| * is represented as 10 bits, so the maximum number of channel is 127*8/10=101. | |
| */ | |
| struct stk_bcch_channel_list { | |
| uint16_t channels[101]; | |
| unsigned int num; | |
| bool has_list; | |
| }; | |
| /* | |
| * Defined in TS 102.223 Section 8.31 | |
| * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record | |
| * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects | |
| */ | |
| struct stk_icon_id { | |
| uint8_t qualifier; | |
| uint8_t id; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.32 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. This size also | |
| * includes icon list qualifier for 1 byte, so the maxmimum size of icon | |
| * identifier list is 126. | |
| */ | |
| struct stk_item_icon_id_list { | |
| uint8_t qualifier; | |
| uint8_t list[126]; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.33 */ | |
| struct stk_reader_status { | |
| int id; | |
| bool removable; | |
| bool present; | |
| bool id1_size; | |
| bool card_present; | |
| bool card_powered; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.34 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_card_atr { | |
| uint8_t atr[127]; | |
| unsigned int len; | |
| }; | |
| /* | |
| * Defined in TS 102.223 Section 8.35. According to it, the maximum size | |
| * of data is 236. | |
| */ | |
| struct stk_c_apdu { | |
| uint8_t cla; | |
| uint8_t ins; | |
| uint8_t p1; | |
| uint8_t p2; | |
| uint8_t lc; | |
| uint8_t data[236]; | |
| bool has_le; | |
| uint8_t le; | |
| }; | |
| /* Defined in TS 102.223 Section 8.36. According to it, the maximum size | |
| * of data is 237. | |
| */ | |
| struct stk_r_apdu { | |
| uint8_t sw1; | |
| uint8_t sw2; | |
| uint8_t data[237]; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.38 */ | |
| struct stk_timer_value { | |
| bool has_value; | |
| uint8_t hour; | |
| uint8_t minute; | |
| uint8_t second; | |
| }; | |
| /* Defined in TS 102.223 Section 8.42 */ | |
| struct stk_bc_repeat { | |
| bool has_bc_repeat; | |
| uint8_t value; | |
| }; | |
| /* Defined in TS 31.111 Section 8.46 */ | |
| struct stk_timing_advance { | |
| bool has_value; | |
| enum stk_me_status status; | |
| /* | |
| * Contains bit periods number according to 3GPP TS | |
| * 44.118 Section 9.3.106 / 3GPP TS 44.018 Section | |
| * 10.5.2.40.1, not microseconds | |
| */ | |
| uint8_t advance; | |
| }; | |
| /* Bearer parameters for GPRS/UTRAN Packet Service/E-UTRAN */ | |
| struct stk_gprs_bearer_parameters { | |
| uint8_t precedence; | |
| uint8_t delay; | |
| uint8_t reliability; | |
| uint8_t peak; | |
| uint8_t mean; | |
| uint8_t pdp_type; | |
| }; | |
| /* Defined in TS 31.111 Section 8.52 */ | |
| struct stk_bearer_description { | |
| enum stk_bearer_type type; | |
| struct stk_gprs_bearer_parameters gprs; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.57 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_card_reader_id { | |
| uint8_t id[127]; | |
| uint8_t len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.58 the address can be either ipv4 or ipv6. | |
| * So the maximum size is 16 (for ipv6). | |
| */ | |
| struct stk_other_address { | |
| union { | |
| /* Network Byte Order */ | |
| guint32 ipv4; | |
| uint8_t ipv6[16]; | |
| } addr; | |
| enum stk_address_type type; | |
| }; | |
| /* Defined in TS 102.223 Section 8.59 */ | |
| struct stk_uicc_te_interface { | |
| enum stk_transport_protocol_type protocol; | |
| uint16_t port; | |
| }; | |
| /* | |
| * Defined in TS 102.223 Section 8.60. | |
| * According to 101.220, Section 4, aid contains two fields RID and PIX. | |
| * RID has 5 bytes, while PIX contains information between 7 to 11 bytes. | |
| * So the maximum size of aid is 16 bytes. | |
| */ | |
| struct stk_aid { | |
| uint8_t aid[16]; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.62 */ | |
| struct stk_display_parameters { | |
| uint8_t height; | |
| uint8_t width; | |
| uint8_t effects; | |
| }; | |
| /* Defined in TS 102.223 Section 8.63 */ | |
| struct stk_service_record { | |
| uint8_t tech_id; | |
| uint8_t serv_id; | |
| uint8_t *serv_rec; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.64 */ | |
| struct stk_device_filter { | |
| uint8_t tech_id; | |
| uint8_t *dev_filter; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.65 */ | |
| struct stk_service_search { | |
| uint8_t tech_id; | |
| uint8_t *ser_search; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.66 */ | |
| struct stk_attribute_info { | |
| uint8_t tech_id; | |
| uint8_t *attr_info; | |
| unsigned int len; | |
| }; | |
| /* | |
| * According to TS 102.223 Section 8.68, remote entity address can be either | |
| * 6-bytes IEEE-802 address, or 4-bytes IrDA device address. | |
| */ | |
| struct stk_remote_entity_address { | |
| uint8_t coding_type; | |
| bool has_address; | |
| union { | |
| uint8_t ieee802[6]; | |
| uint8_t irda[4]; | |
| } addr; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.72 the length of text attribute CTLV is 1 | |
| * byte. This means that the maximum size is 127 according to the rules | |
| * of CTLVs. Empty attribute options will have len of 0. | |
| */ | |
| struct stk_text_attribute { | |
| uint8_t attributes[127]; | |
| uint8_t len; | |
| }; | |
| /* Defined in TS 31.111 Section 8.72 */ | |
| struct stk_pdp_act_par { | |
| uint8_t par[127]; | |
| uint8_t len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.73 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. In addition, | |
| * the length should be also the number multiplied by 4, so the maximum number | |
| * is 124. | |
| */ | |
| struct stk_item_text_attribute_list { | |
| uint8_t list[124]; | |
| uint8_t len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.78 the length of CTLV is 1 byte. This means | |
| * that the maximum length is 127 bytes for the total length of layout and | |
| * relative-sized frame. Thus the maximum length of relative size is 126 bytes. | |
| */ | |
| struct stk_frame_layout { | |
| uint8_t layout; | |
| uint8_t size[126]; | |
| unsigned int len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.79 the length of CTLV is 1 byte. This means | |
| * that the maximum length is 127 bytes for the total length of default frame | |
| * id and frame information list. Thus the maximum length of frame information | |
| * list is 126 bytes. | |
| */ | |
| struct stk_frames_info { | |
| uint8_t id; | |
| struct { | |
| uint8_t width, height; | |
| } list[63]; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.80 */ | |
| struct stk_frame_id { | |
| bool has_id; | |
| uint8_t id; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.82 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_mms_reference { | |
| uint8_t ref[127]; | |
| uint8_t len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.83 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_mms_id { | |
| uint8_t id[127]; | |
| uint8_t len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.84 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_mms_transfer_status { | |
| uint8_t status[127]; | |
| uint8_t len; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.85 the length of CTLV is 1 byte. This means | |
| * that the maximum size is 127 according to the rules of CTLVs. | |
| */ | |
| struct stk_mms_content_id { | |
| uint8_t id[127]; | |
| uint8_t len; | |
| }; | |
| /* Defined in TS 102.223 Section 8.88 */ | |
| struct stk_registry_application_data { | |
| uint16_t port; | |
| uint8_t type; | |
| char *name; | |
| }; | |
| /* | |
| * According to 102.223 Section 8.90 the length of CTLV is 1 byte. This means | |
| * that the maximum length is 127 bytes for the total length of broadcast | |
| * network technology and location information. Thus the maximum length of | |
| * location information is 126 bytes. | |
| */ | |
| struct stk_broadcast_network_information { | |
| uint8_t tech; | |
| uint8_t loc_info[126]; | |
| unsigned int len; | |
| }; | |
| /* Defined in TS 131.111 Section 8.91 */ | |
| struct stk_routing_area_info { | |
| char mnc[OFONO_MAX_MNC_LENGTH + 1]; | |
| char mcc[OFONO_MAX_MCC_LENGTH + 1]; | |
| uint16_t lac; | |
| uint8_t rac; | |
| }; | |
| /* Defined in TS 131.111 Section 8.99 */ | |
| struct stk_tracking_area_id { | |
| char mnc[OFONO_MAX_MNC_LENGTH + 1]; | |
| char mcc[OFONO_MAX_MCC_LENGTH + 1]; | |
| uint16_t tac; | |
| }; | |
| struct stk_command_display_text { | |
| char *text; | |
| struct stk_icon_id icon_id; | |
| bool immediate_response; | |
| struct stk_duration duration; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_get_inkey { | |
| char *text; | |
| struct stk_icon_id icon_id; | |
| struct stk_duration duration; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_get_input { | |
| char *text; | |
| struct stk_response_length resp_len; | |
| char *default_text; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_play_tone { | |
| char *alpha_id; | |
| uint8_t tone; | |
| struct stk_duration duration; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_poll_interval { | |
| struct stk_duration duration; | |
| }; | |
| struct stk_command_setup_menu { | |
| char *alpha_id; | |
| struct l_queue *items; | |
| struct stk_items_next_action_indicator next_act; | |
| struct stk_icon_id icon_id; | |
| struct stk_item_icon_id_list item_icon_id_list; | |
| struct stk_text_attribute text_attr; | |
| struct stk_item_text_attribute_list item_text_attr_list; | |
| }; | |
| struct stk_command_select_item { | |
| char *alpha_id; | |
| struct l_queue *items; | |
| struct stk_items_next_action_indicator next_act; | |
| uint8_t item_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_item_icon_id_list item_icon_id_list; | |
| struct stk_text_attribute text_attr; | |
| struct stk_item_text_attribute_list item_text_attr_list; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_send_sms { | |
| char *alpha_id; | |
| struct sms gsm_sms; | |
| struct stk_common_byte_array cdma_sms; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_send_ss { | |
| char *alpha_id; | |
| struct stk_ss ss; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_send_ussd { | |
| char *alpha_id; | |
| struct stk_ussd_string ussd_string; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_setup_call { | |
| char *alpha_id_usr_cfm; | |
| struct stk_address addr; | |
| struct stk_ccp ccp; | |
| struct stk_subaddress subaddr; | |
| struct stk_duration duration; | |
| struct stk_icon_id icon_id_usr_cfm; | |
| char *alpha_id_call_setup; | |
| struct stk_icon_id icon_id_call_setup; | |
| struct stk_text_attribute text_attr_usr_cfm; | |
| struct stk_text_attribute text_attr_call_setup; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_refresh { | |
| struct l_queue *file_list; | |
| struct stk_aid aid; | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_setup_event_list { | |
| struct stk_event_list event_list; | |
| }; | |
| struct stk_command_perform_card_apdu { | |
| struct stk_c_apdu c_apdu; | |
| }; | |
| struct stk_command_timer_mgmt { | |
| uint8_t timer_id; | |
| struct stk_timer_value timer_value; | |
| }; | |
| struct stk_command_setup_idle_mode_text { | |
| char *text; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_run_at_command { | |
| char *alpha_id; | |
| char *at_command; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_send_dtmf { | |
| char *alpha_id; | |
| char *dtmf; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_language_notification { | |
| char language[3]; | |
| }; | |
| struct stk_command_launch_browser { | |
| uint8_t browser_id; | |
| char *url; | |
| struct stk_common_byte_array bearer; | |
| struct l_queue *prov_file_refs; | |
| char *text_gateway_proxy_id; | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| struct stk_common_byte_array network_name; | |
| char *text_usr; | |
| char *text_passwd; | |
| }; | |
| struct stk_command_open_channel { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_bearer_description bearer_desc; | |
| uint16_t buf_size; | |
| char *apn; | |
| struct stk_other_address local_addr; | |
| char *text_usr; | |
| char *text_passwd; | |
| struct stk_uicc_te_interface uti; | |
| struct stk_other_address data_dest_addr; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_close_channel { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_receive_data { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| uint8_t data_len; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_send_data { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_common_byte_array data; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_service_search { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_service_search serv_search; | |
| struct stk_device_filter dev_filter; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_get_service_info { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_attribute_info attr_info; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_declare_service { | |
| struct stk_service_record serv_rec; | |
| struct stk_uicc_te_interface intf; | |
| }; | |
| struct stk_command_set_frames { | |
| struct stk_frame_id frame_id; | |
| struct stk_frame_layout frame_layout; | |
| struct stk_frame_id frame_id_default; | |
| }; | |
| struct stk_command_retrieve_mms { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct stk_mms_reference mms_ref; | |
| struct l_queue *mms_rec_files; | |
| struct stk_mms_content_id mms_content_id; | |
| struct stk_mms_id mms_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_submit_mms { | |
| char *alpha_id; | |
| struct stk_icon_id icon_id; | |
| struct l_queue *mms_subm_files; | |
| struct stk_mms_id mms_id; | |
| struct stk_text_attribute text_attr; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_display_mms { | |
| struct l_queue *mms_subm_files; | |
| struct stk_mms_id mms_id; | |
| bool imd_resp; | |
| struct stk_frame_id frame_id; | |
| }; | |
| struct stk_command_activate { | |
| uint8_t actv_desc; | |
| }; | |
| enum stk_command_parse_result { | |
| STK_PARSE_RESULT_OK, | |
| STK_PARSE_RESULT_TYPE_NOT_UNDERSTOOD, | |
| STK_PARSE_RESULT_DATA_NOT_UNDERSTOOD, | |
| STK_PARSE_RESULT_MISSING_VALUE, | |
| }; | |
| struct stk_command { | |
| uint8_t number; | |
| uint8_t type; | |
| uint8_t qualifier; | |
| enum stk_device_identity_type src; | |
| enum stk_device_identity_type dst; | |
| enum stk_command_parse_result status; | |
| union { | |
| struct stk_command_display_text display_text; | |
| struct stk_command_get_inkey get_inkey; | |
| struct stk_command_get_input get_input; | |
| struct stk_command_play_tone play_tone; | |
| struct stk_command_poll_interval poll_interval; | |
| struct stk_command_refresh refresh; | |
| struct stk_command_setup_menu setup_menu; | |
| struct stk_command_select_item select_item; | |
| struct stk_command_send_sms send_sms; | |
| struct stk_command_send_ss send_ss; | |
| struct stk_command_send_ussd send_ussd; | |
| struct stk_command_setup_call setup_call; | |
| struct stk_command_setup_event_list setup_event_list; | |
| struct stk_command_perform_card_apdu perform_card_apdu; | |
| struct stk_command_timer_mgmt timer_mgmt; | |
| struct stk_command_setup_idle_mode_text setup_idle_mode_text; | |
| struct stk_command_run_at_command run_at_command; | |
| struct stk_command_send_dtmf send_dtmf; | |
| struct stk_command_language_notification language_notification; | |
| struct stk_command_launch_browser launch_browser; | |
| struct stk_command_open_channel open_channel; | |
| struct stk_command_close_channel close_channel; | |
| struct stk_command_receive_data receive_data; | |
| struct stk_command_send_data send_data; | |
| struct stk_command_service_search service_search; | |
| struct stk_command_get_service_info get_service_info; | |
| struct stk_command_declare_service declare_service; | |
| struct stk_command_set_frames set_frames; | |
| struct stk_command_retrieve_mms retrieve_mms; | |
| struct stk_command_submit_mms submit_mms; | |
| struct stk_command_display_mms display_mms; | |
| struct stk_command_activate activate; | |
| }; | |
| void (*destructor)(struct stk_command *command); | |
| }; | |
| /* TERMINAL RESPONSEs defined in TS 102.223 Section 6.8 */ | |
| struct stk_response_generic { | |
| }; | |
| struct stk_answer_text { | |
| char *text; | |
| bool packed; | |
| bool yesno; | |
| /* | |
| * If a "Yes/No" answer was requested in a GET INKEY command, | |
| * .yesno must be TRUE and text should be non-NULL to indicate | |
| * a Yes response or NULL to indicate a No response. | |
| */ | |
| }; | |
| struct stk_ussd_text { | |
| bool has_text; | |
| const uint8_t *text; | |
| int dcs; | |
| int len; | |
| }; | |
| struct stk_channel { | |
| uint8_t id; | |
| enum stk_channel_status status; | |
| }; | |
| struct stk_response_get_inkey { | |
| struct stk_answer_text text; | |
| struct stk_duration duration; | |
| }; | |
| struct stk_response_get_input { | |
| struct stk_answer_text text; | |
| }; | |
| struct stk_response_poll_interval { | |
| struct stk_duration max_interval; | |
| }; | |
| struct stk_response_select_item { | |
| uint8_t item_id; | |
| }; | |
| struct stk_response_set_up_call { | |
| struct stk_common_byte_array cc_requested_action; | |
| struct { | |
| bool cc_modified; | |
| struct stk_result result; | |
| } modified_result; | |
| }; | |
| struct stk_response_local_info { | |
| union { | |
| struct stk_location_info location; | |
| const char *imei; | |
| struct stk_network_measurement_results { | |
| struct stk_common_byte_array nmr; | |
| struct stk_bcch_channel_list bcch_ch_list; | |
| } nmr; | |
| struct sms_scts datetime; | |
| const char *language; | |
| enum stk_battery_state battery_charge; | |
| enum stk_access_technology_type access_technology; | |
| struct stk_timing_advance tadv; | |
| /* Bits[31:24]: manufacturer, bits[23:0]: serial number */ | |
| guint32 esn; | |
| const char *imeisv; | |
| enum stk_network_search_mode { | |
| STK_NETWORK_SEARCH_MODE_MANUAL = 0x00, | |
| STK_NETWORK_SEARCH_MODE_AUTOMATIC = 0x01, | |
| } search_mode; | |
| const char *meid; | |
| struct stk_broadcast_network_information broadcast_network_info; | |
| struct stk_access_technologies { | |
| const enum stk_access_technology_type *techs; | |
| int length; | |
| } access_technologies; | |
| struct { | |
| struct stk_access_technologies access_techs; | |
| struct stk_location_info *locations; | |
| } location_infos; | |
| struct { | |
| struct stk_access_technologies access_techs; | |
| struct stk_network_measurement_results *nmrs; | |
| } nmrs; | |
| }; | |
| }; | |
| struct stk_response_timer_mgmt { | |
| uint8_t id; | |
| struct stk_timer_value value; | |
| }; | |
| struct stk_response_run_at_command { | |
| const char *at_response; | |
| }; | |
| struct stk_response_send_ussd { | |
| struct stk_ussd_text text; | |
| }; | |
| struct stk_response_open_channel { | |
| struct stk_channel channel; | |
| struct stk_bearer_description bearer_desc; | |
| uint16_t buf_size; | |
| }; | |
| struct stk_response_receive_data { | |
| struct stk_common_byte_array rx_data; | |
| uint16_t rx_remaining; | |
| }; | |
| struct stk_response_send_data { | |
| uint16_t tx_avail; | |
| }; | |
| struct stk_response_channel_status { | |
| struct stk_channel channel; | |
| }; | |
| struct stk_response { | |
| uint8_t number; | |
| uint8_t type; | |
| uint8_t qualifier; | |
| enum stk_device_identity_type src; | |
| enum stk_device_identity_type dst; | |
| struct stk_result result; | |
| union { | |
| struct stk_response_generic display_text; | |
| struct stk_response_get_inkey get_inkey; | |
| struct stk_response_get_input get_input; | |
| struct stk_response_generic more_time; | |
| struct stk_response_generic play_tone; | |
| struct stk_response_poll_interval poll_interval; | |
| struct stk_response_generic refresh; | |
| struct stk_response_generic set_up_menu; | |
| struct stk_response_select_item select_item; | |
| struct stk_response_generic send_sms; | |
| struct stk_response_set_up_call set_up_call; | |
| struct stk_response_generic polling_off; | |
| struct stk_response_local_info provide_local_info; | |
| struct stk_response_generic set_up_event_list; | |
| struct stk_response_timer_mgmt timer_mgmt; | |
| struct stk_response_generic set_up_idle_mode_text; | |
| struct stk_response_run_at_command run_at_command; | |
| struct stk_response_generic send_dtmf; | |
| struct stk_response_generic language_notification; | |
| struct stk_response_generic launch_browser; | |
| struct stk_response_send_ussd send_ussd; | |
| struct stk_response_open_channel open_channel; | |
| struct stk_response_receive_data receive_data; | |
| struct stk_response_send_data send_data; | |
| struct stk_response_channel_status channel_status; | |
| }; | |
| void (*destructor)(struct stk_response *response); | |
| }; | |
| /* ENVELOPEs defined in TS 102.223 Section 7 */ | |
| struct stk_envelope_sms_pp_download { | |
| struct stk_address address; | |
| struct sms_deliver message; | |
| }; | |
| struct stk_envelope_cbs_pp_download { | |
| struct cbs page; | |
| }; | |
| struct stk_envelope_menu_selection { | |
| uint8_t item_id; | |
| bool help_request; | |
| }; | |
| struct stk_envelope_sms_mo_control { | |
| struct stk_address sc_address; | |
| struct stk_address dest_address; | |
| struct stk_location_info location; | |
| }; | |
| enum stk_call_control_type { | |
| STK_CC_TYPE_CALL_SETUP, | |
| STK_CC_TYPE_SUPPLEMENTARY_SERVICE, | |
| STK_CC_TYPE_USSD_OP, | |
| STK_CC_TYPE_PDP_CTX_ACTIVATION, | |
| STK_CC_TYPE_EPS_PDN_CONNECTION_ACTIVATION, | |
| }; | |
| /* Used both in the ENVELOPE message to UICC and response from UICC */ | |
| struct stk_envelope_call_control { | |
| enum stk_call_control_type type; | |
| union { | |
| struct stk_address address; | |
| struct stk_address ss_string; | |
| struct stk_ussd_string ussd_string; | |
| struct stk_common_byte_array pdp_ctx_params; | |
| struct stk_common_byte_array eps_pdn_params; | |
| }; | |
| /* | |
| * At least one of the following two fields must be present in a | |
| * response indicating modification of the call. | |
| * In an EVELOPE message, only allowed for a call setup. | |
| */ | |
| struct stk_ccp ccp1; | |
| struct stk_subaddress subaddress; | |
| struct stk_location_info location; | |
| /* Only allowed when ccp1 is present */ | |
| struct stk_ccp ccp2; | |
| char *alpha_id; | |
| /* Only allowed when both ccp1 and ccp2 are present */ | |
| struct stk_bc_repeat bc_repeat; | |
| }; | |
| struct stk_envelope_event_download { | |
| enum stk_event_type type; | |
| union { | |
| struct { | |
| uint8_t transaction_id; | |
| struct stk_address caller_address; | |
| struct stk_subaddress caller_subaddress; | |
| } mt_call; | |
| struct { | |
| uint8_t transaction_id; | |
| } call_connected; | |
| struct { | |
| struct stk_transaction_id transaction_ids; | |
| struct stk_cause cause; | |
| } call_disconnected; | |
| struct { | |
| enum stk_service_state state; | |
| /* Present when state indicated Normal Service */ | |
| struct stk_location_info info; | |
| } location_status; | |
| struct stk_reader_status card_reader_status; | |
| char language_selection[3]; | |
| struct { | |
| enum stk_browser_termination_cause cause; | |
| } browser_termination; | |
| struct { | |
| struct stk_channel channel; | |
| uint16_t channel_data_len; | |
| } data_available; | |
| struct { | |
| struct stk_channel channel; | |
| struct stk_bearer_description bearer_desc; | |
| struct stk_other_address address; | |
| } channel_status; | |
| struct stk_access_technologies access_technology_change; | |
| struct stk_display_parameters display_params_changed; | |
| struct { | |
| /* | |
| * Note the service record subfield is not required, | |
| * only the Technology id and Service id. | |
| */ | |
| struct stk_service_record service_record; | |
| struct stk_remote_entity_address remote_addr; | |
| struct stk_uicc_te_interface transport_level; | |
| /* Only present if transport_level present */ | |
| struct stk_other_address transport_addr; | |
| } local_connection; | |
| enum stk_network_search_mode network_search_mode_change; | |
| struct stk_common_byte_array browsing_status; | |
| struct stk_frames_info frames_information_change; | |
| enum stk_i_wlan_access_status i_wlan_access_status; | |
| struct { | |
| struct stk_location_info location; | |
| struct stk_routing_area_info rai; | |
| struct stk_tracking_area_id tai; | |
| enum stk_access_technology_type access_tech; | |
| enum stk_update_attach_type update_attach; | |
| enum stk_rejection_cause_code cause; | |
| } network_rejection; | |
| }; | |
| }; | |
| struct stk_envelope_timer_expiration { | |
| uint8_t id; | |
| struct stk_timer_value value; | |
| }; | |
| struct stk_envelope_ussd_data_download { | |
| struct stk_ussd_string string; | |
| }; | |
| struct stk_envelope_mms_transfer_status { | |
| struct stk_file transfer_file; | |
| struct stk_mms_id id; | |
| struct stk_mms_transfer_status transfer_status; | |
| }; | |
| struct stk_envelope_mms_notification_download { | |
| struct stk_common_byte_array msg; | |
| bool last; | |
| }; | |
| struct stk_envelope_terminal_apps { | |
| struct stk_registry_application_data *list; | |
| int count; | |
| bool last; | |
| }; | |
| struct stk_envelope { | |
| enum stk_envelope_type type; | |
| enum stk_device_identity_type src; | |
| enum stk_device_identity_type dst; | |
| union { | |
| struct stk_envelope_sms_pp_download sms_pp_download; | |
| struct stk_envelope_cbs_pp_download cbs_pp_download; | |
| struct stk_envelope_menu_selection menu_selection; | |
| struct stk_envelope_call_control call_control; | |
| struct stk_envelope_sms_mo_control sms_mo_control; | |
| struct stk_envelope_event_download event_download; | |
| struct stk_envelope_timer_expiration timer_expiration; | |
| struct stk_envelope_ussd_data_download ussd_data_download; | |
| struct stk_envelope_mms_transfer_status mms_status; | |
| struct stk_envelope_mms_notification_download mms_notification; | |
| struct stk_envelope_terminal_apps terminal_apps; | |
| }; | |
| }; | |
| struct stk_command *stk_command_new_from_pdu(const uint8_t *pdu, | |
| unsigned int len); | |
| void stk_command_free(struct stk_command *command); | |
| const uint8_t *stk_pdu_from_response(const struct stk_response *response, | |
| unsigned int *out_length); | |
| const uint8_t *stk_pdu_from_envelope(const struct stk_envelope *envelope, | |
| unsigned int *out_length); | |
| char *stk_text_to_html(const char *text, const uint16_t *attrs, int num_attrs); | |
| char *stk_image_to_xpm(const uint8_t *img, unsigned int len, | |
| enum stk_img_scheme scheme, const uint8_t *clut, | |
| uint16_t clut_len); |