dom/system/gonk/ril_consts.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* Copyright 2012 Mozilla Foundation and Mozilla contributors
     2  *
     3  * Licensed under the Apache License, Version 2.0 (the "License");
     4  * you may not use this file except in compliance with the License.
     5  * You may obtain a copy of the License at
     6  *
     7  *     http://www.apache.org/licenses/LICENSE-2.0
     8  *
     9  * Unless required by applicable law or agreed to in writing, software
    10  * distributed under the License is distributed on an "AS IS" BASIS,
    11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  * See the License for the specific language governing permissions and
    13  * limitations under the License.
    14  */
    16 // Set to true to debug all RIL layers
    17 this.DEBUG_ALL = false;
    19 // Set individually to debug specific layers
    20 this.DEBUG_WORKER = false || DEBUG_ALL;
    21 this.DEBUG_CONTENT_HELPER = false || DEBUG_ALL;
    22 this.DEBUG_RIL = false || DEBUG_ALL;
    24 this.REQUEST_GET_SIM_STATUS = 1;
    25 this.REQUEST_ENTER_SIM_PIN = 2;
    26 this.REQUEST_ENTER_SIM_PUK = 3;
    27 this.REQUEST_ENTER_SIM_PIN2 = 4;
    28 this.REQUEST_ENTER_SIM_PUK2 = 5;
    29 this.REQUEST_CHANGE_SIM_PIN = 6;
    30 this.REQUEST_CHANGE_SIM_PIN2 = 7;
    31 this.REQUEST_ENTER_NETWORK_DEPERSONALIZATION_CODE = 8;
    32 this.REQUEST_GET_CURRENT_CALLS = 9;
    33 this.REQUEST_DIAL = 10;
    34 this.REQUEST_GET_IMSI = 11;
    35 this.REQUEST_HANGUP = 12;
    36 this.REQUEST_HANGUP_WAITING_OR_BACKGROUND = 13;
    37 this.REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND = 14;
    38 this.REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE = 15;
    39 this.REQUEST_CONFERENCE = 16;
    40 this.REQUEST_UDUB = 17;
    41 this.REQUEST_LAST_CALL_FAIL_CAUSE = 18;
    42 this.REQUEST_SIGNAL_STRENGTH = 19;
    43 this.REQUEST_VOICE_REGISTRATION_STATE = 20;
    44 this.REQUEST_DATA_REGISTRATION_STATE = 21;
    45 this.REQUEST_OPERATOR = 22;
    46 this.REQUEST_RADIO_POWER = 23;
    47 this.REQUEST_DTMF = 24;
    48 this.REQUEST_SEND_SMS = 25;
    49 this.REQUEST_SEND_SMS_EXPECT_MORE = 26;
    50 this.REQUEST_SETUP_DATA_CALL = 27;
    51 this.REQUEST_SIM_IO = 28;
    52 this.REQUEST_SEND_USSD = 29;
    53 this.REQUEST_CANCEL_USSD = 30;
    54 this.REQUEST_GET_CLIR = 31;
    55 this.REQUEST_SET_CLIR = 32;
    56 this.REQUEST_QUERY_CALL_FORWARD_STATUS = 33;
    57 this.REQUEST_SET_CALL_FORWARD = 34;
    58 this.REQUEST_QUERY_CALL_WAITING = 35;
    59 this.REQUEST_SET_CALL_WAITING = 36;
    60 this.REQUEST_SMS_ACKNOWLEDGE = 37;
    61 this.REQUEST_GET_IMEI = 38;
    62 this.REQUEST_GET_IMEISV = 39;
    63 this.REQUEST_ANSWER = 40;
    64 this.REQUEST_DEACTIVATE_DATA_CALL = 41;
    65 this.REQUEST_QUERY_FACILITY_LOCK = 42;
    66 this.REQUEST_SET_FACILITY_LOCK = 43;
    67 this.REQUEST_CHANGE_BARRING_PASSWORD = 44;
    68 this.REQUEST_QUERY_NETWORK_SELECTION_MODE = 45;
    69 this.REQUEST_SET_NETWORK_SELECTION_AUTOMATIC = 46;
    70 this.REQUEST_SET_NETWORK_SELECTION_MANUAL = 47;
    71 this.REQUEST_QUERY_AVAILABLE_NETWORKS = 48;
    72 this.REQUEST_DTMF_START = 49;
    73 this.REQUEST_DTMF_STOP = 50;
    74 this.REQUEST_BASEBAND_VERSION = 51;
    75 this.REQUEST_SEPARATE_CONNECTION = 52;
    76 this.REQUEST_SET_MUTE = 53;
    77 this.REQUEST_GET_MUTE = 54;
    78 this.REQUEST_QUERY_CLIP = 55;
    79 this.REQUEST_LAST_DATA_CALL_FAIL_CAUSE = 56;
    80 this.REQUEST_DATA_CALL_LIST = 57;
    81 this.REQUEST_RESET_RADIO = 58;
    82 this.REQUEST_OEM_HOOK_RAW = 59;
    83 this.REQUEST_OEM_HOOK_STRINGS = 60;
    84 this.REQUEST_SCREEN_STATE = 61;
    85 this.REQUEST_SET_SUPP_SVC_NOTIFICATION = 62;
    86 this.REQUEST_WRITE_SMS_TO_SIM = 63;
    87 this.REQUEST_DELETE_SMS_ON_SIM = 64;
    88 this.REQUEST_SET_BAND_MODE = 65;
    89 this.REQUEST_QUERY_AVAILABLE_BAND_MODE = 66;
    90 this.REQUEST_STK_GET_PROFILE = 67;
    91 this.REQUEST_STK_SET_PROFILE = 68;
    92 this.REQUEST_STK_SEND_ENVELOPE_COMMAND = 69;
    93 this.REQUEST_STK_SEND_TERMINAL_RESPONSE = 70;
    94 this.REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM = 71;
    95 this.REQUEST_EXPLICIT_CALL_TRANSFER = 72;
    96 this.REQUEST_SET_PREFERRED_NETWORK_TYPE = 73;
    97 this.REQUEST_GET_PREFERRED_NETWORK_TYPE = 74;
    98 this.REQUEST_GET_NEIGHBORING_CELL_IDS = 75;
    99 this.REQUEST_SET_LOCATION_UPDATES = 76;
   100 this.REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE = 77;
   101 this.REQUEST_CDMA_SET_ROAMING_PREFERENCE = 78;
   102 this.REQUEST_CDMA_QUERY_ROAMING_PREFERENCE = 79;
   103 this.REQUEST_SET_TTY_MODE = 80;
   104 this.REQUEST_QUERY_TTY_MODE = 81;
   105 this.REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE = 82;
   106 this.REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE = 83;
   107 this.REQUEST_CDMA_FLASH = 84;
   108 this.REQUEST_CDMA_BURST_DTMF = 85;
   109 this.REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY = 86;
   110 this.REQUEST_CDMA_SEND_SMS = 87;
   111 this.REQUEST_CDMA_SMS_ACKNOWLEDGE = 88;
   112 this.REQUEST_GSM_GET_BROADCAST_SMS_CONFIG = 89;
   113 this.REQUEST_GSM_SET_BROADCAST_SMS_CONFIG = 90;
   114 this.REQUEST_GSM_SMS_BROADCAST_ACTIVATION = 91;
   115 this.REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG = 92;
   116 this.REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG = 93;
   117 this.REQUEST_CDMA_SMS_BROADCAST_ACTIVATION = 94;
   118 this.REQUEST_CDMA_SUBSCRIPTION = 95;
   119 this.REQUEST_CDMA_WRITE_SMS_TO_RUIM = 96;
   120 this.REQUEST_CDMA_DELETE_SMS_ON_RUIM = 97;
   121 this.REQUEST_DEVICE_IDENTITY = 98;
   122 this.REQUEST_EXIT_EMERGENCY_CALLBACK_MODE = 99;
   123 this.REQUEST_GET_SMSC_ADDRESS = 100;
   124 this.REQUEST_SET_SMSC_ADDRESS = 101;
   125 this.REQUEST_REPORT_SMS_MEMORY_STATUS = 102;
   126 this.REQUEST_REPORT_STK_SERVICE_IS_RUNNING = 103;
   127 this.REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE = 104;
   128 this.REQUEST_ISIM_AUTHENTICATION = 105;
   129 this.REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU = 106;
   130 this.REQUEST_STK_SEND_ENVELOPE_WITH_STATUS = 107;
   131 this.REQUEST_VOICE_RADIO_TECH = 108;
   132 this.REQUEST_DIAL_EMERGENCY_CALL = 10016;
   134 // Mozilla-specific request codes
   135 this.REQUEST_GET_UNLOCK_RETRY_COUNT = 150;
   137 // Akami/Maguro specific parcel types.
   138 this.REQUEST_IMS_REGISTRATION_STATE = 106;
   139 this.REQUEST_IMS_SEND_SMS = 107;
   140 this.REQUEST_GET_DATA_CALL_PROFILE = 108;
   141 this.REQUEST_SET_UICC_SUBSCRIPTION = 109;
   142 this.REQUEST_SET_DATA_SUBSCRIPTION = 110;
   143 this.REQUEST_GET_UICC_SUBSCRIPTION = 111;
   144 this.REQUEST_GET_DATA_SUBSCRIPTION = 112;
   145 this.REQUEST_SET_SUBSCRIPTION_MODE = 113;
   146 this.REQUEST_SET_TRANSMIT_POWER = 114;
   147 this.REQUEST_SETUP_QOS = 115;
   148 this.REQUEST_RELEASE_QOS = 116;
   149 this.REQUEST_GET_QOS_STATUS = 117;
   150 this.REQUEST_MODIFY_QOS = 118;
   151 this.REQUEST_SUSPEND_QOS = 119;
   152 this.REQUEST_RESUME_QOS = 120;
   154 // Fugu specific parcel types.
   155 this.RIL_REQUEST_GPRS_ATTACH = 5018;
   156 this.RIL_REQUEST_GPRS_DETACH = 5019;
   158 // UICC Secure Access
   159 this.REQUEST_SIM_OPEN_CHANNEL = 121;
   160 this.REQUEST_SIM_CLOSE_CHANNEL = 122;
   161 this.REQUEST_SIM_ACCESS_CHANNEL = 123;
   163 this.RESPONSE_TYPE_SOLICITED = 0;
   164 this.RESPONSE_TYPE_UNSOLICITED = 1;
   166 this.UNSOLICITED_RESPONSE_BASE = 1000;
   167 this.UNSOLICITED_RESPONSE_RADIO_STATE_CHANGED = 1000;
   168 this.UNSOLICITED_RESPONSE_CALL_STATE_CHANGED = 1001;
   169 this.UNSOLICITED_RESPONSE_VOICE_NETWORK_STATE_CHANGED = 1002;
   170 this.UNSOLICITED_RESPONSE_NEW_SMS = 1003;
   171 this.UNSOLICITED_RESPONSE_NEW_SMS_STATUS_REPORT = 1004;
   172 this.UNSOLICITED_RESPONSE_NEW_SMS_ON_SIM = 1005;
   173 this.UNSOLICITED_ON_USSD = 1006;
   174 this.UNSOLICITED_ON_USSD_REQUEST = 1007;
   175 this.UNSOLICITED_NITZ_TIME_RECEIVED = 1008;
   176 this.UNSOLICITED_SIGNAL_STRENGTH = 1009;
   177 this.UNSOLICITED_DATA_CALL_LIST_CHANGED = 1010;
   178 this.UNSOLICITED_SUPP_SVC_NOTIFICATION = 1011;
   179 this.UNSOLICITED_STK_SESSION_END = 1012;
   180 this.UNSOLICITED_STK_PROACTIVE_COMMAND = 1013;
   181 this.UNSOLICITED_STK_EVENT_NOTIFY = 1014;
   182 this.UNSOLICITED_STK_CALL_SETUP = 1015;
   183 this.UNSOLICITED_SIM_SMS_STORAGE_FULL = 1016;
   184 this.UNSOLICITED_SIM_REFRESH = 1017;
   185 this.UNSOLICITED_CALL_RING = 1018;
   186 this.UNSOLICITED_RESPONSE_SIM_STATUS_CHANGED = 1019;
   187 this.UNSOLICITED_RESPONSE_CDMA_NEW_SMS = 1020;
   188 this.UNSOLICITED_RESPONSE_NEW_BROADCAST_SMS = 1021;
   189 this.UNSOLICITED_CDMA_RUIM_SMS_STORAGE_FULL = 1022;
   190 this.UNSOLICITED_RESTRICTED_STATE_CHANGED = 1023;
   191 this.UNSOLICITED_ENTER_EMERGENCY_CALLBACK_MODE = 1024;
   192 this.UNSOLICITED_CDMA_CALL_WAITING = 1025;
   193 this.UNSOLICITED_CDMA_OTA_PROVISION_STATUS = 1026;
   194 this.UNSOLICITED_CDMA_INFO_REC = 1027;
   195 this.UNSOLICITED_OEM_HOOK_RAW = 1028;
   196 this.UNSOLICITED_RINGBACK_TONE = 1029;
   197 this.UNSOLICITED_RESEND_INCALL_MUTE = 1030;
   198 this.UNSOLICITED_CDMA_SUBSCRIPTION_SOURCE_CHANGED = 1031;
   199 this.UNSOLICITED_CDMA_PRL_CHANGED = 1032;
   200 this.UNSOLICITED_EXIT_EMERGENCY_CALLBACK_MODE = 1033;
   201 this.UNSOLICITED_RIL_CONNECTED = 1034;
   203 // Akami/Maguro specific parcels.
   204 this.UNSOLICITED_VOICE_RADIO_TECH_CHANGED = 1034;
   205 this.UNSOLICITED_RESPONSE_IMS_NETWORK_STATE_CHANGED = 1035;
   206 this.UNSOLICITED_RESPONSE_TETHERED_MODE_STATE_CHANGED = 1036;
   207 this.UNSOLICITED_RESPONSE_DATA_NETWORK_STATE_CHANGED = 1037;
   208 this.UNSOLICITED_ON_SS = 1038;
   209 this.UNSOLICITED_STK_CC_ALPHA_NOTIFY = 1039;
   210 this.UNSOLICITED_UICC_SUBSCRIPTION_STATUS_CHANGED = 1040;
   211 this.UNSOLICITED_QOS_STATE_CHANGED_IND = 1041;
   213 this.ERROR_SUCCESS = 0;
   214 this.ERROR_RADIO_NOT_AVAILABLE = 1;
   215 this.ERROR_GENERIC_FAILURE = 2;
   216 this.ERROR_PASSWORD_INCORRECT = 3;
   217 this.ERROR_SIM_PIN2 = 4;
   218 this.ERROR_SIM_PUK2 = 5;
   219 this.ERROR_REQUEST_NOT_SUPPORTED = 6;
   220 this.ERROR_CANCELLED = 7;
   221 this.ERROR_OP_NOT_ALLOWED_DURING_VOICE_CALL = 8;
   222 this.ERROR_OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9;
   223 this.ERROR_SMS_SEND_FAIL_RETRY = 10;
   224 this.ERROR_SIM_ABSENT = 11;
   225 this.ERROR_SUBSCRIPTION_NOT_AVAILABLE = 12;
   226 this.ERROR_MODE_NOT_SUPPORTED = 13;
   227 this.ERROR_FDN_CHECK_FAILURE = 14;
   228 this.ERROR_ILLEGAL_SIM_OR_ME = 15;
   229 this.ERROR_DIAL_MODIFIED_TO_USSD = 17;
   230 this.ERROR_DIAL_MODIFIED_TO_SS = 18;
   231 this.ERROR_DIAL_MODIFIED_TO_DIAL = 19;
   232 this.ERROR_USSD_MODIFIED_TO_DIAL = 20;
   233 this.ERROR_USSD_MODIFIED_TO_SS = 21;
   234 this.ERROR_USSD_MODIFIED_TO_USSD = 22;
   235 this.ERROR_SS_MODIFIED_TO_DIAL = 23;
   236 this.ERROR_SS_MODIFIED_TO_USSD = 24;
   237 this.ERROR_SS_MODIFIED_TO_SS = 25;
   238 this.ERROR_SUBSCRIPTION_NOT_SUPPORTED = 26;
   239 this.ERROR_INVALID_PARAMETER = 27;
   240 this.ERROR_REJECTED_BY_REMOTE = 28;
   242 this.GECKO_ERROR_SUCCESS = null;
   243 this.GECKO_ERROR_RADIO_NOT_AVAILABLE = "RadioNotAvailable";
   244 this.GECKO_ERROR_GENERIC_FAILURE = "GenericFailure";
   245 this.GECKO_ERROR_PASSWORD_INCORRECT = "IncorrectPassword";
   246 this.GECKO_ERROR_SIM_PIN2 = "SimPin2";
   247 this.GECKO_ERROR_SIM_PUK2 = "SimPuk2";
   248 this.GECKO_ERROR_REQUEST_NOT_SUPPORTED = "RequestNotSupported";
   249 this.GECKO_ERROR_CANCELLED = "Cancelled";
   250 this.GECKO_ERROR_ILLEGAL_SIM_OR_ME = "IllegalSIMorME";
   251 this.GECKO_ERROR_OP_NOT_ALLOWED_DURING_VOICE_CALL = "OpNotAllowedDuringVoiceCall";
   252 this.GECKO_ERROR_OP_NOT_ALLOWED_BEFORE_REG_TO_NW = "OpNotAllowedBeforeRegToNw";
   253 this.GECKO_ERROR_SMS_SEND_FAIL_RETRY = "SmsSendFailRetry";
   254 this.GECKO_ERROR_SIM_ABSENT = "SimAbsent";
   255 this.GECKO_ERROR_SUBSCRIPTION_NOT_AVAILABLE = "SubscriptionNotAvailable";
   256 this.GECKO_ERROR_MODE_NOT_SUPPORTED = "ModeNotSupported";
   257 this.GECKO_ERROR_FDN_CHECK_FAILURE = "FdnCheckFailure";
   258 this.GECKO_ERROR_DIAL_MODIFIED_TO_USSD = "DialModifiedToUssd";
   259 this.GECKO_ERROR_DIAL_MODIFIED_TO_SS = "DialModifiedToSs";
   260 this.GECKO_ERROR_DIAL_MODIFIED_TO_DIAL = "DialModifiedToDial";
   261 this.GECKO_ERROR_USSD_MODIFIED_TO_DIAL = "UssdModifiedToDial";
   262 this.GECKO_ERROR_USSD_MODIFIED_TO_SS = "UssdModifiedToSs";
   263 this.GECKO_ERROR_USSD_MODIFIED_TO_USSD = "UssdModifiedToUssd";
   264 this.GECKO_ERROR_SS_MODIFIED_TO_DIAL = "SsModifiedToDial";
   265 this.GECKO_ERROR_SS_MODIFIED_TO_USSD = "SsModifiedToUssd";
   266 this.GECKO_ERROR_SS_MODIFIED_TO_SS = "SsModifiedToSs";
   267 this.GECKO_ERROR_SUBSCRIPTION_NOT_SUPPORTED = "SubscriptionNotSupported";
   268 this.GECKO_ERROR_INVALID_PARAMETER = "InvalidParameter";
   269 this.GECKO_ERROR_REJECTED_BY_REMOTE = "RejectedByRemote";
   271 this.RIL_ERROR_TO_GECKO_ERROR = {};
   272 RIL_ERROR_TO_GECKO_ERROR[ERROR_SUCCESS] = GECKO_ERROR_SUCCESS;
   273 RIL_ERROR_TO_GECKO_ERROR[ERROR_RADIO_NOT_AVAILABLE] = GECKO_ERROR_RADIO_NOT_AVAILABLE;
   274 RIL_ERROR_TO_GECKO_ERROR[ERROR_GENERIC_FAILURE] = GECKO_ERROR_GENERIC_FAILURE;
   275 RIL_ERROR_TO_GECKO_ERROR[ERROR_PASSWORD_INCORRECT] = GECKO_ERROR_PASSWORD_INCORRECT;
   276 RIL_ERROR_TO_GECKO_ERROR[ERROR_SIM_PIN2] = GECKO_ERROR_SIM_PIN2;
   277 RIL_ERROR_TO_GECKO_ERROR[ERROR_SIM_PUK2] = GECKO_ERROR_SIM_PUK2;
   278 RIL_ERROR_TO_GECKO_ERROR[ERROR_REQUEST_NOT_SUPPORTED] = GECKO_ERROR_REQUEST_NOT_SUPPORTED;
   279 RIL_ERROR_TO_GECKO_ERROR[ERROR_CANCELLED] = GECKO_ERROR_CANCELLED;
   280 RIL_ERROR_TO_GECKO_ERROR[ERROR_OP_NOT_ALLOWED_DURING_VOICE_CALL] = GECKO_ERROR_OP_NOT_ALLOWED_DURING_VOICE_CALL;
   281 RIL_ERROR_TO_GECKO_ERROR[ERROR_OP_NOT_ALLOWED_BEFORE_REG_TO_NW] = GECKO_ERROR_OP_NOT_ALLOWED_BEFORE_REG_TO_NW;
   282 RIL_ERROR_TO_GECKO_ERROR[ERROR_SMS_SEND_FAIL_RETRY] = GECKO_ERROR_SMS_SEND_FAIL_RETRY;
   283 RIL_ERROR_TO_GECKO_ERROR[ERROR_SIM_ABSENT] = GECKO_ERROR_SIM_ABSENT;
   284 RIL_ERROR_TO_GECKO_ERROR[ERROR_SUBSCRIPTION_NOT_AVAILABLE] = GECKO_ERROR_SUBSCRIPTION_NOT_AVAILABLE;
   285 RIL_ERROR_TO_GECKO_ERROR[ERROR_MODE_NOT_SUPPORTED] = GECKO_ERROR_MODE_NOT_SUPPORTED;
   286 RIL_ERROR_TO_GECKO_ERROR[ERROR_FDN_CHECK_FAILURE] = GECKO_ERROR_FDN_CHECK_FAILURE;
   287 RIL_ERROR_TO_GECKO_ERROR[ERROR_ILLEGAL_SIM_OR_ME] = GECKO_ERROR_ILLEGAL_SIM_OR_ME;
   288 RIL_ERROR_TO_GECKO_ERROR[ERROR_DIAL_MODIFIED_TO_USSD] = GECKO_ERROR_DIAL_MODIFIED_TO_USSD;
   289 RIL_ERROR_TO_GECKO_ERROR[ERROR_DIAL_MODIFIED_TO_SS] = GECKO_ERROR_DIAL_MODIFIED_TO_SS;
   290 RIL_ERROR_TO_GECKO_ERROR[ERROR_DIAL_MODIFIED_TO_DIAL] = GECKO_ERROR_DIAL_MODIFIED_TO_DIAL;
   291 RIL_ERROR_TO_GECKO_ERROR[ERROR_USSD_MODIFIED_TO_DIAL] = GECKO_ERROR_USSD_MODIFIED_TO_DIAL;
   292 RIL_ERROR_TO_GECKO_ERROR[ERROR_USSD_MODIFIED_TO_SS] = GECKO_ERROR_USSD_MODIFIED_TO_SS;
   293 RIL_ERROR_TO_GECKO_ERROR[ERROR_USSD_MODIFIED_TO_USSD] = GECKO_ERROR_USSD_MODIFIED_TO_USSD;
   294 RIL_ERROR_TO_GECKO_ERROR[ERROR_SS_MODIFIED_TO_DIAL] = GECKO_ERROR_SS_MODIFIED_TO_DIAL;
   295 RIL_ERROR_TO_GECKO_ERROR[ERROR_SS_MODIFIED_TO_USSD] = GECKO_ERROR_SS_MODIFIED_TO_USSD;
   296 RIL_ERROR_TO_GECKO_ERROR[ERROR_SS_MODIFIED_TO_SS] = GECKO_ERROR_SS_MODIFIED_TO_SS;
   297 RIL_ERROR_TO_GECKO_ERROR[ERROR_SUBSCRIPTION_NOT_SUPPORTED] = GECKO_ERROR_SUBSCRIPTION_NOT_SUPPORTED;
   298 RIL_ERROR_TO_GECKO_ERROR[ERROR_INVALID_PARAMETER] = GECKO_ERROR_INVALID_PARAMETER;
   299 RIL_ERROR_TO_GECKO_ERROR[ERROR_REJECTED_BY_REMOTE] = GECKO_ERROR_REJECTED_BY_REMOTE;
   301 // 3GPP 23.040 clause 9.2.3.6 TP-Message-Reference(TP-MR):
   302 // The number of times the MS automatically repeats the SMS-SUBMIT shall be in
   303 // the range 1 to 3 but the precise number is an implementation matter.
   304 this.SMS_RETRY_MAX = 3;
   306 this.RADIO_STATE_OFF = 0;
   307 this.RADIO_STATE_UNAVAILABLE = 1;
   308 this.RADIO_STATE_ON = 10; // RIL v7
   310 // RIL v5 legacy constants:
   311 this.RADIO_STATE_SIM_NOT_READY = 2;
   312 this.RADIO_STATE_SIM_LOCKED_OR_ABSENT = 3;
   313 this.RADIO_STATE_SIM_READY = 4;
   314 this.RADIO_STATE_RUIM_NOT_READY = 5;
   315 this.RADIO_STATE_RUIM_READY = 6;
   316 this.RADIO_STATE_RUIM_LOCKED_OR_ABSENT = 7;
   317 this.RADIO_STATE_NV_NOT_READY = 8;
   318 this.RADIO_STATE_NV_READY = 9;
   320 this.CARD_STATE_ABSENT = 0;
   321 this.CARD_STATE_PRESENT = 1;
   322 this.CARD_STATE_ERROR = 2;
   324 this.CARD_PERSOSUBSTATE_UNKNOWN = 0;
   325 this.CARD_PERSOSUBSTATE_IN_PROGRESS = 1;
   326 this.CARD_PERSOSUBSTATE_READY = 2;
   327 this.CARD_PERSOSUBSTATE_SIM_NETWORK = 3;
   328 this.CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET = 4;
   329 this.CARD_PERSOSUBSTATE_SIM_CORPORATE = 5;
   330 this.CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER = 6;
   331 this.CARD_PERSOSUBSTATE_SIM_SIM = 7;
   332 this.CARD_PERSOSUBSTATE_SIM_NETWORK_PUK = 8;
   333 this.CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK = 9;
   334 this.CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK = 10;
   335 this.CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK = 11;
   336 this.CARD_PERSOSUBSTATE_SIM_SIM_PUK = 12;
   337 this.CARD_PERSOSUBSTATE_RUIM_NETWORK1 = 13;
   338 this.CARD_PERSOSUBSTATE_RUIM_NETWORK2 = 14;
   339 this.CARD_PERSOSUBSTATE_RUIM_HRPD = 15;
   340 this.CARD_PERSOSUBSTATE_RUIM_CORPORATE = 16;
   341 this.CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER = 17;
   342 this.CARD_PERSOSUBSTATE_RUIM_RUIM = 18;
   343 this.CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK = 19;
   344 this.CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK = 20;
   345 this.CARD_PERSOSUBSTATE_RUIM_HRPD_PUK = 21;
   346 this.CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK = 22;
   347 this.CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK = 23;
   348 this.CARD_PERSOSUBSTATE_RUIM_RUIM_PUK = 24;
   350 this.CARD_APPSTATE_ILLEGAL = -1;
   351 this.CARD_APPSTATE_UNKNOWN = 0;
   352 this.CARD_APPSTATE_DETECTED = 1;
   353 this.CARD_APPSTATE_PIN = 2; // If PIN1 or UPin is required.
   354 this.CARD_APPSTATE_PUK = 3; // If PUK1 or Puk for UPin is required.
   355 this.CARD_APPSTATE_SUBSCRIPTION_PERSO = 4; // perso_substate should be looked
   356                                             // at when app_state is assigned
   357                                             // to this value.
   358 this.CARD_APPSTATE_READY = 5;
   360 this.CARD_PINSTATE_UNKNOWN = 0;
   361 this.CARD_PINSTATE_ENABLED_NOT_VERIFIED = 1;
   362 this.CARD_PINSTATE_ENABLED_VERIFIED = 2;
   363 this.CARD_PINSTATE_DISABLED = 3;
   364 this.CARD_PINSTATE_ENABLED_BLOCKED = 4;
   365 this.CARD_PINSTATE_ENABLED_PERM_BLOCKED = 5;
   367 this.CARD_APPTYPE_UNKNOWN = 0;
   368 this.CARD_APPTYPE_SIM = 1;
   369 this.CARD_APPTYPE_USIM = 2;
   370 this.CARD_APPTYPE_RUIM = 3;
   371 this.CARD_APPTYPE_CSIM = 4;
   372 this.CARD_APPTYPE_ISIM = 5;
   374 this.CARD_MAX_APPS = 8;
   376 this.GECKO_CARD_TYPE = [
   377   null,
   378   "sim",
   379   "usim",
   380   "ruim",
   381   "csim",
   382   "isim"
   383 ];
   385 this.NETWORK_STATE_UNKNOWN = "unknown";
   386 this.NETWORK_STATE_AVAILABLE = "available";
   387 this.NETWORK_STATE_CONNECTED = "connected";
   388 this.NETWORK_STATE_FORBIDDEN = "forbidden";
   390 this.NETWORK_SELECTION_MODE_AUTOMATIC = 0;
   391 this.NETWORK_SELECTION_MODE_MANUAL = 1;
   393 this.NETWORK_INFO_VOICE_REGISTRATION_STATE = "voiceRegistrationState";
   394 this.NETWORK_INFO_DATA_REGISTRATION_STATE = "dataRegistrationState";
   395 this.NETWORK_INFO_OPERATOR = "operator";
   396 this.NETWORK_INFO_NETWORK_SELECTION_MODE = "networkSelectionMode";
   397 this.NETWORK_INFO_SIGNAL = "signal";
   398 this.NETWORK_INFO_MESSAGE_TYPES = [
   399   NETWORK_INFO_VOICE_REGISTRATION_STATE,
   400   NETWORK_INFO_DATA_REGISTRATION_STATE,
   401   NETWORK_INFO_OPERATOR,
   402   NETWORK_INFO_NETWORK_SELECTION_MODE,
   403   NETWORK_INFO_SIGNAL
   404 ];
   406 this.GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM = "wcdma/gsm";
   407 this.GECKO_PREFERRED_NETWORK_TYPE_GSM_ONLY = "gsm";
   408 this.GECKO_PREFERRED_NETWORK_TYPE_WCDMA_ONLY = "wcdma";
   409 this.GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM_AUTO = "wcdma/gsm-auto";
   410 this.GECKO_PREFERRED_NETWORK_TYPE_CDMA_EVDO = "cdma/evdo";
   411 this.GECKO_PREFERRED_NETWORK_TYPE_CDMA_ONLY = "cdma";
   412 this.GECKO_PREFERRED_NETWORK_TYPE_EVDO_ONLY = "evdo";
   413 this.GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM_CDMA_EVDO = "wcdma/gsm/cdma/evdo";
   414 this.GECKO_PREFERRED_NETWORK_TYPE_LTE_CDMA_EVDO = "lte/cdma/evdo";
   415 this.GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM = "lte/wcdma/gsm";
   416 this.GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM_CDMA_EVDO = "lte/wcdma/gsm/cdma/evdo";
   417 this.GECKO_PREFERRED_NETWORK_TYPE_LTE_ONLY = "lte";
   418 this.RIL_PREFERRED_NETWORK_TYPE_TO_GECKO = [
   419   GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM,
   420   GECKO_PREFERRED_NETWORK_TYPE_GSM_ONLY,
   421   GECKO_PREFERRED_NETWORK_TYPE_WCDMA_ONLY,
   422   GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM_AUTO,
   423   GECKO_PREFERRED_NETWORK_TYPE_CDMA_EVDO,
   424   GECKO_PREFERRED_NETWORK_TYPE_CDMA_ONLY,
   425   GECKO_PREFERRED_NETWORK_TYPE_EVDO_ONLY,
   426   GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM_CDMA_EVDO,
   427   GECKO_PREFERRED_NETWORK_TYPE_LTE_CDMA_EVDO,
   428   GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM,
   429   GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM_CDMA_EVDO,
   430   GECKO_PREFERRED_NETWORK_TYPE_LTE_ONLY
   431 ];
   433 this.GECKO_SUPPORTED_NETWORK_TYPES_DEFAULT = "gsm,wcdma";
   434 this.GECKO_SUPPORTED_NETWORK_TYPES = [
   435   "gsm",
   436   "wcdma",
   437   "cdma",
   438   "evdo",
   439   "lte"
   440 ];
   442 // Network registration states. See TS 27.007 7.2
   443 this.NETWORK_CREG_STATE_NOT_SEARCHING = 0;
   444 this.NETWORK_CREG_STATE_REGISTERED_HOME = 1;
   445 this.NETWORK_CREG_STATE_SEARCHING = 2;
   446 this.NETWORK_CREG_STATE_DENIED = 3;
   447 this.NETWORK_CREG_STATE_UNKNOWN = 4;
   448 this.NETWORK_CREG_STATE_REGISTERED_ROAMING = 5;
   449 this.NETWORK_CREG_STATE_NOT_SEARCHING_EMERGENCY_CALLS = 10;
   450 this.NETWORK_CREG_STATE_SEARCHING_EMERGENCY_CALLS = 12;
   451 this.NETWORK_CREG_STATE_DENIED_EMERGENCY_CALLS = 13;
   452 this.NETWORK_CREG_STATE_UNKNOWN_EMERGENCY_CALLS = 14;
   454 this.NETWORK_CREG_TECH_UNKNOWN = 0;
   455 this.NETWORK_CREG_TECH_GPRS = 1;
   456 this.NETWORK_CREG_TECH_EDGE = 2;
   457 this.NETWORK_CREG_TECH_UMTS = 3;
   458 this.NETWORK_CREG_TECH_IS95A = 4;
   459 this.NETWORK_CREG_TECH_IS95B = 5;
   460 this.NETWORK_CREG_TECH_1XRTT = 6;
   461 this.NETWORK_CREG_TECH_EVDO0 = 7;
   462 this.NETWORK_CREG_TECH_EVDOA = 8;
   463 this.NETWORK_CREG_TECH_HSDPA = 9;
   464 this.NETWORK_CREG_TECH_HSUPA = 10;
   465 this.NETWORK_CREG_TECH_HSPA = 11;
   466 this.NETWORK_CREG_TECH_EVDOB = 12;
   467 this.NETWORK_CREG_TECH_EHRPD = 13;
   468 this.NETWORK_CREG_TECH_LTE = 14;
   469 this.NETWORK_CREG_TECH_HSPAP = 15;
   470 this.NETWORK_CREG_TECH_GSM = 16;
   472 this.CALL_STATE_UNKNOWN = -1;
   473 this.CALL_STATE_ACTIVE = 0;
   474 this.CALL_STATE_HOLDING = 1;
   475 this.CALL_STATE_DIALING = 2;
   476 this.CALL_STATE_ALERTING = 3;
   477 this.CALL_STATE_INCOMING = 4;
   478 this.CALL_STATE_WAITING = 5;
   480 this.TOA_INTERNATIONAL = 0x91;
   481 this.TOA_UNKNOWN = 0x81;
   483 this.CALL_PRESENTATION_ALLOWED = 0;
   484 this.CALL_PRESENTATION_RESTRICTED = 1;
   485 this.CALL_PRESENTATION_UNKNOWN = 2;
   486 this.CALL_PRESENTATION_PAYPHONE = 3;
   488 // Call forwarding actions, see TS 27.007 7.11 "mode"
   489 this.CALL_FORWARD_ACTION_QUERY_STATUS = 2;
   491 // ICC commands, see TS 27.007 +CRSM commands
   492 this.ICC_COMMAND_SEEK = 0xa2;
   493 this.ICC_COMMAND_READ_BINARY = 0xb0;
   494 this.ICC_COMMAND_READ_RECORD = 0xb2;
   495 this.ICC_COMMAND_GET_RESPONSE = 0xc0;
   496 this.ICC_COMMAND_UPDATE_BINARY = 0xd6;
   497 this.ICC_COMMAND_UPDATE_RECORD = 0xdc;
   499 // ICC constants, GSM SIM file ids from TS 51.011
   500 this.ICC_EF_ICCID  = 0x2fe2;
   501 this.ICC_EF_IMG    = 0x4f20;
   502 this.ICC_EF_PBR    = 0x4f30;
   503 this.ICC_EF_PLMNsel = 0x6f30; // PLMN for SIM
   504 this.ICC_EF_SST    = 0x6f38;
   505 this.ICC_EF_UST    = 0x6f38; // For USIM
   506 this.ICC_EF_ADN    = 0x6f3a;
   507 this.ICC_EF_FDN    = 0x6f3b;
   508 this.ICC_EF_SMS    = 0x6f3c;
   509 this.ICC_EF_MSISDN = 0x6f40;
   510 this.ICC_EF_CBMI   = 0x6f45;
   511 this.ICC_EF_SPN    = 0x6f46;
   512 this.ICC_EF_CBMID  = 0x6f48;
   513 this.ICC_EF_SDN    = 0x6f49;
   514 this.ICC_EF_EXT1   = 0x6f4a;
   515 this.ICC_EF_EXT2   = 0x6f4b;
   516 this.ICC_EF_EXT3   = 0x6f4c;
   517 this.ICC_EF_CBMIR  = 0x6f50;
   518 this.ICC_EF_AD     = 0x6fad;
   519 this.ICC_EF_PHASE  = 0x6fae;
   520 this.ICC_EF_PNN    = 0x6fc5;
   521 this.ICC_EF_OPL    = 0x6fc6;
   522 this.ICC_EF_MBDN   = 0x6fc7;
   523 this.ICC_EF_EXT6   = 0x6fc8;   // Ext record for EF[MBDN]
   524 this.ICC_EF_MBI    = 0x6fc9;
   525 this.ICC_EF_MWIS   = 0x6fca;
   526 this.ICC_EF_CFIS   = 0x6fcb;
   527 this.ICC_EF_SPDI   = 0x6fcd;
   529 // CSIM files
   530 this.ICC_EF_CSIM_IMSI_M   = 0x6f22;
   531 this.ICC_EF_CSIM_CDMAHOME = 0x6f28;
   532 this.ICC_EF_CSIM_CST      = 0x6f32; // CDMA Service table
   533 this.ICC_EF_CSIM_SPN      = 0x6f41;
   535 this.ICC_PHASE_1 = 0x00;
   536 this.ICC_PHASE_2 = 0x02;
   537 this.ICC_PHASE_2_PROFILE_DOWNLOAD_REQUIRED = 0x03;
   539 // Types of files  TS 11.11 9.3
   540 this.TYPE_RFU = 0;
   541 this.TYPE_MF  = 1;
   542 this.TYPE_DF  = 2;
   543 this.TYPE_EF  = 4;
   545 this.RESPONSE_DATA_FILE_SIZE = 2;
   546 this.RESPONSE_DATA_FILE_ID_1 = 4;
   547 this.RESPONSE_DATA_FILE_ID_2 = 5;
   548 this.RESPONSE_DATA_FILE_TYPE = 6;
   549 this.RESPONSE_DATA_RFU_3 = 7;
   550 this.RESPONSE_DATA_ACCESS_CONDITION_1 = 8;
   551 this.RESPONSE_DATA_ACCESS_CONDITION_2 = 9;
   552 this.RESPONSE_DATA_ACCESS_CONDITION_3 = 10;
   553 this.RESPONSE_DATA_FILE_STATUS = 11;
   554 this.RESPONSE_DATA_LENGTH = 12;
   555 this.RESPONSE_DATA_STRUCTURE = 13;
   556 this.RESPONSE_DATA_RECORD_LENGTH = 14;
   558 // Types of files  TS 11.11 9.3
   559 this.EF_TYPE_TRANSPARENT = 0;
   560 this.EF_TYPE_LINEAR_FIXED = 1;
   561 this.EF_TYPE_CYCLIC = 3;
   563 // TS 102.221 11.1.1.4.3 Table 11.5: File descriptor byte.
   564 this.UICC_EF_STRUCTURE = {};
   565 this.UICC_EF_STRUCTURE[this.EF_TYPE_TRANSPARENT]= 1;
   566 this.UICC_EF_STRUCTURE[this.EF_TYPE_LINEAR_FIXED]= 2;
   567 this.UICC_EF_STRUCTURE[this.EF_TYPE_CYCLIC]= 6;
   569 // Status code of EFsms
   570 // see 3GPP TS 51.011 clause 10.5.3
   571 this.EFSMS_STATUS_FREE       = 0x00;
   572 this.EFSMS_STATUS_READ       = 0x01;
   573 this.EFSMS_STATUS_TO_BE_READ = 0x03;
   574 this.EFSMS_STATUS_TO_BE_SENT = 0x07;
   576 // Total size of ADN footer(the size of Alpha identifier excluded).
   577 // See TS 151.011 clause 10.5.1 EF_ADN.
   578 this.ADN_FOOTER_SIZE_BYTES = 14;
   579 // Maximum size of BCD numbers in ADN.
   580 // See TS 151.011 clause 10.5.1 EF_ADN, 'Length of BCD number/SSC contents'.
   581 this.ADN_MAX_BCD_NUMBER_BYTES = 11;
   582 // Maximum digits of the Dialling Number in ADN.
   583 // See TS 151.011 clause 10.5.1 EF_ADN, 'Dialling Number'.
   584 this.ADN_MAX_NUMBER_DIGITS = 20;
   586 // READ_RECORD mode,  TS 102.221
   587 this.READ_RECORD_ABSOLUTE_MODE = 4;
   589 // GET_RESPONSE mandatory response size for EF, see TS 51.011 clause 9,
   590 // 'Response data in case of an EF.'
   591 this.GET_RESPONSE_EF_SIZE_BYTES = 15;
   593 // EF path
   594 this.EF_PATH_MF_SIM       = "3f00";
   595 this.EF_PATH_DF_PHONEBOOK = "5f3a";
   596 this.EF_PATH_DF_TELECOM   = "7f10";
   597 this.EF_PATH_DF_GSM       = "7f20";
   598 this.EF_PATH_DF_CDMA      = "7f25";
   599 this.EF_PATH_ADF_USIM     = "7fff";
   601 // Status code of sw1 for ICC I/O,
   602 // see GSM11.11 and TS 51.011 clause 9.4, and ISO 7816-4
   603 this.ICC_STATUS_NORMAL_ENDING = 0x90;
   604 this.ICC_STATUS_NORMAL_ENDING_WITH_EXTRA = 0x91;
   605 this.ICC_STATUS_SAT_BUSY = 0x93;
   606 this.ICC_STATUS_WITH_SIM_DATA = 0x9e;
   607 this.ICC_STATUS_WITH_RESPONSE_DATA = 0x9f;
   608 this.ICC_STATUS_ERROR_WRONG_LENGTH = 0x67;
   609 this.ICC_STATUS_ERROR_COMMAND_NOT_ALLOWED = 0x69;
   610 this.ICC_STATUS_ERROR_WRONG_PARAMETERS = 0x6a;
   612 // ICC call barring facility.
   613 // TS 27.007, clause 7.4, +CLCK
   614 this.ICC_CB_FACILITY_SIM = "SC";
   615 this.ICC_CB_FACILITY_FDN = "FD";
   616 this.ICC_CB_FACILITY_BAOC = "AO";
   617 this.ICC_CB_FACILITY_BAOIC = "OI";
   618 this.ICC_CB_FACILITY_BAOICxH = "OX";
   619 this.ICC_CB_FACILITY_BAIC = "AI";
   620 this.ICC_CB_FACILITY_BAICr = "IR";
   621 this.ICC_CB_FACILITY_BA_ALL = "AB";
   622 this.ICC_CB_FACILITY_BA_MO = "AG";
   623 this.ICC_CB_FACILITY_BA_MT = "AC";
   625 // ICC service class
   626 // TS 27.007, clause 7.4, +CLCK
   627 this.ICC_SERVICE_CLASS_NONE = 0; // no user input
   628 this.ICC_SERVICE_CLASS_VOICE = (1 << 0);
   629 this.ICC_SERVICE_CLASS_DATA = (1 << 1);
   630 this.ICC_SERVICE_CLASS_FAX = (1 << 2);
   631 this.ICC_SERVICE_CLASS_SMS = (1 << 3);
   632 this.ICC_SERVICE_CLASS_DATA_SYNC = (1 << 4);
   633 this.ICC_SERVICE_CLASS_DATA_ASYNC = (1 << 5);
   634 this.ICC_SERVICE_CLASS_PACKET = (1 << 6);
   635 this.ICC_SERVICE_CLASS_PAD = (1 << 7);
   636 this.ICC_SERVICE_CLASS_MAX = (1 << 7); // Max ICC_SERVICE_CLASS value
   638 // ICC lock-selection codes
   639 // TS 27.007, clause 8.65, +CPINR
   640 this.ICC_SEL_CODE_SIM_PIN = "SIM PIN";
   641 this.ICC_SEL_CODE_SIM_PUK = "SIM PUK";
   642 this.ICC_SEL_CODE_PH_SIM_PIN = "PH-SIM PIN";
   643 this.ICC_SEL_CODE_PH_FSIM_PIN = "PH-FSIM PIN";
   644 this.ICC_SEL_CODE_PH_FSIM_PUK = "PH-FSIM PUK";
   645 this.ICC_SEL_CODE_SIM_PIN2 = "SIM PIN2";
   646 this.ICC_SEL_CODE_SIM_PUK2 = "SIM PUK2";
   647 this.ICC_SEL_CODE_PH_NET_PIN = "PH-NET PIN";
   648 this.ICC_SEL_CODE_PH_NET_PUK = "PH-NET PUK";
   649 this.ICC_SEL_CODE_PH_NETSUB_PIN = "PH-NETSUB PIN";
   650 this.ICC_SEL_CODE_PH_NETSUB_PUK = "PH-NETSUB PUK";
   651 this.ICC_SEL_CODE_PH_SP_PIN = "PH-SP PIN";
   652 this.ICC_SEL_CODE_PH_SP_PUK = "PH-SP PUK";
   653 this.ICC_SEL_CODE_PH_CORP_PIN = "PH-CORP PIN";
   654 this.ICC_SEL_CODE_PH_CORP_PUK = "PH-CORP PUK";
   656 this.ICC_USIM_TYPE1_TAG   = 0xa8;
   657 this.ICC_USIM_TYPE2_TAG   = 0xa9;
   658 this.ICC_USIM_TYPE3_TAG   = 0xaa;
   659 this.ICC_USIM_EFADN_TAG   = 0xc0;
   660 this.ICC_USIM_EFIAP_TAG   = 0xc1;
   661 this.ICC_USIM_EFEXT1_TAG  = 0xc2;
   662 this.ICC_USIM_EFSNE_TAG   = 0xc3;
   663 this.ICC_USIM_EFANR_TAG   = 0xc4;
   664 this.ICC_USIM_EFPBC_TAG   = 0xc5;
   665 this.ICC_USIM_EFGRP_TAG   = 0xc6;
   666 this.ICC_USIM_EFAAS_TAG   = 0xc7;
   667 this.ICC_USIM_EFGSD_TAG   = 0xc8;
   668 this.ICC_USIM_EFUID_TAG   = 0xc9;
   669 this.ICC_USIM_EFEMAIL_TAG = 0xca;
   670 this.ICC_USIM_EFCCP1_TAG  = 0xcb;
   672 this.USIM_PBR_ANR = "anr";
   673 this.USIM_PBR_ANR0 = "anr0";
   674 this.USIM_PBR_EMAIL = "email";
   676 // Current supported fields. Adding more fields to read will increasing I/O
   677 // time dramatically, do check the performance is acceptable when you add
   678 // more fields.
   679 this.USIM_PBR_FIELDS = [USIM_PBR_EMAIL, USIM_PBR_ANR0];
   681 this.USIM_TAG_NAME = {};
   682 this.USIM_TAG_NAME[ICC_USIM_EFADN_TAG] = "adn";
   683 this.USIM_TAG_NAME[ICC_USIM_EFIAP_TAG] ="iap";
   684 this.USIM_TAG_NAME[ICC_USIM_EFEXT1_TAG] = "ext1";
   685 this.USIM_TAG_NAME[ICC_USIM_EFSNE_TAG] = "sne";
   686 this.USIM_TAG_NAME[ICC_USIM_EFANR_TAG] = "anr";
   687 this.USIM_TAG_NAME[ICC_USIM_EFPBC_TAG] = "pbc";
   688 this.USIM_TAG_NAME[ICC_USIM_EFGRP_TAG] = "grp";
   689 this.USIM_TAG_NAME[ICC_USIM_EFAAS_TAG] = "aas";
   690 this.USIM_TAG_NAME[ICC_USIM_EFGSD_TAG] = "gsd";
   691 this.USIM_TAG_NAME[ICC_USIM_EFUID_TAG] = "uid";
   692 this.USIM_TAG_NAME[ICC_USIM_EFEMAIL_TAG] = "email";
   693 this.USIM_TAG_NAME[ICC_USIM_EFCCP1_TAG] = "ccp1";
   695 // Error message for ICC contact.
   696 this.CONTACT_ERR_REQUEST_NOT_SUPPORTED = GECKO_ERROR_REQUEST_NOT_SUPPORTED;
   697 this.CONTACT_ERR_CONTACT_TYPE_NOT_SUPPORTED = "ContactTypeNotSupported";
   698 this.CONTACT_ERR_FIELD_NOT_SUPPORTED = "FieldNotSupported";
   699 this.CONTACT_ERR_NO_FREE_RECORD_FOUND = "NoFreeRecordFound";
   700 this.CONTACT_ERR_CANNOT_ACCESS_PHONEBOOK = "CannotAccessPhoneBook";
   702 // CDMA IMSI_M's byte const.
   703 // 3GPP2 C.S0065 Sec. 5.2.2
   704 this.CSIM_IMSI_M_MIN2_BYTE = 1;
   705 this.CSIM_IMSI_M_MIN1_BYTE = 3;
   706 this.CSIM_IMSI_M_MNC_BYTE = 6;
   707 this.CSIM_IMSI_M_PROGRAMMED_BYTE = 7;
   708 this.CSIM_IMSI_M_MCC_BYTE = 8;
   710 /**
   711  * Tags for Ber Tlv.
   712  * See 3GPP TS 101 220 clause 7.2 - Assigned TLV tag values.
   713  */
   714 this.BER_UNKNOWN_TAG = 0x00;
   715 this.BER_FCP_TEMPLATE_TAG = 0x62;
   716 this.BER_FCP_FILE_SIZE_DATA_TAG = 0x80;
   717 this.BER_FCP_FILE_SIZE_TOTAL_TAG = 0x81;
   718 this.BER_FCP_FILE_DESCRIPTOR_TAG = 0x82;
   719 this.BER_FCP_FILE_IDENTIFIER_TAG = 0x83;
   720 this.BER_FCP_DF_NAME_TAG = 0x84; // AID.
   721 this.BER_FCP_PROPRIETARY_PRIMITIVE_TAG = 0x85;
   722 this.BER_FCP_SFI_SUPPORT_TAG = 0x88;
   723 this.BER_FCP_LIFE_CYCLE_STATUS_TAG = 0x8a;
   724 this.BER_FCP_SA_REFERENCE_FORMAT_TAG = 0x8b; // Security Attribute - Reference Format.
   725 this.BER_FCP_SA_COMPACT_FORMAT_TAG = 0x8c; // Security Attribute - Compact Format.
   726 this.BER_FCP_SAT_EXPANDED_FORMAT_TAG = 0xab; // Security Attribute Template - Expanded Format.
   727 this.BER_FCP_PROPRIETARY_TEMPLATE_TAG = 0xa5;
   728 this.BER_FCP_PIN_STATUS_DATA_OBJECTS_TAG = 0xc6;
   729 this.BER_PROACTIVE_COMMAND_TAG = 0xd0;
   730 this.BER_SMS_PP_DOWNLOAD_TAG = 0xd1;
   731 this.BER_MENU_SELECTION_TAG = 0xd3;
   732 this.BER_EVENT_DOWNLOAD_TAG = 0xd6;
   733 this.BER_TIMER_EXPIRATION_TAG = 0xd7;
   735 // Flags in Comprehension TLV.
   736 this.COMPREHENSIONTLV_FLAG_CR = 0x80;  // Comprehension required.
   738 // Tags for Comprehension TLV.
   739 this.COMPREHENSIONTLV_TAG_COMMAND_DETAILS = 0x01;
   740 this.COMPREHENSIONTLV_TAG_DEVICE_ID = 0x02;
   741 this.COMPREHENSIONTLV_TAG_RESULT = 0x03;
   742 this.COMPREHENSIONTLV_TAG_DURATION = 0x04;
   743 this.COMPREHENSIONTLV_TAG_ALPHA_ID = 0x05;
   744 this.COMPREHENSIONTLV_TAG_ADDRESS = 0x06;
   745 this.COMPREHENSIONTLV_TAG_SUBADDRESS = 0x08;
   746 this.COMPREHENSIONTLV_TAG_SMS_TPDU = 0x0b;
   747 this.COMPREHENSIONTLV_TAG_TEXT_STRING = 0x0d;
   748 this.COMPREHENSIONTLV_TAG_TONE = 0x0e;
   749 this.COMPREHENSIONTLV_TAG_ITEM = 0x0f;
   750 this.COMPREHENSIONTLV_TAG_ITEM_ID = 0x10;
   751 this.COMPREHENSIONTLV_TAG_RESPONSE_LENGTH = 0x11;
   752 this.COMPREHENSIONTLV_TAG_FILE_LIST = 0x12;
   753 this.COMPREHENSIONTLV_TAG_LOCATION_INFO = 0x13;
   754 this.COMPREHENSIONTLV_TAG_IMEI = 0x14;
   755 this.COMPREHENSIONTLV_TAG_HELP_REQUEST = 0x15;
   756 this.COMPREHENSIONTLV_TAG_NMR = 0x16;
   757 this.COMPREHENSIONTLV_TAG_DEFAULT_TEXT = 0x17;
   758 this.COMPREHENSIONTLV_TAG_NEXT_ACTION_IND = 0x18;
   759 this.COMPREHENSIONTLV_TAG_CAUSE = 0x1a;
   760 this.COMPREHENSIONTLV_TAG_LOCATION_STATUS = 0x1b;
   761 this.COMPREHENSIONTLV_TAG_TRANSACTION_ID = 0x1c;
   762 this.COMPREHENSIONTLV_TAG_EVENT_LIST = 0x19;
   763 this.COMPREHENSIONTLV_TAG_ICON_ID = 0x1e;
   764 this.COMPREHENSIONTLV_TAG_ICON_ID_LIST = 0x1f;
   765 this.COMPREHENSIONTLV_TAG_TIMER_IDENTIFIER = 0x24;
   766 this.COMPREHENSIONTLV_TAG_TIMER_VALUE = 0x25;
   767 this.COMPREHENSIONTLV_TAG_DATE_TIME_ZONE = 0x26;
   768 this.COMPREHENSIONTLV_TAG_IMMEDIATE_RESPONSE = 0x2b;
   769 this.COMPREHENSIONTLV_TAG_LANGUAGE = 0x2d;
   770 this.COMPREHENSIONTLV_TAG_URL = 0x31;
   771 this.COMPREHENSIONTLV_TAG_BROWSER_TERMINATION_CAUSE = 0x34;
   772 this.COMPREHENSIONTLV_TAG_ACCESS_TECH = 0x3f;
   773 this.COMPREHENSIONTLV_TAG_SERVICE_RECORD = 0x41;
   774 this.COMPREHENSIONTLV_TAG_IMEISV = 0x62;
   775 this.COMPREHENSIONTLV_TAG_BATTERY_STATE = 0x63;
   776 this.COMPREHENSIONTLV_TAG_NETWORK_SEARCH_MODE = 0x65;
   777 this.COMPREHENSIONTLV_TAG_MEID = 0x6d;
   778 this.COMPREHENSIONTLV_TAG_BROADCAST_NETWORK_INFO = 0x7a;
   780 // Tags for Service Provider Display Information TLV
   781 this.SPDI_TAG_SPDI = 0xa3;
   782 this.SPDI_TAG_PLMN_LIST = 0x80;
   784 // MM INFORMATION message content IEIs
   785 // See 3GPP TS 24.008 table 9.2.18
   786 this.PNN_IEI_FULL_NETWORK_NAME = 0x43;
   787 this.PNN_IEI_SHORT_NETWORK_NAME = 0x45;
   789 // Device identifiers, see TS 11.14, clause 12.7
   790 this.STK_DEVICE_ID_KEYPAD = 0x01;
   791 this.STK_DEVICE_ID_DISPLAY = 0x02;
   792 this.STK_DEVICE_ID_EARPIECE = 0x03;
   793 this.STK_DEVICE_ID_SIM = 0x81;
   794 this.STK_DEVICE_ID_ME = 0x82;
   795 this.STK_DEVICE_ID_NETWORK = 0x83;
   797 // STK Proactive commands.
   798 this.STK_CMD_REFRESH = 0x01;
   799 this.STK_CMD_MORE_TIME = 0x02;
   800 this.STK_CMD_POLL_INTERVAL = 0x03;
   801 this.STK_CMD_POLL_OFF = 0x04;
   802 this.STK_CMD_SET_UP_EVENT_LIST = 0x05;
   803 this.STK_CMD_SET_UP_CALL = 0x10;
   804 this.STK_CMD_SEND_SS = 0x11;
   805 this.STK_CMD_SEND_USSD = 0x12;
   806 this.STK_CMD_SEND_SMS = 0x13;
   807 this.STK_CMD_SEND_DTMF = 0x14;
   808 this.STK_CMD_LAUNCH_BROWSER = 0x15;
   809 this.STK_CMD_PLAY_TONE = 0x20;
   810 this.STK_CMD_DISPLAY_TEXT = 0x21;
   811 this.STK_CMD_GET_INKEY = 0x22;
   812 this.STK_CMD_GET_INPUT = 0x23;
   813 this.STK_CMD_SELECT_ITEM = 0x24;
   814 this.STK_CMD_SET_UP_MENU = 0x25;
   815 this.STK_CMD_PROVIDE_LOCAL_INFO = 0x26;
   816 this.STK_CMD_TIMER_MANAGEMENT = 0x27;
   817 this.STK_CMD_SET_UP_IDLE_MODE_TEXT = 0x28;
   818 this.STK_CMD_OPEN_CHANNEL = 0x40;
   819 this.STK_CMD_CLOSE_CHANNEL = 0x41;
   820 this.STK_CMD_RECEIVE_DATA = 0x42;
   821 this.STK_CMD_SEND_DATA = 0x43;
   823 // STK Result code.
   824 // TS 11.14, clause 12.12
   826 // Results '0X' and '1X' indicate that the command has been performed.
   828 // Command performed successfully.
   829 this.STK_RESULT_OK = 0x00;
   831 // Command performed with partial comprehension.
   832 this.STK_RESULT_PRFRMD_WITH_PARTIAL_COMPREHENSION = 0x01;
   834 // Command performed, with missing information.
   835 this.STK_RESULT_PRFRMD_WITH_MISSING_INFO = 0x02;
   837 // REFRESH performed with additional EFs read.
   838 this.STK_RESULT_PRFRMD_WITH_ADDITIONAL_EFS_READ = 0x03;
   840 // Command performed successfully, but requested icon could not be
   841 // displayed.
   842 this.STK_RESULT_PRFRMD_ICON_NOT_DISPLAYED = 0x04;
   844 // Command performed, but modified by call control by NAA.
   845 this.STK_RESULT_PRFRMD_MODIFIED_BY_NAA = 0x05;
   847 // Command performed successfully, limited service.
   848 this.STK_RESULT_PRFRMD_LIMITED_SERVICE = 0x06;
   850 // Command performed with modification.
   851 this.STK_RESULT_PRFRMD_WITH_MODIFICATION = 0x07;
   853 // REFRESH performed but indicated NAA was not active.
   854 this.STK_RESULT_PRFRMD_NAA_NOT_ACTIVE = 0x08;
   856 // Command performed successfully; tone not played.
   857 this.STK_RESULT_PRFRMD_TONE_NOT_PLAYED = 0x09;
   859 // Proactive UICC session terminated by the user.
   860 this.STK_RESULT_UICC_SESSION_TERM_BY_USER = 0x10;
   862 // Backward move in the proactive UICC session requested by the user.
   863 this.STK_RESULT_BACKWARD_MOVE_BY_USER = 0x11;
   865 // No response from user.
   866 this.STK_RESULT_NO_RESPONSE_FROM_USER = 0x12;
   868 // Help information required by the user.
   869 this.STK_RESULT_HELP_INFO_REQUIRED = 0x13;
   871 // USSD or SS transaction terminated by the user.
   872 this.STK_RESULT_USSD_SS_SESSION_TERM_BY_USER = 0x14;
   874 // Results '2X' indicate to the UICC that it may be worth re-trying the
   875 // command at a later opportunity.
   877 // Terminal currently unable to process command.
   878 this.STK_RESULT_TERMINAL_CRNTLY_UNABLE_TO_PROCESS = 0x20;
   880 // Network currently unable to process command.
   881 this.STK_RESULT_NETWORK_CRNTLY_UNABLE_TO_PROCESS = 0x21;
   883 // User did not accept the proactive command.
   884 this.STK_RESULT_USER_NOT_ACCEPT = 0x22;
   886 // User cleared down call before connection or network release.
   887 this.STK_RESULT_USER_CLEAR_DOWN_CALL = 0x23;
   889 // Action in contradiction with the current timer state.
   890 this.STK_RESULT_CONTRADICTION_WITH_TIMER = 0x24;
   892 // Interaction with call control by NAA; temporary problem.
   893 this.STK_RESULT_NAA_CALL_CONTROL_TEMPORARY = 0x25;
   895 // Launch browser generic error code.
   896 this.STK_RESULT_LAUNCH_BROWSER_ERROR = 0x26;
   898 // MMS temporary problem.
   899 this.STK_RESULT_MMS_TEMPORARY = 0x27;
   901 // Results '3X' indicate that it is not worth the UICC re-trying with an
   902 // identical command; as it will only get the same response. However, the
   903 // decision to retry lies with the application.
   905 // Command beyond terminal's capabilities.
   906 this.STK_RESULT_BEYOND_TERMINAL_CAPABILITY = 0x30;
   908 // Command type not understood by terminal.
   909 this.STK_RESULT_CMD_TYPE_NOT_UNDERSTOOD = 0x31;
   911 // Command data not understood by terminal.
   912 this.STK_RESULT_CMD_DATA_NOT_UNDERSTOOD = 0x32;
   914 // Command number not known by terminal.
   915 this.STK_RESULT_CMD_NUM_NOT_KNOWN = 0x33;
   917 // SS Return Error.
   918 this.STK_RESULT_SS_RETURN_ERROR = 0x34;
   920 // SMS RP-ERROR.
   921 this.STK_RESULT_SMS_RP_ERROR = 0x35;
   923 // Error, required values are missing.
   924 this.STK_RESULT_REQUIRED_VALUES_MISSING = 0x36;
   926 // USSD Return Error.
   927 this.STK_RESULT_USSD_RETURN_ERROR = 0x37;
   929 // MultipleCard commands error.
   930 this.STK_RESULT_MULTI_CARDS_CMD_ERROR = 0x38;
   932 // Interaction with call control by USIM or MO short message control by
   933 // USIM; permanent problem.
   934 this.STK_RESULT_USIM_CALL_CONTROL_PERMANENT = 0x39;
   936 // Bearer Independent Protocol error.
   937 this.STK_RESULT_BIP_ERROR = 0x3a;
   939 // Access Technology unable to process command.
   940 this.STK_RESULT_ACCESS_TECH_UNABLE_TO_PROCESS = 0x3b;
   942 // Frames error.
   943 this.STK_RESULT_FRAMES_ERROR = 0x3c;
   945 // MMS Error.
   946 this.STK_RESULT_MMS_ERROR = 0x3d;
   948 // STK presentation types, TS 11.14, clause 12.6, Command Qualifier: Select Item
   949 this.STK_PRESENTATION_TYPE_NOT_SPECIFIED = 0x00; // Bit 1 is 0.
   950 this.STK_PRESENTATION_TYPE_DATA_VALUES = 0x01; // Bit 1 is 1, bit 2 is 0.
   951 this.STK_PRESENTATION_TYPE_NAVIGATION_OPTIONS = 0x03; // Bit 1 is 1, bit 2 is 1.
   953 // STK Coding Scheme.
   954 this.STK_TEXT_CODING_GSM_7BIT_PACKED = 0x00;
   955 this.STK_TEXT_CODING_GSM_8BIT = 0x04;
   956 this.STK_TEXT_CODING_UCS2 = 0x08;
   958 // STK Event List.
   959 this.STK_EVENT_TYPE_MT_CALL = 0x00;
   960 this.STK_EVENT_TYPE_CALL_CONNECTED = 0x01;
   961 this.STK_EVENT_TYPE_CALL_DISCONNECTED = 0x02;
   962 this.STK_EVENT_TYPE_LOCATION_STATUS = 0x03;
   963 this.STK_EVENT_TYPE_USER_ACTIVITY = 0x04;
   964 this.STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE = 0x05;
   965 this.STK_EVENT_TYPE_CARD_READER_STATUS = 0x06;
   966 this.STK_EVENT_TYPE_LANGUAGE_SELECTION = 0x07;
   967 this.STK_EVENT_TYPE_BROWSER_TERMINATION = 0x08;
   968 this.STK_EVENT_TYPE_DATA_AVAILABLE = 0x09;
   969 this.STK_EVENT_TYPE_CHANNEL_STATUS = 0x0a;
   970 this.STK_EVENT_TYPE_SINGLE_ACCESS_TECHNOLOGY_CHANGED = 0x0b;
   971 this.STK_EVENT_TYPE_DISPLAY_PARAMETER_CHANGED = 0x0c;
   972 this.STK_EVENT_TYPE_LOCAL_CONNECTION = 0x0d;
   973 this.STK_EVENT_TYPE_NETWORK_SEARCH_MODE_CHANGED = 0x0e;
   974 this.STK_EVENT_TYPE_BROWSING_STATUS = 0x0f;
   976 // STK Service state of Location Status.
   977 this.STK_SERVICE_STATE_NORMAL      = 0x00;
   978 this.STK_SERVICE_STATE_LIMITED     = 0x01;
   979 this.STK_SERVICE_STATE_UNAVAILABLE = 0x02;
   981 // Refresh mode.
   982 this.STK_REFRESH_NAA_INIT_AND_FULL_FILE_CHANGE = 0x00;
   983 this.STK_REFRESH_FILE_CHANGE = 0x01;
   984 this.STK_REFRESH_NAA_INIT_AND_FILE_CHANGE = 0x02;
   985 this.STK_REFRESH_NAA_INIT = 0x03;
   986 this.STK_REFRESH_UICC_RESET = 0x04;
   988 // Tone type.
   989 this.STK_TONE_TYPE_DIAL_TONE                = 0x01;
   990 this.STK_TONE_TYPE_CALLED_SUBSCRIBER_BUSY   = 0x02;
   991 this.STK_TONE_TYPE_CONGESTION               = 0x03;
   992 this.STK_TONE_TYPE_RADIO_PATH_ACK           = 0x04;
   993 this.STK_TONE_TYPE_RADIO_PATH_NOT_AVAILABLE = 0x05;
   994 this.STK_TONE_TYPE_ERROR                    = 0x06;
   995 this.STK_TONE_TYPE_CALL_WAITING_TONE        = 0x07;
   996 this.STK_TONE_TYPE_RINGING_TONE             = 0x08;
   997 this.STK_TONE_TYPE_GENERAL_BEEP             = 0x10;
   998 this.STK_TONE_TYPE_POSITIVE_ACK_TONE        = 0x11;
   999 this.STK_TONE_TYPE_NEGATIVE_ACK_TONE        = 0x12;
  1001 // Time unit.
  1002 this.STK_TIME_UNIT_MINUTE       = 0x00;
  1003 this.STK_TIME_UNIT_SECOND       = 0x01;
  1004 this.STK_TIME_UNIT_TENTH_SECOND = 0x02;
  1006 // Local Information type.
  1007 this.STK_LOCAL_INFO_NNA = 0x00;
  1008 this.STK_LOCAL_INFO_IMEI = 0x01;
  1009 this.STK_LOCAL_INFO_NMR_FOR_NNA = 0x02;
  1010 this.STK_LOCAL_INFO_DATE_TIME_ZONE = 0x03;
  1011 this.STK_LOCAL_INFO_LANGUAGE = 0x04;
  1012 this.STK_LOCAL_INFO_ACCESS_TECH = 0x06;
  1013 this.STK_LOCAL_INFO_ESN = 0x07;
  1014 this.STK_LOCAL_INFO_IMEISV = 0x08;
  1015 this.STK_LOCAL_INFO_SEARCH_MODE = 0x09;
  1016 this.STK_LOCAL_INFO_CHARGE_STATE = 0x0A;
  1017 this.STK_LOCAL_INFO_MEID = 0x0B;
  1018 this.STK_LOCAL_INFO_BROADCAST_NETWORK_INFO = 0x0D;
  1019 this.STK_LOCAL_INFO_MULTIPLE_ACCESS_TECH = 0x0E;
  1020 this.STK_LOCAL_INFO_INFO_FOR_MULTIPLE_ACCESS_TECH = 0x0F;
  1021 this.STK_LOCAL_INFO_NMR_FOR_MULTIPLE_ACCESS_TECH = 0x10;
  1023 // Timer Management.
  1024 this.STK_TIMER_START = 0x00;
  1025 this.STK_TIMER_DEACTIVATE = 0x01;
  1026 this.STK_TMIER_GET_CURRENT_VALUE = 0x02;
  1028 // Browser Termination Cause.
  1029 this.STK_BROWSER_TERMINATION_CAUSE_USER = 0x00;
  1030 this.STK_BROWSER_TERMINATION_CAUSE_ERROR = 0x01;
  1032 // Next Action Indicator.
  1033 this.STK_NEXT_ACTION_NULL = 0x00;
  1034 this.STK_NEXT_ACTION_END_PROACTIVE_SESSION = 0x81;
  1036 /**
  1037  * Supported Terminal Facilities.
  1039  * value = 1, supported.
  1040  *         0, not supported.
  1041  */
  1042 this.STK_TERMINAL_SUPPORT_PROFILE_DOWNLOAD             = 1;
  1043 this.STK_TERMINAL_SUPPORT_SMS_PP_DOWNLOAD              = 1;
  1044 this.STK_TERMINAL_SUPPORT_CELL_BROADCAST_DATA_DOWNLOAD = 0;
  1045 this.STK_TERMINAL_SUPPORT_MENU_SELECTION               = 1;
  1046 this.STK_TERMINAL_SUPPORT_SIM_DATA_DOWNLOAD_ERROR      = 0;
  1047 this.STK_TERMINAL_SUPPORT_TIMER_EXPIRATION             = 1;
  1048 this.STK_TERMINAL_SUPPORT_USSD_IN_CALL_CONTROL         = 0;
  1049 this.STK_TERMINAL_SUPPORT_CALL_CONTROL_IN_REDIAL       = 0;
  1051 this.STK_TERMINAL_SUPPORT_COMMAND_RESULT               = 1;
  1052 this.STK_TERMINAL_SUPPORT_CALL_CONTROL                 = 1;
  1053 this.STK_TERMINAL_SUPPORT_CALL_ID_INCLUDED             = 0;
  1054 this.STK_TERMINAL_SUPPORT_MO_SMS_CONTROL               = 0;
  1055 this.STK_TERMINAL_SUPPORT_ALPHA_ID_INDICATION          = 0;
  1056 this.STK_TERMINAL_SUPPORT_UCS2_ENTRY                   = 1;
  1057 this.STK_TERMINAL_SUPPORT_UCS2_DISPLAY                 = 1;
  1058 this.STK_TERMINAL_SUPPORT_EXTENSION_TEXT               = 1;
  1060 this.STK_TERMINAL_SUPPORT_PROACTIVE_DISPLAY_TEXT       = 1;
  1061 this.STK_TERMINAL_SUPPORT_PROACTIVE_GET_INKEY          = 1;
  1062 this.STK_TERMINAL_SUPPORT_PROACTIVE_GET_INPUT          = 1;
  1063 this.STK_TERMINAL_SUPPORT_PROACTIVE_MORE_TIME          = 1;
  1064 this.STK_TERMINAL_SUPPORT_PROACTIVE_PLAY_TONE          = 1;
  1065 this.STK_TERMINAL_SUPPORT_PROACTIVE_POLL_INTERVAL      = 1;
  1066 this.STK_TERMINAL_SUPPORT_PROACTIVE_POLL_OFF           = 1;
  1067 this.STK_TERMINAL_SUPPORT_PROACTIVE_REFRESH            = 1;
  1069 this.STK_TERMINAL_SUPPORT_PROACTIVE_SELECT_ITEM        = 1;
  1070 this.STK_TERMINAL_SUPPORT_PROACTIVE_SEND_SMS           = 1;
  1071 this.STK_TERMINAL_SUPPORT_PROACTIVE_SEND_SS            = 1;
  1072 this.STK_TERMINAL_SUPPORT_PROACTIVE_SEND_USSD          = 1;
  1073 this.STK_TERMINAL_SUPPORT_PROACTIVE_SET_UP_CALL        = 1;
  1074 this.STK_TERMINAL_SUPPORT_PROACTIVE_SET_UP_MENU        = 1;
  1075 this.STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO         = 1;
  1076 this.STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_NMR     = 0;
  1078 this.STK_TERMINAL_SUPPORT_PROACTIVE_SET_UP_EVENT_LIST  = 1;
  1079 this.STK_TERMINAL_SUPPORT_EVENT_MT_CALL                = 1;
  1080 this.STK_TERMINAL_SUPPORT_EVENT_CALL_CONNECTED         = 1;
  1081 this.STK_TERMINAL_SUPPORT_EVENT_CALL_DISCONNECTED      = 1;
  1082 this.STK_TERMINAL_SUPPORT_EVENT_LOCATION_STATUS        = 1;
  1083 this.STK_TERMINAL_SUPPORT_EVENT_USER_ACTIVITY          = 1;
  1084 this.STK_TERMINAL_SUPPORT_EVENT_IDLE_SCREEN_AVAILABLE  = 1;
  1085 this.STK_TERMINAL_SUPPORT_EVENT_CARD_READER_STATUS     = 0;
  1087 this.STK_TERMINAL_SUPPORT_EVENT_LANGUAGE_SELECTION     = 1;
  1088 this.STK_TERMINAL_SUPPORT_EVENT_BROWSER_TERMINATION    = 1;
  1089 this.STK_TERMINAL_SUPPORT_EVENT_DATA_AVAILABLE         = 0;
  1090 this.STK_TERMINAL_SUPPORT_EVENT_CHANNEL_STATUS         = 0;
  1092 this.STK_TERMINAL_SUPPORT_PROACTIVE_TIMER_START_STOP   = 1;
  1093 this.STK_TERMINAL_SUPPORT_PROACTIVE_TIMER_GET_CURRENT  = 1;
  1094 this.STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_DATE    = 1;
  1095 this.STK_TERMINAL_SUPPORT_GET_INKEY                    = 1;
  1096 this.STK_TERMINAL_SUPPORT_SET_UP_IDLE_MODE_TEXT        = 1;
  1097 this.STK_TERMINAL_SUPPORT_RUN_AT_COMMAND               = 0;
  1098 this.STK_TERMINAL_SUPPORT_SET_UP_CALL                  = 1;
  1099 this.STK_TERMINAL_SUPPORT_CALL_CONTROL_BY_NNA          = 0;
  1101 this.STK_TERMINAL_SUPPORT_DISPLAY_TEXT                      = 1;
  1102 this.STK_TERMINAL_SUPPORT_SEND_DTMF_COMMAND                 = 1;
  1103 this.STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_NMR          = 0;
  1104 this.STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_LANGUAGE     = 1;
  1105 this.STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_TIME_ADVANCE = 0;
  1106 this.STK_TERMINAL_SUPPORT_PROACTIVE_LANGUAGE_NOTIFICATION   = 0;
  1107 this.STK_TERMINAL_SUPPORT_PROACTIVE_LAUNCH_BROWSER          = 1;
  1108 this.STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_ACCESS_TECH  = 0;
  1110 this.STK_TERMINAL_SUPPORT_BIP_COMMAND_OPEN_CHANNEL       = 1;
  1111 this.STK_TERMINAL_SUPPORT_BIP_COMMAND_CLOSE_CHANNEL      = 1;
  1112 this.STK_TERMINAL_SUPPORT_BIP_COMMAND_RECEIVE_DATA       = 1;
  1113 this.STK_TERMINAL_SUPPORT_BIP_COMMAND_SEND_DATA          = 1;
  1114 this.STK_TERMINAL_SUPPORT_BIP_COMMAND_GET_CHANNEL_STATUS = 0;
  1116 /**
  1117  * SAT profile
  1119  * @see ETSI TS 101.267, section 5.2.
  1120  */
  1121 this.STK_TERMINAL_PROFILE_DOWNLOAD =
  1122   (STK_TERMINAL_SUPPORT_PROFILE_DOWNLOAD << 0) |
  1123   (STK_TERMINAL_SUPPORT_SMS_PP_DOWNLOAD  << 1) |
  1124   (STK_TERMINAL_SUPPORT_CELL_BROADCAST_DATA_DOWNLOAD  << 2) |
  1125   (STK_TERMINAL_SUPPORT_MENU_SELECTION << 3) |
  1126   (STK_TERMINAL_SUPPORT_SIM_DATA_DOWNLOAD_ERROR << 4) |
  1127   (STK_TERMINAL_SUPPORT_TIMER_EXPIRATION << 5) |
  1128   (STK_TERMINAL_SUPPORT_USSD_IN_CALL_CONTROL << 6) |
  1129   (STK_TERMINAL_SUPPORT_CALL_CONTROL_IN_REDIAL << 7);
  1131 this.STK_TERMINAL_PROFILE_OTHER =
  1132   (STK_TERMINAL_SUPPORT_COMMAND_RESULT << 0) |
  1133   (STK_TERMINAL_SUPPORT_CALL_CONTROL << 1) |
  1134   (STK_TERMINAL_SUPPORT_CALL_ID_INCLUDED << 2) |
  1135   (STK_TERMINAL_SUPPORT_MO_SMS_CONTROL << 3) |
  1136   (STK_TERMINAL_SUPPORT_ALPHA_ID_INDICATION << 4) |
  1137   (STK_TERMINAL_SUPPORT_UCS2_ENTRY << 5) |
  1138   (STK_TERMINAL_SUPPORT_UCS2_DISPLAY << 6) |
  1139   (STK_TERMINAL_SUPPORT_EXTENSION_TEXT << 7);
  1141 this.STK_TERMINAL_PROFILE_PROACTIVE_1 =
  1142   (STK_TERMINAL_SUPPORT_PROACTIVE_DISPLAY_TEXT << 0) |
  1143   (STK_TERMINAL_SUPPORT_PROACTIVE_GET_INKEY << 1) |
  1144   (STK_TERMINAL_SUPPORT_PROACTIVE_GET_INPUT << 2) |
  1145   (STK_TERMINAL_SUPPORT_PROACTIVE_MORE_TIME << 3) |
  1146   (STK_TERMINAL_SUPPORT_PROACTIVE_PLAY_TONE << 4) |
  1147   (STK_TERMINAL_SUPPORT_PROACTIVE_POLL_INTERVAL << 5) |
  1148   (STK_TERMINAL_SUPPORT_PROACTIVE_POLL_OFF << 6) |
  1149   (STK_TERMINAL_SUPPORT_PROACTIVE_REFRESH << 7);
  1151 this.STK_TERMINAL_PROFILE_PROACTIVE_2 =
  1152   (STK_TERMINAL_SUPPORT_PROACTIVE_SELECT_ITEM << 0) |
  1153   (STK_TERMINAL_SUPPORT_PROACTIVE_SEND_SMS << 1) |
  1154   (STK_TERMINAL_SUPPORT_PROACTIVE_SEND_SS << 2) |
  1155   (STK_TERMINAL_SUPPORT_PROACTIVE_SEND_USSD << 3) |
  1156   (STK_TERMINAL_SUPPORT_PROACTIVE_SET_UP_CALL << 4) |
  1157   (STK_TERMINAL_SUPPORT_PROACTIVE_SET_UP_MENU << 5) |
  1158   (STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO << 6) |
  1159   (STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_NMR << 7);
  1161 this.STK_TERMINAL_PROFILE_EVENT =
  1162   (STK_TERMINAL_SUPPORT_PROACTIVE_SET_UP_EVENT_LIST << 0) |
  1163   (STK_TERMINAL_SUPPORT_EVENT_MT_CALL << 1) |
  1164   (STK_TERMINAL_SUPPORT_EVENT_CALL_CONNECTED << 2) |
  1165   (STK_TERMINAL_SUPPORT_EVENT_CALL_DISCONNECTED << 3) |
  1166   (STK_TERMINAL_SUPPORT_EVENT_LOCATION_STATUS << 4) |
  1167   (STK_TERMINAL_SUPPORT_EVENT_USER_ACTIVITY << 5) |
  1168   (STK_TERMINAL_SUPPORT_EVENT_IDLE_SCREEN_AVAILABLE << 6) |
  1169   (STK_TERMINAL_SUPPORT_EVENT_CARD_READER_STATUS << 7);
  1171 this.STK_TERMINAL_PROFILE_EVENT_EXT =
  1172   (STK_TERMINAL_SUPPORT_EVENT_LANGUAGE_SELECTION << 0) |
  1173   (STK_TERMINAL_SUPPORT_EVENT_BROWSER_TERMINATION << 1) |
  1174   (STK_TERMINAL_SUPPORT_EVENT_DATA_AVAILABLE << 2) |
  1175   (STK_TERMINAL_SUPPORT_EVENT_CHANNEL_STATUS << 3);
  1177 this.STK_TERMINAL_PROFILE_PROACTIVE_3 =
  1178   (STK_TERMINAL_SUPPORT_PROACTIVE_TIMER_START_STOP << 0) |
  1179   (STK_TERMINAL_SUPPORT_PROACTIVE_TIMER_GET_CURRENT << 1) |
  1180   (STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_DATE << 2) |
  1181   (STK_TERMINAL_SUPPORT_GET_INKEY << 3) |
  1182   (STK_TERMINAL_SUPPORT_SET_UP_IDLE_MODE_TEXT << 4) |
  1183   (STK_TERMINAL_SUPPORT_RUN_AT_COMMAND << 5) |
  1184   (STK_TERMINAL_SUPPORT_SET_UP_CALL << 6) |
  1185   (STK_TERMINAL_SUPPORT_CALL_CONTROL_BY_NNA << 7);
  1187 this.STK_TERMINAL_PROFILE_PROACTIVE_4 =
  1188   (STK_TERMINAL_SUPPORT_DISPLAY_TEXT << 0) |
  1189   (STK_TERMINAL_SUPPORT_SEND_DTMF_COMMAND << 1) |
  1190   (STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_NMR << 2) |
  1191   (STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_LANGUAGE << 3) |
  1192   (STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_TIME_ADVANCE << 4) |
  1193   (STK_TERMINAL_SUPPORT_PROACTIVE_LANGUAGE_NOTIFICATION << 5) |
  1194   (STK_TERMINAL_SUPPORT_PROACTIVE_LAUNCH_BROWSER << 6) |
  1195   (STK_TERMINAL_SUPPORT_PROACTIVE_LOCAL_INFO_ACCESS_TECH << 7);
  1197 this.STK_TERMINAL_PROFILE_BIP_COMMAND =
  1198   (STK_TERMINAL_SUPPORT_BIP_COMMAND_OPEN_CHANNEL << 0) |
  1199   (STK_TERMINAL_SUPPORT_BIP_COMMAND_CLOSE_CHANNEL << 1) |
  1200   (STK_TERMINAL_SUPPORT_BIP_COMMAND_RECEIVE_DATA << 2) |
  1201   (STK_TERMINAL_SUPPORT_BIP_COMMAND_SEND_DATA << 3) |
  1202   (STK_TERMINAL_SUPPORT_BIP_COMMAND_GET_CHANNEL_STATUS << 4);
  1204 this.STK_SUPPORTED_TERMINAL_PROFILE = [
  1205   STK_TERMINAL_PROFILE_DOWNLOAD,
  1206   STK_TERMINAL_PROFILE_OTHER,
  1207   STK_TERMINAL_PROFILE_PROACTIVE_1,
  1208   STK_TERMINAL_PROFILE_PROACTIVE_2,
  1209   STK_TERMINAL_PROFILE_EVENT,
  1210   STK_TERMINAL_PROFILE_EVENT_EXT, // Event extension
  1211   0x00, // Multiple card proactive commands
  1212   STK_TERMINAL_PROFILE_PROACTIVE_3,
  1213   STK_TERMINAL_PROFILE_PROACTIVE_4,
  1214   0x00, // Softkey support
  1215   0x00, // Softkey information
  1216   STK_TERMINAL_PROFILE_BIP_COMMAND,
  1217   0x00, // BIP supported bearers
  1218   0x00, // Screen height
  1219   0x00, // Screen width
  1220   0x00, // 16, Screen effects
  1221   0x00, // 17, BIP supported transport interface
  1222   0x00, // 18, RFU
  1223   0x00, // 19, RFU
  1224   0x00, // 20, RFU
  1225 ];
  1227 /**
  1228  * (U)SIM Services.
  1230  * @see 3GPP TS 51.011 10.3.7 (SIM) and 3GPP TS 31.102 4.2.8 (USIM).
  1231  */
  1232 this.GECKO_ICC_SERVICES = {
  1233   sim: {
  1234     ADN: 2,
  1235     FDN: 3,
  1236     PLMNSEL: 7,
  1237     MSISDN: 9,
  1238     CBMI: 14,
  1239     SPN: 17,
  1240     SDN: 18,
  1241     DATA_DOWNLOAD_SMS_CB: 25,
  1242     DATA_DOWNLOAD_SMS_PP: 26,
  1243     CBMIR: 30,
  1244     BDN: 31,
  1245     PNN: 51,
  1246     OPL: 52,
  1247     MDN: 53,
  1248     MWIS: 54,
  1249     SPDI: 56
  1250   },
  1251   usim: {
  1252     FDN: 2,
  1253     SDN: 4,
  1254     BDN: 6,
  1255     CBMI: 15,
  1256     CBMIR: 16,
  1257     SPN: 19,
  1258     MSISDN: 21,
  1259     DATA_DOWNLOAD_SMS_PP: 28,
  1260     DATA_DOWNLOAD_SMS_CB: 29,
  1261     PNN: 45,
  1262     OPL: 46,
  1263     MDN: 47,
  1264     MWIS: 48,
  1265     SPDI: 51
  1266   },
  1267   ruim: {
  1268     ENHANCED_PHONEBOOK: 6,
  1269     SPN: 17
  1271 };
  1273 /**
  1274  * Cell Broadcast constants
  1275  */
  1277 this.CB_FORMAT_GSM  = 0;
  1278 this.CB_FORMAT_ETWS = 1;
  1279 this.CB_FORMAT_CMAS = 2;
  1280 this.CB_FORMAT_UMTS = 3;
  1282 // CBS Data Coding Scheme: Language groups
  1283 // see 3GPP TS 23.038 section 5
  1284 this.CB_DCS_LANG_GROUP_1 = [
  1285   "de", "en", "it", "fr", "es", "nl", "sv", "da", "pt", "fi",
  1286   "no", "el", "tr", "hu", "pl", null
  1287 ];
  1288 this.CB_DCS_LANG_GROUP_2 = [
  1289   "cs", "he", "ar", "ru", "is", null, null, null, null, null,
  1290   null, null, null, null, null, null
  1291 ];
  1293 // See 3GPP TS 23.041 v11.2.0 section 9.4.1.2.2
  1294 this.CB_NON_MMI_SETTABLE_RANGES = [
  1295   /*0x1000 - 0x107F*/4096,  4224,  /*0x1080 - 0x10FF*/4224,  4352,
  1296   /*0x1112 - 0x1112*/4370,  4371,  /*0x111F - 0x111F*/4383,  4384,
  1297   /*0xF000 - 0xFFFE*/61440, 65535, /*0xFFFF - 0xFFFF*/65535, 65536
  1298 ];
  1300 // User Data max length in septets
  1301 this.CB_MAX_CONTENT_7BIT = 93;
  1302 // User Data max length in octets
  1303 this.CB_MAX_CONTENT_8BIT = 82;
  1304 // User Data max length in chars
  1305 this.CB_MAX_CONTENT_UCS2 = 41;
  1307 this.CB_MESSAGE_SIZE_ETWS = 56;
  1308 this.CB_MESSAGE_SIZE_GSM  = 88;
  1310 // GSM Cell Broadcast Geographical Scope
  1311 // See 3GPP TS 23.041 clause 9.4.1.2.1
  1312 this.CB_GSM_GEOGRAPHICAL_SCOPE_CELL_WIDE_IMMEDIATE = 0;
  1313 this.CB_GSM_GEOGRAPHICAL_SCOPE_PLMN_WIDE           = 1;
  1314 this.CB_GSM_GEOGRAPHICAL_SCOPE_LOCATION_AREA_WIDE  = 2;
  1315 this.CB_GSM_GEOGRAPHICAL_SCOPE_CELL_WIDE           = 3;
  1317 // GSM Cell Broadcast Geographical Scope
  1318 // See 3GPP TS 23.041 clause 9.4.1.2.1
  1319 this.CB_GSM_GEOGRAPHICAL_SCOPE_NAMES = [
  1320   "cell-immediate",
  1321   "plmn",
  1322   "location-area",
  1323   "cell"
  1324 ];
  1326 // GSM Cell Broadcast Message Identifiers
  1327 // see 3GPP TS 23.041 clause 9.4.1.2.2
  1328 this.CB_GSM_MESSAGEID_ETWS_BEGIN = 0x1100;
  1329 this.CB_GSM_MESSAGEID_ETWS_END   = 0x1107;
  1331 // ETWS Warning-Type
  1332 // see 3GPP TS 23.041 clause 9.3.24
  1333 this.CB_ETWS_WARNING_TYPE_NAMES = [
  1334   "earthquake",
  1335   "tsunami",
  1336   "earthquake-tsunami",
  1337   "test",
  1338   "other"
  1339 ];
  1341 /**
  1342  * GSM PDU constants
  1343  */
  1345 // PDU TYPE-OF-ADDRESS
  1346 this.PDU_TOA_UNKNOWN       = 0x80; // Unknown. This is used when the user or
  1347                                     // network has no a priori information
  1348                                     // about the numbering plan.
  1349 this.PDU_TOA_ISDN          = 0x81; // ISDN/Telephone numbering
  1350 this.PDU_TOA_DATA_NUM      = 0x83; // Data numbering plan
  1351 this.PDU_TOA_TELEX_NUM     = 0x84; // Telex numbering plan
  1352 this.PDU_TOA_NATIONAL_NUM  = 0x88; // National numbering plan
  1353 this.PDU_TOA_PRIVATE_NUM   = 0x89; // Private numbering plan
  1354 this.PDU_TOA_ERMES_NUM     = 0x8A; // Ermes numbering plan
  1355 this.PDU_TOA_INTERNATIONAL = 0x90; // International number
  1356 this.PDU_TOA_NATIONAL      = 0xA0; // National number. Prefix or escape digits
  1357                                     // shall not be included
  1358 this.PDU_TOA_NETWORK_SPEC  = 0xB0; // Network specific number This is used to
  1359                                     // indicate administration/service number
  1360                                     // specific to the serving network
  1361 this.PDU_TOA_SUBSCRIBER    = 0xC0; // Subscriber number. This is used when a
  1362                                     // specific short number representation is
  1363                                     // stored in one or more SCs as part of a
  1364                                     // higher layer application
  1365 this.PDU_TOA_ALPHANUMERIC  = 0xD0; // Alphanumeric, (coded according to GSM TS
  1366                                     // 03.38 7-bit default alphabet)
  1367 this.PDU_TOA_ABBREVIATED   = 0xE0; // Abbreviated number
  1369 /**
  1370  * First octet of the SMS-DELIVER PDU
  1372  * RP:     0   Reply Path parameter is not set in this PDU
  1373  *         1   Reply Path parameter is set in this PDU
  1375  * UDHI:   0   The UD field contains only the short message
  1376  *         1   The beginning of the UD field contains a header in addition of
  1377  *             the short message
  1379  * SRI: (is only set by the SMSC)
  1380  *         0    A status report will not be returned to the SME
  1381  *         1    A status report will be returned to the SME
  1383  * MMS: (is only set by the SMSC)
  1384  *         0    More messages are waiting for the MS in the SMSC
  1385  *         1    No more messages are waiting for the MS in the SMSC
  1387  * MTI:   bit1    bit0    Message type
  1388  *         0       0       SMS-DELIVER (SMSC ==> MS)
  1389  *         0       0       SMS-DELIVER REPORT (MS ==> SMSC, is generated
  1390  *                         automatically by the M20, after receiving a
  1391  *                         SMS-DELIVER)
  1392  *         0       1       SMS-SUBMIT (MS ==> SMSC)
  1393  *         0       1       SMS-SUBMIT REPORT (SMSC ==> MS)
  1394  *         1       0       SMS-STATUS REPORT (SMSC ==> MS)
  1395  *         1       0       SMS-COMMAND (MS ==> SMSC)
  1396  *         1       1       Reserved
  1397  */
  1398 this.PDU_RP    = 0x80;       // Reply path. Parameter indicating that
  1399                               // reply path exists.
  1400 this.PDU_UDHI  = 0x40;       // User data header indicator. This bit is
  1401                               // set to 1 if the User Data field starts
  1402                               // with a header
  1403 this.PDU_SRI_SRR = 0x20;     // Status report indication (SMS-DELIVER)
  1404                               // or request (SMS-SUBMIT)
  1405 this.PDU_VPF_ABSOLUTE = 0x18;// Validity period aboslute format
  1406                               // (SMS-SUBMIT only)
  1407 this.PDU_VPF_RELATIVE = 0x10;// Validity period relative format
  1408                               // (SMS-SUBMIT only)
  1409 this.PDU_VPF_ENHANCED = 0x8; // Validity period enhance format
  1410                               // (SMS-SUBMIT only)
  1411 this.PDU_MMS_RD       = 0x04;// More messages to send. (SMS-DELIVER only) or
  1412                               // Reject duplicates (SMS-SUBMIT only)
  1414 // MTI - Message Type Indicator
  1415 this.PDU_MTI_SMS_RESERVED        = 0x03;
  1416 this.PDU_MTI_SMS_STATUS_REPORT   = 0x02;
  1417 this.PDU_MTI_SMS_COMMAND         = 0x02;
  1418 this.PDU_MTI_SMS_SUBMIT          = 0x01;
  1419 this.PDU_MTI_SMS_DELIVER         = 0x00;
  1421 // PI - Parameter Indicator
  1422 this.PDU_PI_EXTENSION           = 0x80;
  1423 this.PDU_PI_USER_DATA_LENGTH    = 0x04;
  1424 this.PDU_PI_DATA_CODING_SCHEME  = 0x02;
  1425 this.PDU_PI_PROTOCOL_IDENTIFIER = 0x01;
  1426 this.PDU_PI_RESERVED            = 0x78;
  1428 // FCS - Failure Cause
  1429 // 0...127   see 3GPP TS 24.011 clause E.2
  1430 // 128...255 see 3GPP TS 23.040 clause 9.2.3.22
  1431 // others    see 3GPP TS 27.005 clause 3.2.5
  1432 this.PDU_FCS_OK                       = 0x00;
  1433 this.PDU_FCS_PROTOCOL_ERROR           = 0x6F;
  1434 this.PDU_FCS_MEMORY_CAPACITY_EXCEEDED = 0XD3;
  1435 this.PDU_FCS_USAT_BUSY                = 0XD4;
  1436 this.PDU_FCS_USIM_DATA_DOWNLOAD_ERROR = 0xD5;
  1437 this.PDU_FCS_RESERVED                 = 0xE0;
  1438 this.PDU_FCS_UNSPECIFIED              = 0xFF;
  1439 // Special internal value that means we should not acknowledge an
  1440 // incoming text right away, but need to wait for other components
  1441 // (e.g. storage) to complete. This can be any value, so long it
  1442 // doesn't conflict with the PDU_FCS_* constants above.
  1443 this.MOZ_FCS_WAIT_FOR_EXPLICIT_ACK    = 0x0F;
  1445 // ST - Status
  1446 // Bit 7..0 = 000xxxxx, short message transaction completed
  1447 this.PDU_ST_0_RECEIVED             = 0x00;
  1448 this.PDU_ST_0_FORWARDED_NO_CONFIRM = 0x01;
  1449 this.PDU_ST_0_REPLACED_BY_SC       = 0x02;
  1450 this.PDU_ST_0_RESERVED_BEGIN       = 0x03;
  1451 this.PDU_ST_0_SC_SPECIFIC_BEGIN    = 0x10;
  1452 this.PDU_ST_0_SC_SPECIFIC_END      = 0x1F;
  1453 // Bit 7..0 = 001xxxxx, temporary error, SC still trying to transfer SM
  1454 this.PDU_ST_1_CONGESTION        = 0x20;
  1455 this.PDU_ST_1_SME_BUSY          = 0x21;
  1456 this.PDU_ST_1_SME_NO_RESPONSE   = 0x22;
  1457 this.PDU_ST_1_SERVICE_REJECTED  = 0x23;
  1458 this.PDU_ST_1_QOS_UNAVAILABLE   = 0x24;
  1459 this.PDU_ST_1_SME_ERROR         = 0x25;
  1460 this.PDU_ST_1_RESERVED_BEGIN    = 0x26;
  1461 this.PDU_ST_1_SC_SPECIFIC_BEGIN = 0x30;
  1462 this.PDU_ST_1_SC_SPECIFIC_END   = 0x3F;
  1463 // Bit 7..0 = 010xxxxx, permanent error, SC is not making any more transfer
  1464 // attempts
  1465 this.PDU_ST_2_RPC_ERROR                = 0x40;
  1466 this.PDU_ST_2_DEST_INCOMPATIBLE        = 0x41;
  1467 this.PDU_ST_2_CONNECTION_REJECTED      = 0x42;
  1468 this.PDU_ST_2_NOT_OBTAINABLE           = 0x43;
  1469 this.PDU_ST_2_QOS_UNAVAILABLE          = 0x44;
  1470 this.PDU_ST_2_INTERWORKING_UNAVALIABLE = 0x45;
  1471 this.PDU_ST_2_VALIDITY_EXPIRED         = 0x46;
  1472 this.PDU_ST_2_DELETED_BY_SME           = 0x47;
  1473 this.PDU_ST_2_DELETED_BY_SC            = 0x48;
  1474 this.PDU_ST_2_SM_MISSING               = 0x49;
  1475 this.PDU_ST_2_RESERVED_BEGIN           = 0x4A;
  1476 this.PDU_ST_2_SC_SPECIFIC_BEGIN        = 0x50;
  1477 this.PDU_ST_2_SC_SPECIFIC_END          = 0x5F;
  1478 // Bit 7..0 = 011xxxxx, temporary error, SC is not making any more transfer
  1479 // attempts
  1480 this.PDU_ST_3_CONGESTION        = 0x60;
  1481 this.PDU_ST_3_SME_BUSY          = 0x61;
  1482 this.PDU_ST_3_SME_NO_RESPONSE   = 0x62;
  1483 this.PDU_ST_3_SERVICE_REJECTED  = 0x63;
  1484 this.PDU_ST_3_QOS_UNAVAILABLE   = 0x64;
  1485 this.PDU_ST_3_SME_ERROR         = 0x65;
  1486 this.PDU_ST_3_RESERVED_BEGIN    = 0x66;
  1487 this.PDU_ST_3_SC_SPECIFIC_BEGIN = 0x70;
  1488 this.PDU_ST_3_SC_SPECIFIC_END   = 0x7F;
  1490 this.GECKO_SMS_DELIVERY_STATUS_NOT_APPLICABLE = "not-applicable";
  1491 this.GECKO_SMS_DELIVERY_STATUS_SUCCESS        = "success";
  1492 this.GECKO_SMS_DELIVERY_STATUS_PENDING        = "pending";
  1493 this.GECKO_SMS_DELIVERY_STATUS_ERROR          = "error";
  1495 // User Data max length in septets
  1496 this.PDU_MAX_USER_DATA_7BIT = 160;
  1497 // User Data max length in octets
  1498 this.PDU_MAX_USER_DATA_8BIT = 140;
  1499 // User Data max length in chars
  1500 this.PDU_MAX_USER_DATA_UCS2 = 70;
  1502 // PID - Protocol Indicator
  1503 this.PDU_PID_DEFAULT                      = 0x00;
  1504 this.PDU_PID_TELEMATIC_INTERWORKING       = 0x20;
  1505 this.PDU_PID_SHORT_MESSAGE_TYPE_0         = 0x40;
  1506 this.PDU_PID_REPLACE_SHORT_MESSAGE_TYPE_1 = 0x41;
  1507 this.PDU_PID_REPLACE_SHORT_MESSAGE_TYPE_2 = 0x42;
  1508 this.PDU_PID_REPLACE_SHORT_MESSAGE_TYPE_3 = 0x43;
  1509 this.PDU_PID_REPLACE_SHORT_MESSAGE_TYPE_4 = 0x44;
  1510 this.PDU_PID_REPLACE_SHORT_MESSAGE_TYPE_5 = 0x45;
  1511 this.PDU_PID_REPLACE_SHORT_MESSAGE_TYPE_6 = 0x46;
  1512 this.PDU_PID_REPLACE_SHORT_MESSAGE_TYPE_7 = 0x47;
  1513 this.PDU_PID_ENHANDED_MESSAGE_SERVICE     = 0x5E;
  1514 this.PDU_PID_RETURN_CALL_MESSAGE          = 0x5F;
  1515 this.PDU_PID_ANSI_136_R_DATA              = 0x7C;
  1516 this.PDU_PID_ME_DATA_DOWNLOAD             = 0x7D;
  1517 this.PDU_PID_ME_DEPERSONALIZATION         = 0x7E;
  1518 this.PDU_PID_USIM_DATA_DOWNLOAD           = 0x7F;
  1520 // DCS - Data Coding Scheme
  1521 this.PDU_DCS_MSG_CODING_7BITS_ALPHABET  = 0x00;
  1522 this.PDU_DCS_MSG_CODING_8BITS_ALPHABET  = 0x04;
  1523 this.PDU_DCS_MSG_CODING_16BITS_ALPHABET = 0x08;
  1524 this.PDU_DCS_MSG_CLASS_NORMAL           = 0xFF;
  1525 this.PDU_DCS_MSG_CLASS_0                = 0x00;
  1526 this.PDU_DCS_MSG_CLASS_1                = 0x01;
  1527 this.PDU_DCS_MSG_CLASS_2                = 0x02;
  1528 this.PDU_DCS_MSG_CLASS_3                = 0x03;
  1529 this.PDU_DCS_MSG_CLASS_USER_1           = 0x04;
  1530 this.PDU_DCS_MSG_CLASS_USER_2           = 0x05;
  1531 this.PDU_DCS_CODING_GROUP_BITS          = 0xF0;
  1532 this.PDU_DCS_MSG_CLASS_BITS             = 0x03;
  1533 this.PDU_DCS_MWI_ACTIVE_BITS            = 0x08;
  1534 this.PDU_DCS_MWI_ACTIVE_VALUE           = 0x08;
  1535 this.PDU_DCS_MWI_TYPE_BITS              = 0x03;
  1536 this.PDU_DCS_MWI_TYPE_VOICEMAIL         = 0x00;
  1537 this.PDU_DCS_MWI_TYPE_FAX               = 0x01;
  1538 this.PDU_DCS_MWI_TYPE_EMAIL             = 0x02;
  1539 this.PDU_DCS_MWI_TYPE_OTHER             = 0x03;
  1541 this.GECKO_SMS_MESSAGE_CLASSES = {};
  1542 GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_NORMAL] = "normal";
  1543 GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_0]      = "class-0";
  1544 GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_1]      = "class-1";
  1545 GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_2]      = "class-2";
  1546 GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_3]      = "class-3";
  1547 GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_USER_1] = "user-1";
  1548 GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_USER_2] = "user-2";
  1550 // Because service center timestamp omit the century. Yay.
  1551 this.PDU_TIMESTAMP_YEAR_OFFSET = 2000;
  1553 // See 9.2.3.24 TP‑User Data (TP‑UD)
  1554 this.PDU_IEI_CONCATENATED_SHORT_MESSAGES_8BIT         = 0x00;
  1555 this.PDU_IEI_SPECIAL_SMS_MESSAGE_INDICATION           = 0x01;
  1556 this.PDU_IEI_APPLICATION_PORT_ADDRESSING_SCHEME_8BIT  = 0x04;
  1557 this.PDU_IEI_APPLICATION_PORT_ADDRESSING_SCHEME_16BIT = 0x05;
  1558 this.PDU_IEI_SMSC_CONTROL_PARAMS                      = 0x06;
  1559 this.PDU_IEI_UDH_SOURCE_INDICATOR                     = 0x07;
  1560 this.PDU_IEI_CONCATENATED_SHORT_MESSAGES_16BIT        = 0x08;
  1561 this.PDU_IEI_WIRELESS_CONTROL_MESSAGE_PROTOCOL        = 0x09;
  1562 this.PDU_IEI_TEXT_FORMATING                           = 0x0A;
  1563 this.PDU_IEI_PREDEFINED_SOUND                         = 0x0B;
  1564 this.PDU_IEI_USER_DATA_SOUND                          = 0x0C;
  1565 this.PDU_IEI_PREDEFINED_ANIMATION                     = 0x0D;
  1566 this.PDU_IEI_LARGE_ANIMATION                          = 0x0E;
  1567 this.PDU_IEI_SMALL_ANIMATION                          = 0x0F;
  1568 this.PDU_IEI_LARGE_PICTURE                            = 0x10;
  1569 this.PDU_IEI_SMALL_PICTURE                            = 0x11;
  1570 this.PDU_IEI_VARIABLE_PICTURE                         = 0x12;
  1571 this.PDU_IEI_USER_PROMPT_INDICATOR                    = 0x13;
  1572 this.PDU_IEI_EXTENDED_OBJECT                          = 0x14;
  1573 this.PDU_IEI_REUSED_EXTENDED_OBJECT                   = 0x15;
  1574 this.PDU_IEI_COMPRESS_CONTROL                         = 0x16;
  1575 this.PDU_IEI_OBJECT_DISTRIBUTION_INDICATOR            = 0x17;
  1576 this.PDU_IEI_STANDARD_WVG_OBJECT                      = 0x18;
  1577 this.PDU_IEI_CHARACTER_SIZE_WVG_OBJECT                = 0x19;
  1578 this.PDU_IEI_EXTENDED_OBJECT_DATA_REQUEST_COMMAND     = 0x1A;
  1579 this.PDU_IEI_RFC822_EMAIL_HEADER                      = 0x20;
  1580 this.PDU_IEI_HYPERLINK_FORMAT_ELEMENT                 = 0x21;
  1581 this.PDU_IEI_REPLY_ADDRESS_ELEMENT                    = 0x22;
  1582 this.PDU_IEI_ENHANCED_VOICE_MAIL_INFORMATION          = 0x23;
  1583 this.PDU_IEI_NATIONAL_LANGUAGE_SINGLE_SHIFT           = 0x24;
  1584 this.PDU_IEI_NATIONAL_LANGUAGE_LOCKING_SHIFT          = 0x25;
  1586 // Application Port Addressing, see 3GPP TS 23.040 9.2.3.24.3
  1587 this.PDU_APA_RESERVED_8BIT_PORTS = 240;
  1588 this.PDU_APA_VALID_16BIT_PORTS   = 49152;
  1590 // 7bit alphabet escape character. The encoded value of this code point is left
  1591 // undefined in official spec. Its code value is internally assigned to \uffff,
  1592 // <noncharacter-FFFF> in Unicode basic multilingual plane.
  1593 this.PDU_NL_EXTENDED_ESCAPE = 0x1B;
  1595 // <SP>, <LF>, <CR> are only defined in locking shift tables.
  1596 this.PDU_NL_SPACE = 0x20;
  1597 this.PDU_NL_LINE_FEED = 0x0A;
  1598 this.PDU_NL_CARRIAGE_RETURN = 0x0D;
  1600 // 7bit alphabet page break character, only defined in single shift tables.
  1601 // The encoded value of this code point is left undefined in official spec, but
  1602 // the code point itself maybe be used for example in compressed CBS messages.
  1603 // Its code value is internally assigned to \u000c, ASCII form feed, or new page.
  1604 this.PDU_NL_PAGE_BREAK = 0x0A;
  1605 // 7bit alphabet reserved control character, only defined in single shift
  1606 // tables. The encoded value of this code point is left undefined in official
  1607 // spec. Its code value is internally assigned to \ufffe, <noncharacter-FFFE>
  1608 // in Unicode basic multilingual plane.
  1609 this.PDU_NL_RESERVED_CONTROL = 0x0D;
  1611 this.PDU_NL_IDENTIFIER_DEFAULT    = 0;
  1612 this.PDU_NL_IDENTIFIER_TURKISH    = 1;
  1613 this.PDU_NL_IDENTIFIER_SPANISH    = 2;
  1614 this.PDU_NL_IDENTIFIER_PORTUGUESE = 3;
  1615 this.PDU_NL_IDENTIFIER_BENGALI    = 4;
  1616 this.PDU_NL_IDENTIFIER_GUJARATI   = 5;
  1617 this.PDU_NL_IDENTIFIER_HINDI      = 6;
  1618 this.PDU_NL_IDENTIFIER_KANNADA    = 7;
  1619 this.PDU_NL_IDENTIFIER_MALAYALAM  = 8;
  1620 this.PDU_NL_IDENTIFIER_ORIYA      = 9;
  1621 this.PDU_NL_IDENTIFIER_PUNJABI    = 10;
  1622 this.PDU_NL_IDENTIFIER_TAMIL      = 11;
  1623 this.PDU_NL_IDENTIFIER_TELUGU     = 12;
  1624 this.PDU_NL_IDENTIFIER_URDU       = 13;
  1626 // National Language Locking Shift Tables, see 3GPP TS 23.038
  1627 this.PDU_NL_LOCKING_SHIFT_TABLES = [
  1628   /**
  1629    * National Language Identifier: 0x00
  1630    * 6.2.1 GSM 7 bit Default Alphabet
  1631    */
  1632   // 01.....23.....4.....5.....6.....7.....8.....9.....A.B.....C.....D.E.....F.....
  1633     "@\u00a3$\u00a5\u00e8\u00e9\u00f9\u00ec\u00f2\u00c7\n\u00d8\u00f8\r\u00c5\u00e5"
  1634   // 0.....12.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1635   + "\u0394_\u03a6\u0393\u039b\u03a9\u03a0\u03a8\u03a3\u0398\u039e\uffff\u00c6\u00e6\u00df\u00c9"
  1636   // 012.34.....56789ABCDEF
  1637   + " !\"#\u00a4%&'()*+,-./"
  1638   // 0123456789ABCDEF
  1639   + "0123456789:;<=>?"
  1640   // 0.....123456789ABCDEF
  1641   + "\u00a1ABCDEFGHIJKLMNO"
  1642   // 0123456789AB.....C.....D.....E.....F.....
  1643   + "PQRSTUVWXYZ\u00c4\u00d6\u00d1\u00dc\u00a7"
  1644   // 0.....123456789ABCDEF
  1645   + "\u00bfabcdefghijklmno"
  1646   // 0123456789AB.....C.....D.....E.....F.....
  1647   + "pqrstuvwxyz\u00e4\u00f6\u00f1\u00fc\u00e0",
  1649   /**
  1650    * National Language Identifier: 0x01
  1651    * A.3.1 Turkish National Language Locking Shift Table
  1652    */
  1653   // 01.....23.....4.....5.....6.....7.....8.....9.....A.B.....C.....D.E.....F.....
  1654     "@\u00a3$\u00a5\u20ac\u00e9\u00f9\u0131\u00f2\u00c7\n\u011e\u011f\r\u00c5\u00e5"
  1655   // 0.....12.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1656   + "\u0394_\u03a6\u0393\u039b\u03a9\u03a0\u03a8\u03a3\u0398\u039e\uffff\u015e\u015f\u00df\u00c9"
  1657   // 012.34.....56789ABCDEF
  1658   + " !\"#\u00a4%&'()*+,-./"
  1659   // 0123456789ABCDEF
  1660   + "0123456789:;<=>?"
  1661   // 0.....123456789ABCDEF
  1662   + "\u0130ABCDEFGHIJKLMNO"
  1663   // 0123456789AB.....C.....D.....E.....F.....
  1664   + "PQRSTUVWXYZ\u00c4\u00d6\u00d1\u00dc\u00a7"
  1665   // 0.....123456789ABCDEF
  1666   + "\u00e7abcdefghijklmno"
  1667   // 0123456789AB.....C.....D.....E.....F.....
  1668   + "pqrstuvwxyz\u00e4\u00f6\u00f1\u00fc\u00e0",
  1670   /**
  1671    * National Language Identifier: 0x02
  1672    * A.3.2 Void
  1673    */
  1674   // 0123456789A.BCD.EF
  1675     "          \n  \r  "
  1676   // 0123456789AB.....CDEF
  1677   + "           \uffff    "
  1678   // 0123456789ABCDEF
  1679   + "                "
  1680   // 0123456789ABCDEF
  1681   + "                "
  1682   // 0123456789ABCDEF
  1683   + "                "
  1684   // 0123456789ABCDEF
  1685   + "                "
  1686   // 0123456789ABCDEF
  1687   + "                "
  1688   // 0123456789ABCDEF
  1689   + "                ",
  1691   /**
  1692    * National Language Identifier: 0x03
  1693    * A.3.3 Portuguese National Language Locking Shift Table
  1694    */
  1695   // 01.....23.....4.....5.....6.....7.....8.....9.....A.B.....C.....D.E.....F.....
  1696     "@\u00a3$\u00a5\u00ea\u00e9\u00fa\u00ed\u00f3\u00e7\n\u00d4\u00f4\r\u00c1\u00e1"
  1697   // 0.....12.....3.....4.....5.....67.8.....9.....AB.....C.....D.....E.....F.....
  1698   + "\u0394_\u00aa\u00c7\u00c0\u221e^\\\u20ac\u00d3|\uffff\u00c2\u00e2\u00ca\u00c9"
  1699   // 012.34.....56789ABCDEF
  1700   + " !\"#\u00ba%&'()*+,-./"
  1701   // 0123456789ABCDEF
  1702   + "0123456789:;<=>?"
  1703   // 0.....123456789ABCDEF
  1704   + "\u00cdABCDEFGHIJKLMNO"
  1705   // 0123456789AB.....C.....D.....E.....F.....
  1706   + "PQRSTUVWXYZ\u00c3\u00d5\u00da\u00dc\u00a7"
  1707   // 0123456789ABCDEF
  1708   + "~abcdefghijklmno"
  1709   // 0123456789AB.....C.....DE.....F.....
  1710   + "pqrstuvwxyz\u00e3\u00f5`\u00fc\u00e0",
  1712   /**
  1713    * National Language Identifier: 0x04
  1714    * A.3.4 Bengali National Language Locking Shift Table
  1715    */
  1716   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....CD.EF.....
  1717     "\u0981\u0982\u0983\u0985\u0986\u0987\u0988\u0989\u098a\u098b\n\u098c \r \u098f"
  1718   // 0.....123.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1719   + "\u0990  \u0993\u0994\u0995\u0996\u0997\u0998\u0999\u099a\uffff\u099b\u099c\u099d\u099e"
  1720   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1721   + " !\u099f\u09a0\u09a1\u09a2\u09a3\u09a4)(\u09a5\u09a6,\u09a7.\u09a8"
  1722   // 0123456789ABCD.....E.....F
  1723   + "0123456789:; \u09aa\u09ab?"
  1724   // 0.....1.....2.....3.....4.....56.....789A.....B.....C.....D.....E.....F.....
  1725   + "\u09ac\u09ad\u09ae\u09af\u09b0 \u09b2   \u09b6\u09b7\u09b8\u09b9\u09bc\u09bd"
  1726   // 0.....1.....2.....3.....4.....5.....6.....789.....A.....BCD.....E.....F.....
  1727   + "\u09be\u09bf\u09c0\u09c1\u09c2\u09c3\u09c4  \u09c7\u09c8  \u09cb\u09cc\u09cd"
  1728   // 0.....123456789ABCDEF
  1729   + "\u09ceabcdefghijklmno"
  1730   // 0123456789AB.....C.....D.....E.....F.....
  1731   + "pqrstuvwxyz\u09d7\u09dc\u09dd\u09f0\u09f1",
  1733   /**
  1734    * National Language Identifier: 0x05
  1735    * A.3.5 Gujarati National Language Locking Shift Table
  1736    */
  1737   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....C.....D.EF.....
  1738     "\u0a81\u0a82\u0a83\u0a85\u0a86\u0a87\u0a88\u0a89\u0a8a\u0a8b\n\u0a8c\u0a8d\r \u0a8f"
  1739   // 0.....1.....23.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1740   + "\u0a90\u0a91 \u0a93\u0a94\u0a95\u0a96\u0a97\u0a98\u0a99\u0a9a\uffff\u0a9b\u0a9c\u0a9d\u0a9e"
  1741   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1742   + " !\u0a9f\u0aa0\u0aa1\u0aa2\u0aa3\u0aa4)(\u0aa5\u0aa6,\u0aa7.\u0aa8"
  1743   // 0123456789ABCD.....E.....F
  1744   + "0123456789:; \u0aaa\u0aab?"
  1745   // 0.....1.....2.....3.....4.....56.....7.....89.....A.....B.....C.....D.....E.....F.....
  1746   + "\u0aac\u0aad\u0aae\u0aaf\u0ab0 \u0ab2\u0ab3 \u0ab5\u0ab6\u0ab7\u0ab8\u0ab9\u0abc\u0abd"
  1747   // 0.....1.....2.....3.....4.....5.....6.....7.....89.....A.....B.....CD.....E.....F.....
  1748   + "\u0abe\u0abf\u0ac0\u0ac1\u0ac2\u0ac3\u0ac4\u0ac5 \u0ac7\u0ac8\u0ac9 \u0acb\u0acc\u0acd"
  1749   // 0.....123456789ABCDEF
  1750   + "\u0ad0abcdefghijklmno"
  1751   // 0123456789AB.....C.....D.....E.....F.....
  1752   + "pqrstuvwxyz\u0ae0\u0ae1\u0ae2\u0ae3\u0af1",
  1754   /**
  1755    * National Language Identifier: 0x06
  1756    * A.3.6 Hindi National Language Locking Shift Table
  1757    */
  1758   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....C.....D.E.....F.....
  1759     "\u0901\u0902\u0903\u0905\u0906\u0907\u0908\u0909\u090a\u090b\n\u090c\u090d\r\u090e\u090f"
  1760   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1761   + "\u0910\u0911\u0912\u0913\u0914\u0915\u0916\u0917\u0918\u0919\u091a\uffff\u091b\u091c\u091d\u091e"
  1762   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1763   + " !\u091f\u0920\u0921\u0922\u0923\u0924)(\u0925\u0926,\u0927.\u0928"
  1764   // 0123456789ABC.....D.....E.....F
  1765   + "0123456789:;\u0929\u092a\u092b?"
  1766   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1767   + "\u092c\u092d\u092e\u092f\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u093c\u093d"
  1768   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1769   + "\u093e\u093f\u0940\u0941\u0942\u0943\u0944\u0945\u0946\u0947\u0948\u0949\u094a\u094b\u094c\u094d"
  1770   // 0.....123456789ABCDEF
  1771   + "\u0950abcdefghijklmno"
  1772   // 0123456789AB.....C.....D.....E.....F.....
  1773   + "pqrstuvwxyz\u0972\u097b\u097c\u097e\u097f",
  1775   /**
  1776    * National Language Identifier: 0x07
  1777    * A.3.7 Kannada National Language Locking Shift Table
  1778    */
  1779   // 01.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....CD.E.....F.....
  1780     " \u0c82\u0c83\u0c85\u0c86\u0c87\u0c88\u0c89\u0c8a\u0c8b\n\u0c8c \r\u0c8e\u0c8f"
  1781   // 0.....12.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1782   + "\u0c90 \u0c92\u0c93\u0c94\u0c95\u0c96\u0c97\u0c98\u0c99\u0c9a\uffff\u0c9b\u0c9c\u0c9d\u0c9e"
  1783   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1784   + " !\u0c9f\u0ca0\u0ca1\u0ca2\u0ca3\u0ca4)(\u0ca5\u0ca6,\u0ca7.\u0ca8"
  1785   // 0123456789ABCD.....E.....F
  1786   + "0123456789:; \u0caa\u0cab?"
  1787   // 0.....1.....2.....3.....4.....5.....6.....7.....89.....A.....B.....C.....D.....E.....F.....
  1788   + "\u0cac\u0cad\u0cae\u0caf\u0cb0\u0cb1\u0cb2\u0cb3 \u0cb5\u0cb6\u0cb7\u0cb8\u0cb9\u0cbc\u0cbd"
  1789   // 0.....1.....2.....3.....4.....5.....6.....78.....9.....A.....BC.....D.....E.....F.....
  1790   + "\u0cbe\u0cbf\u0cc0\u0cc1\u0cc2\u0cc3\u0cc4 \u0cc6\u0cc7\u0cc8 \u0cca\u0ccb\u0ccc\u0ccd"
  1791   // 0.....123456789ABCDEF
  1792   + "\u0cd5abcdefghijklmno"
  1793   // 0123456789AB.....C.....D.....E.....F.....
  1794   + "pqrstuvwxyz\u0cd6\u0ce0\u0ce1\u0ce2\u0ce3",
  1796   /**
  1797    * National Language Identifier: 0x08
  1798    * A.3.8 Malayalam National Language Locking Shift Table
  1799    */
  1800   // 01.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....CD.E.....F.....
  1801     " \u0d02\u0d03\u0d05\u0d06\u0d07\u0d08\u0d09\u0d0a\u0d0b\n\u0d0c \r\u0d0e\u0d0f"
  1802   // 0.....12.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1803   + "\u0d10 \u0d12\u0d13\u0d14\u0d15\u0d16\u0d17\u0d18\u0d19\u0d1a\uffff\u0d1b\u0d1c\u0d1d\u0d1e"
  1804   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1805   + " !\u0d1f\u0d20\u0d21\u0d22\u0d23\u0d24)(\u0d25\u0d26,\u0d27.\u0d28"
  1806   // 0123456789ABCD.....E.....F
  1807   + "0123456789:; \u0d2a\u0d2b?"
  1808   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....EF.....
  1809   + "\u0d2c\u0d2d\u0d2e\u0d2f\u0d30\u0d31\u0d32\u0d33\u0d34\u0d35\u0d36\u0d37\u0d38\u0d39 \u0d3d"
  1810   // 0.....1.....2.....3.....4.....5.....6.....78.....9.....A.....BC.....D.....E.....F.....
  1811   + "\u0d3e\u0d3f\u0d40\u0d41\u0d42\u0d43\u0d44 \u0d46\u0d47\u0d48 \u0d4a\u0d4b\u0d4c\u0d4d"
  1812   // 0.....123456789ABCDEF
  1813   + "\u0d57abcdefghijklmno"
  1814   // 0123456789AB.....C.....D.....E.....F.....
  1815   + "pqrstuvwxyz\u0d60\u0d61\u0d62\u0d63\u0d79",
  1817   /**
  1818    * National Language Identifier: 0x09
  1819    * A.3.9 Oriya National Language Locking Shift Table
  1820    */
  1821   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....CD.EF.....
  1822     "\u0b01\u0b02\u0b03\u0b05\u0b06\u0b07\u0b08\u0b09\u0b0a\u0b0b\n\u0b0c \r \u0b0f"
  1823   // 0.....123.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1824   + "\u0b10  \u0b13\u0b14\u0b15\u0b16\u0b17\u0b18\u0b19\u0b1a\uffff\u0b1b\u0b1c\u0b1d\u0b1e"
  1825   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1826   + " !\u0b1f\u0b20\u0b21\u0b22\u0b23\u0b24)(\u0b25\u0b26,\u0b27.\u0b28"
  1827   // 0123456789ABCD.....E.....F
  1828   + "0123456789:; \u0b2a\u0b2b?"
  1829   // 0.....1.....2.....3.....4.....56.....7.....89.....A.....B.....C.....D.....E.....F.....
  1830   + "\u0b2c\u0b2d\u0b2e\u0b2f\u0b30 \u0b32\u0b33 \u0b35\u0b36\u0b37\u0b38\u0b39\u0b3c\u0b3d"
  1831   // 0.....1.....2.....3.....4.....5.....6.....789.....A.....BCD.....E.....F.....
  1832   + "\u0b3e\u0b3f\u0b40\u0b41\u0b42\u0b43\u0b44  \u0b47\u0b48  \u0b4b\u0b4c\u0b4d"
  1833   // 0.....123456789ABCDEF
  1834   + "\u0b56abcdefghijklmno"
  1835   // 0123456789AB.....C.....D.....E.....F.....
  1836   + "pqrstuvwxyz\u0b57\u0b60\u0b61\u0b62\u0b63",
  1838   /**
  1839    * National Language Identifier: 0x0A
  1840    * A.3.10 Punjabi National Language Locking Shift Table
  1841    */
  1842   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9A.BCD.EF.....
  1843     "\u0a01\u0a02\u0a03\u0a05\u0a06\u0a07\u0a08\u0a09\u0a0a \n  \r \u0a0f"
  1844   // 0.....123.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1845   + "\u0a10  \u0a13\u0a14\u0a15\u0a16\u0a17\u0a18\u0a19\u0a1a\uffff\u0a1b\u0a1c\u0a1d\u0a1e"
  1846   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1847   + " !\u0a1f\u0a20\u0a21\u0a22\u0a23\u0a24)(\u0a25\u0a26,\u0a27.\u0a28"
  1848   // 0123456789ABCD.....E.....F
  1849   + "0123456789:; \u0a2a\u0a2b?"
  1850   // 0.....1.....2.....3.....4.....56.....7.....89.....A.....BC.....D.....E.....F
  1851   + "\u0a2c\u0a2d\u0a2e\u0a2f\u0a30 \u0a32\u0a33 \u0a35\u0a36 \u0a38\u0a39\u0a3c "
  1852   // 0.....1.....2.....3.....4.....56789.....A.....BCD.....E.....F.....
  1853   + "\u0a3e\u0a3f\u0a40\u0a41\u0a42    \u0a47\u0a48  \u0a4b\u0a4c\u0a4d"
  1854   // 0.....123456789ABCDEF
  1855   + "\u0a51abcdefghijklmno"
  1856   // 0123456789AB.....C.....D.....E.....F.....
  1857   + "pqrstuvwxyz\u0a70\u0a71\u0a72\u0a73\u0a74",
  1859   /**
  1860    * National Language Identifier: 0x0B
  1861    * A.3.11 Tamil National Language Locking Shift Table
  1862    */
  1863   // 01.....2.....3.....4.....5.....6.....7.....8.....9A.BCD.E.....F.....
  1864     " \u0b82\u0b83\u0b85\u0b86\u0b87\u0b88\u0b89\u0b8a \n  \r\u0b8e\u0b8f"
  1865   // 0.....12.....3.....4.....5.....6789.....A.....B.....CD.....EF.....
  1866   + "\u0b90 \u0b92\u0b93\u0b94\u0b95   \u0b99\u0b9a\uffff \u0b9c \u0b9e"
  1867   // 012.....3456.....7.....89ABCDEF.....
  1868   + " !\u0b9f   \u0ba3\u0ba4)(  , .\u0ba8"
  1869   // 0123456789ABC.....D.....EF
  1870   + "0123456789:;\u0ba9\u0baa ?"
  1871   // 012.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....EF
  1872   + "  \u0bae\u0baf\u0bb0\u0bb1\u0bb2\u0bb3\u0bb4\u0bb5\u0bb6\u0bb7\u0bb8\u0bb9  "
  1873   // 0.....1.....2.....3.....4.....5678.....9.....A.....BC.....D.....E.....F.....
  1874   + "\u0bbe\u0bbf\u0bc0\u0bc1\u0bc2   \u0bc6\u0bc7\u0bc8 \u0bca\u0bcb\u0bcc\u0bcd"
  1875   // 0.....123456789ABCDEF
  1876   + "\u0bd0abcdefghijklmno"
  1877   // 0123456789AB.....C.....D.....E.....F.....
  1878   + "pqrstuvwxyz\u0bd7\u0bf0\u0bf1\u0bf2\u0bf9",
  1880   /**
  1881    * National Language Identifier: 0x0C
  1882    * A.3.12 Telugu National Language Locking Shift Table
  1883    */
  1884   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....CD.E.....F.....
  1885     "\u0c01\u0c02\u0c03\u0c05\u0c06\u0c07\u0c08\u0c09\u0c0a\u0c0b\n\u0c0c \r\u0c0e\u0c0f"
  1886   // 0.....12.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1887   + "\u0c10 \u0c12\u0c13\u0c14\u0c15\u0c16\u0c17\u0c18\u0c19\u0c1a\uffff\u0c1b\u0c1c\u0c1d\u0c1e"
  1888   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1889   + " !\u0c1f\u0c20\u0c21\u0c22\u0c23\u0c24)(\u0c25\u0c26,\u0c27.\u0c28"
  1890   // 0123456789ABCD.....E.....F
  1891   + "0123456789:; \u0c2a\u0c2b?"
  1892   // 0.....1.....2.....3.....4.....5.....6.....7.....89.....A.....B.....C.....D.....EF.....
  1893   + "\u0c2c\u0c2d\u0c2e\u0c2f\u0c30\u0c31\u0c32\u0c33 \u0c35\u0c36\u0c37\u0c38\u0c39 \u0c3d"
  1894   // 0.....1.....2.....3.....4.....5.....6.....78.....9.....A.....BC.....D.....E.....F.....
  1895   + "\u0c3e\u0c3f\u0c40\u0c41\u0c42\u0c43\u0c44 \u0c46\u0c47\u0c48 \u0c4a\u0c4b\u0c4c\u0c4d"
  1896   // 0.....123456789ABCDEF
  1897   + "\u0c55abcdefghijklmno"
  1898   // 0123456789AB.....C.....D.....E.....F.....
  1899   + "pqrstuvwxyz\u0c56\u0c60\u0c61\u0c62\u0c63",
  1901   /**
  1902    * National Language Identifier: 0x0D
  1903    * A.3.13 Urdu National Language Locking Shift Table
  1904    */
  1905   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.B.....C.....D.E.....F.....
  1906     "\u0627\u0622\u0628\u067b\u0680\u067e\u06a6\u062a\u06c2\u067f\n\u0679\u067d\r\u067a\u067c"
  1907   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1908   + "\u062b\u062c\u0681\u0684\u0683\u0685\u0686\u0687\u062d\u062e\u062f\uffff\u068c\u0688\u0689\u068a"
  1909   // 012.....3.....4.....5.....6.....7.....89A.....B.....CD.....EF.....
  1910   + " !\u068f\u068d\u0630\u0631\u0691\u0693)(\u0699\u0632,\u0696.\u0698"
  1911   // 0123456789ABC.....D.....E.....F
  1912   + "0123456789:;\u069a\u0633\u0634?"
  1913   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1914   + "\u0635\u0636\u0637\u0638\u0639\u0641\u0642\u06a9\u06aa\u06ab\u06af\u06b3\u06b1\u0644\u0645\u0646"
  1915   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....C.....D.....E.....F.....
  1916   + "\u06ba\u06bb\u06bc\u0648\u06c4\u06d5\u06c1\u06be\u0621\u06cc\u06d0\u06d2\u064d\u0650\u064f\u0657"
  1917   // 0.....123456789ABCDEF
  1918   + "\u0654abcdefghijklmno"
  1919   // 0123456789AB.....C.....D.....E.....F.....
  1920   + "pqrstuvwxyz\u0655\u0651\u0653\u0656\u0670"
  1921 ];
  1923 // National Language Single Shift Tables, see 3GPP TS 23.038
  1924 this.PDU_NL_SINGLE_SHIFT_TABLES = [
  1925   /**
  1926    * National Language Identifier: 0x00
  1927    * 6.2.1.1 GSM 7 bit default alphabet extension table
  1928    */
  1929   // 0123456789A.....BCD.....EF
  1930     "          \u000c  \ufffe  "
  1931   // 0123456789AB.....CDEF
  1932   + "    ^      \uffff    "
  1933   // 0123456789ABCDEF.
  1934   + "        {}     \\"
  1935   // 0123456789ABCDEF
  1936   + "            [~] "
  1937   // 0123456789ABCDEF
  1938   + "|               "
  1939   // 0123456789ABCDEF
  1940   + "                "
  1941   // 012345.....6789ABCDEF
  1942   + "     \u20ac          "
  1943   // 0123456789ABCDEF
  1944   + "                ",
  1946   /**
  1947    * National Language Identifier: 0x01
  1948    * A.2.1 Turkish National Language Single Shift Table
  1949    */
  1950   // 0123456789A.....BCD.....EF
  1951     "          \u000c  \ufffe  "
  1952   // 0123456789AB.....CDEF
  1953   + "    ^      \uffff    "
  1954   // 0123456789ABCDEF.
  1955   + "        {}     \\"
  1956   // 0123456789ABCDEF
  1957   + "            [~] "
  1958   // 01234567.....89.....ABCDEF
  1959   + "|      \u011e \u0130      "
  1960   // 0123.....456789ABCDEF
  1961   + "   \u015e            "
  1962   // 0123.....45.....67.....89.....ABCDEF
  1963   + "   \u00e7 \u20ac \u011f \u0131      "
  1964   // 0123.....456789ABCDEF
  1965   + "   \u015f            ",
  1967   /**
  1968    * National Language Identifier: 0x02
  1969    * A.2.2 Spanish National Language Single Shift Table
  1970    */
  1971   // 0123456789.....A.....BCD.....EF
  1972     "         \u00e7\u000c  \ufffe  "
  1973   // 0123456789AB.....CDEF
  1974   + "    ^      \uffff    "
  1975   // 0123456789ABCDEF.
  1976   + "        {}     \\"
  1977   // 0123456789ABCDEF
  1978   + "            [~] "
  1979   // 01.....23456789.....ABCDEF.....
  1980   + "|\u00c1       \u00cd     \u00d3"
  1981   // 012345.....6789ABCDEF
  1982   + "     \u00da          "
  1983   // 01.....2345.....6789.....ABCDEF.....
  1984   + " \u00e1   \u20ac   \u00ed     \u00f3"
  1985   // 012345.....6789ABCDEF
  1986   + "     \u00fa          ",
  1988   /**
  1989    * National Language Identifier: 0x03
  1990    * A.2.3 Portuguese National Language Single Shift Table
  1991    */
  1992   // 012345.....6789.....A.....B.....C.....D.....E.....F.....
  1993     "     \u00ea   \u00e7\u000c\u00d4\u00f4\ufffe\u00c1\u00e1"
  1994   // 012.....3.....45.....6.....7.....8.....9.....AB.....CDEF.....
  1995   + "  \u03a6\u0393^\u03a9\u03a0\u03a8\u03a3\u0398 \uffff   \u00ca"
  1996   // 0123456789ABCDEF.
  1997   + "        {}     \\"
  1998   // 0123456789ABCDEF
  1999   + "            [~] "
  2000   // 01.....23456789.....ABCDEF.....
  2001   + "|\u00c0       \u00cd     \u00d3"
  2002   // 012345.....6789AB.....C.....DEF
  2003   + "     \u00da     \u00c3\u00d5   "
  2004   // 01.....2345.....6789.....ABCDEF.....
  2005   + " \u00c2   \u20ac   \u00ed     \u00f3"
  2006   // 012345.....6789AB.....C.....DEF.....
  2007   + "     \u00fa     \u00e3\u00f5  \u00e2",
  2009   /**
  2010    * National Language Identifier: 0x04
  2011    * A.2.4 Bengali National Language Single Shift Table
  2012    */
  2013   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2014     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2015   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2016   + "<=>\u00a1^\u00a1_#*\u09e6\u09e7\uffff\u09e8\u09e9\u09ea\u09eb"
  2017   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....D.....E.....F.
  2018   + "\u09ec\u09ed\u09ee\u09ef\u09df\u09e0\u09e1\u09e2{}\u09e3\u09f2\u09f3\u09f4\u09f5\\"
  2019   // 0.....1.....2.....3.....4.....56789ABCDEF
  2020   + "\u09f6\u09f7\u09f8\u09f9\u09fa       [~] "
  2021   // 0123456789ABCDEF
  2022   + "|ABCDEFGHIJKLMNO"
  2023   // 0123456789ABCDEF
  2024   + "PQRSTUVWXYZ     "
  2025   // 012345.....6789ABCDEF
  2026   + "     \u20ac          "
  2027   // 0123456789ABCDEF
  2028   + "                ",
  2030   /**
  2031    * National Language Identifier: 0x05
  2032    * A.2.5 Gujarati National Language Single Shift Table
  2033    */
  2034   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2035     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2036   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2037   + "<=>\u00a1^\u00a1_#*\u0964\u0965\uffff\u0ae6\u0ae7\u0ae8\u0ae9"
  2038   // 0.....1.....2.....3.....4.....5.....6789ABCDEF.
  2039   + "\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef  {}     \\"
  2040   // 0123456789ABCDEF
  2041   + "            [~] "
  2042   // 0123456789ABCDEF
  2043   + "|ABCDEFGHIJKLMNO"
  2044   // 0123456789ABCDEF
  2045   + "PQRSTUVWXYZ     "
  2046   // 012345.....6789ABCDEF
  2047   + "     \u20ac          "
  2048   // 0123456789ABCDEF
  2049   + "                ",
  2051   /**
  2052    * National Language Identifier: 0x06
  2053    * A.2.6 Hindi National Language Single Shift Table
  2054    */
  2055   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2056     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2057   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2058   + "<=>\u00a1^\u00a1_#*\u0964\u0965\uffff\u0966\u0967\u0968\u0969"
  2059   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....D.....E.....F.
  2060   + "\u096a\u096b\u096c\u096d\u096e\u096f\u0951\u0952{}\u0953\u0954\u0958\u0959\u095a\\"
  2061   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....BCDEF
  2062   + "\u095b\u095c\u095d\u095e\u095f\u0960\u0961\u0962\u0963\u0970\u0971 [~] "
  2063   // 0123456789ABCDEF
  2064   + "|ABCDEFGHIJKLMNO"
  2065   // 0123456789ABCDEF
  2066   + "PQRSTUVWXYZ     "
  2067   // 012345.....6789ABCDEF
  2068   + "     \u20ac          "
  2069   // 0123456789ABCDEF
  2070   + "                ",
  2072   /**
  2073    * National Language Identifier: 0x07
  2074    * A.2.7 Kannada National Language Single Shift Table
  2075    */
  2076   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2077     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2078   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2079   + "<=>\u00a1^\u00a1_#*\u0964\u0965\uffff\u0ce6\u0ce7\u0ce8\u0ce9"
  2080   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....BCDEF.
  2081   + "\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0cde\u0cf1{}\u0cf2    \\"
  2082   // 0123456789ABCDEF
  2083   + "            [~] "
  2084   // 0123456789ABCDEF
  2085   + "|ABCDEFGHIJKLMNO"
  2086   // 0123456789ABCDEF
  2087   + "PQRSTUVWXYZ     "
  2088   // 012345.....6789ABCDEF
  2089   + "     \u20ac          "
  2090   // 0123456789ABCDEF
  2091   + "                ",
  2093   /**
  2094    * National Language Identifier: 0x08
  2095    * A.2.8 Malayalam National Language Single Shift Table
  2096    */
  2097   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2098     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2099   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2100   + "<=>\u00a1^\u00a1_#*\u0964\u0965\uffff\u0d66\u0d67\u0d68\u0d69"
  2101   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....D.....E.....F.
  2102   + "\u0d6a\u0d6b\u0d6c\u0d6d\u0d6e\u0d6f\u0d70\u0d71{}\u0d72\u0d73\u0d74\u0d75\u0d7a\\"
  2103   // 0.....1.....2.....3.....4.....56789ABCDEF
  2104   + "\u0d7b\u0d7c\u0d7d\u0d7e\u0d7f       [~] "
  2105   // 0123456789ABCDEF
  2106   + "|ABCDEFGHIJKLMNO"
  2107   // 0123456789ABCDEF
  2108   + "PQRSTUVWXYZ     "
  2109   // 012345.....6789ABCDEF
  2110   + "     \u20ac          "
  2111   // 0123456789ABCDEF
  2112   + "                ",
  2114   /**
  2115    * National Language Identifier: 0x09
  2116    * A.2.9 Oriya National Language Single Shift Table
  2117    */
  2118   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2119     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2120   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2121   + "<=>\u00a1^\u00a1_#*\u0964\u0965\uffff\u0b66\u0b67\u0b68\u0b69"
  2122   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....DEF.
  2123   + "\u0b6a\u0b6b\u0b6c\u0b6d\u0b6e\u0b6f\u0b5c\u0b5d{}\u0b5f\u0b70\u0b71  \\"
  2124   // 0123456789ABCDEF
  2125   + "            [~] "
  2126   // 0123456789ABCDEF
  2127   + "|ABCDEFGHIJKLMNO"
  2128   // 0123456789ABCDEF
  2129   + "PQRSTUVWXYZ     "
  2130   // 012345.....6789ABCDEF
  2131   + "     \u20ac          "
  2132   // 0123456789ABCDEF
  2133   + "                ",
  2135   /**
  2136    * National Language Identifier: 0x0A
  2137    * A.2.10 Punjabi National Language Single Shift Table
  2138    */
  2139   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2140     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2141   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2142   + "<=>\u00a1^\u00a1_#*\u0964\u0965\uffff\u0a66\u0a67\u0a68\u0a69"
  2143   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....D.....EF.
  2144   + "\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a59\u0a5a{}\u0a5b\u0a5c\u0a5e\u0a75 \\"
  2145   // 0123456789ABCDEF
  2146   + "            [~] "
  2147   // 0123456789ABCDEF
  2148   + "|ABCDEFGHIJKLMNO"
  2149   // 0123456789ABCDEF
  2150   + "PQRSTUVWXYZ     "
  2151   // 012345.....6789ABCDEF
  2152   + "     \u20ac          "
  2153   // 0123456789ABCDEF
  2154   + "                ",
  2156   /**
  2157    * National Language Identifier: 0x0B
  2158    * A.2.11 Tamil National Language Single Shift Table
  2159    */
  2160   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2161     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2162   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2163   + "<=>\u00a1^\u00a1_#*\u0964\u0965\uffff\u0be6\u0be7\u0be8\u0be9"
  2164   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....D.....E.....F.
  2165   + "\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0bf3\u0bf4{}\u0bf5\u0bf6\u0bf7\u0bf8\u0bfa\\"
  2166   // 0123456789ABCDEF
  2167   + "            [~] "
  2168   // 0123456789ABCDEF
  2169   + "|ABCDEFGHIJKLMNO"
  2170   // 0123456789ABCDEF
  2171   + "PQRSTUVWXYZ     "
  2172   // 012345.....6789ABCDEF
  2173   + "     \u20ac          "
  2174   // 0123456789ABCDEF
  2175   + "                ",
  2177   /**
  2178    * National Language Identifier: 0x0C
  2179    * A.2.12 Telugu National Language Single Shift Table
  2180    */
  2181   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2182     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2183   // 0123.....45.....6789AB.....C.....D.....E.....F.....
  2184   + "<=>\u00a1^\u00a1_#*  \uffff\u0c66\u0c67\u0c68\u0c69"
  2185   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....D.....E.....F.
  2186   + "\u0c6a\u0c6b\u0c6c\u0c6d\u0c6e\u0c6f\u0c58\u0c59{}\u0c78\u0c79\u0c7a\u0c7b\u0c7c\\"
  2187   // 0.....1.....2.....3456789ABCDEF
  2188   + "\u0c7d\u0c7e\u0c7f         [~] "
  2189   // 0123456789ABCDEF
  2190   + "|ABCDEFGHIJKLMNO"
  2191   // 0123456789ABCDEF
  2192   + "PQRSTUVWXYZ     "
  2193   // 012345.....6789ABCDEF
  2194   + "     \u20ac          "
  2195   // 0123456789ABCDEF
  2196   + "                ",
  2198   /**
  2199    * National Language Identifier: 0x0D
  2200    * A.2.13 Urdu National Language Single Shift Table
  2201    */
  2202   // 01.....23.....4.....5.6.....789A.....BCD.....EF
  2203     "@\u00a3$\u00a5\u00bf\"\u00a4%&'\u000c*+\ufffe-/"
  2204   // 0123.....45.....6789.....A.....B.....C.....D.....E.....F.....
  2205   + "<=>\u00a1^\u00a1_#*\u0600\u0601\uffff\u06f0\u06f1\u06f2\u06f3"
  2206   // 0.....1.....2.....3.....4.....5.....6.....7.....89A.....B.....C.....D.....E.....F.
  2207   + "\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9\u060c\u060d{}\u060e\u060f\u0610\u0611\u0612\\"
  2208   // 0.....1.....2.....3.....4.....5.....6.....7.....8.....9.....A.....B.....CDEF.....
  2209   + "\u0613\u0614\u061b\u061f\u0640\u0652\u0658\u066b\u066c\u0672\u0673\u06cd[~]\u06d4"
  2210   // 0123456789ABCDEF
  2211   + "|ABCDEFGHIJKLMNO"
  2212   // 0123456789ABCDEF
  2213   + "PQRSTUVWXYZ     "
  2214   // 012345.....6789ABCDEF
  2215   + "     \u20ac          "
  2216   // 0123456789ABCDEF
  2217   + "                "
  2218 ];
  2220 // Special SMS Message Indication constants
  2221 this.PDU_MWI_STORE_TYPE_BIT     = 0x80;
  2222 this.PDU_MWI_STORE_TYPE_DISCARD = 0x00;
  2223 this.PDU_MWI_STORE_TYPE_STORE   = 0x80;
  2225 this.GSM_SMS_STRICT_7BIT_CHARMAP = {
  2226 //"\u0024": "\u0024", // "$" => "$", already in default alphabet
  2227 //"\u00a5": "\u00a5", // "¥" => "¥", already in default alphabet
  2228   "\u00c0": "\u0041", // "À" => "A"
  2229   "\u00c1": "\u0041", // "Á" => "A"
  2230   "\u00c2": "\u0041", // "Â" => "A"
  2231   "\u00c3": "\u0041", // "Ã" => "A"
  2232 //"\u00c4": "\u00c4", // "Ä" => "Ä", already in default alphabet
  2233 //"\u00c5": "\u00c5", // "Å" => "Å", already in default alphabet
  2234 //"\u00c6": "\u00c6", // "Æ" => "Æ", already in default alphabet
  2235 //"\u00c7": "\u00c7", // "Ç" => "Ç", already in default alphabet
  2236   "\u00c8": "\u0045", // "È" => "E"
  2237 //"\u00c9": "\u00c9", // "É" => "É", already in default alphabet
  2238   "\u00ca": "\u0045", // "Ê" => "E"
  2239   "\u00cb": "\u0045", // "Ë" => "E"
  2240   "\u00cc": "\u0049", // "Ì" => "I"
  2241   "\u00cd": "\u0049", // "Í" => "I"
  2242   "\u00ce": "\u0049", // "Î" => "I"
  2243   "\u00cf": "\u0049", // "Ï" => "I"
  2244 //"\u00d1": "\u00d1", // "Ñ" => "Ñ", already in default alphabet
  2245   "\u00d2": "\u004f", // "Ò" => "O"
  2246   "\u00d3": "\u004f", // "Ó" => "O"
  2247   "\u00d4": "\u004f", // "Ô" => "O"
  2248   "\u00d5": "\u004f", // "Õ" => "O"
  2249 //"\u00d6": "\u00d6", // "Ö" => "Ö", already in default alphabet
  2250   "\u00d9": "\u0055", // "Ù" => "U"
  2251   "\u00da": "\u0055", // "Ú" => "U"
  2252   "\u00db": "\u0055", // "Û" => "U"
  2253 //"\u00dc": "\u00dc", // "Ü" => "Ü", already in default alphabet
  2254 //"\u00df": "\u00df", // "ß" => "ß", already in default alphabet
  2255 //"\u00e0": "\u00e0", // "à" => "à", already in default alphabet
  2256   "\u00e1": "\u0061", // "á" => "a"
  2257   "\u00e2": "\u0061", // "â" => "a"
  2258   "\u00e3": "\u0061", // "ã" => "a"
  2259 //"\u00e4": "\u00e4", // "ä" => "ä", already in default alphabet
  2260 //"\u00e5": "\u00e5", // "å" => "å", already in default alphabet
  2261 //"\u00e6": "\u00e6", // "æ" => "æ", already in default alphabet
  2262   "\u00e7": "\u00c7", // "ç" => "Ç"
  2263 //"\u00e8": "\u00e8", // "è" => "è", already in default alphabet
  2264 //"\u00e9": "\u00e9", // "é" => "é", already in default alphabet
  2265   "\u00ea": "\u0065", // "ê" => "e"
  2266   "\u00eb": "\u0065", // "ë" => "e"
  2267 //"\u00ec": "\u00ec", // "ì" => "ì", already in default alphabet
  2268   "\u00ed": "\u0069", // "í" => "i"
  2269   "\u00ee": "\u0069", // "î" => "i"
  2270   "\u00ef": "\u0069", // "ï" => "i"
  2271 //"\u00f1": "\u00f1", // "ñ" => "ñ", already in default alphabet
  2272 //"\u00f2": "\u00f2", // "ò" => "ò", already in default alphabet
  2273   "\u00f3": "\u006f", // "ó" => "o"
  2274   "\u00f4": "\u006f", // "ô" => "o"
  2275   "\u00f5": "\u006f", // "õ" => "o"
  2276 //"\u00f6": "\u00f6", // "ö" => "ö", already in default alphabet
  2277 //"\u00f8": "\u00f8", // "ø" => "ø", already in default alphabet
  2278 //"\u00f9": "\u00f9", // "ù" => "ù", already in default alphabet
  2279   "\u00fa": "\u0075", // "ú" => "u"
  2280   "\u00fb": "\u0075", // "û" => "u"
  2281 //"\u00fc": "\u00fc", // "ü" => "ü", already in default alphabet
  2282   "\u00fe": "\u0074", // "þ" => "t"
  2283   "\u0100": "\u0041", // "Ā" => "A"
  2284   "\u0101": "\u0061", // "ā" => "a"
  2285   "\u0106": "\u0043", // "Ć" => "C"
  2286   "\u0107": "\u0063", // "ć" => "c"
  2287   "\u010c": "\u0043", // "Č" => "C"
  2288   "\u010d": "\u0063", // "č" => "c"
  2289   "\u010f": "\u0064", // "ď" => "d"
  2290   "\u0110": "\u0044", // "Đ" => "D"
  2291   "\u0111": "\u0064", // "đ" => "d"
  2292   "\u0112": "\u0045", // "Ē" => "E"
  2293   "\u0113": "\u0065", // "ē" => "e"
  2294   "\u0118": "\u0045", // "Ę" => "E"
  2295   "\u0119": "\u0065", // "ę" => "e"
  2296   "\u0128": "\u0049", // "Ĩ" => "I"
  2297   "\u0129": "\u0069", // "ĩ" => "i"
  2298   "\u012a": "\u0049", // "Ī" => "I"
  2299   "\u012b": "\u0069", // "ī" => "i"
  2300   "\u012e": "\u0049", // "Į" => "I"
  2301   "\u012f": "\u0069", // "į" => "i"
  2302   "\u0141": "\u004c", // "Ł" => "L"
  2303   "\u0142": "\u006c", // "ł" => "l"
  2304   "\u0143": "\u004e", // "Ń" => "N"
  2305   "\u0144": "\u006e", // "ń" => "n"
  2306   "\u0147": "\u004e", // "Ň" => "N"
  2307   "\u0148": "\u006e", // "ň" => "n"
  2308   "\u014c": "\u004f", // "Ō" => "O"
  2309   "\u014d": "\u006f", // "ō" => "o"
  2310   "\u0152": "\u004f", // "Œ" => "O"
  2311   "\u0153": "\u006f", // "œ" => "o"
  2312   "\u0158": "\u0052", // "Ř" => "R"
  2313   "\u0159": "\u0072", // "ř" => "r"
  2314   "\u0160": "\u0053", // "Š" => "S"
  2315   "\u0161": "\u0073", // "š" => "s"
  2316   "\u0165": "\u0074", // "ť" => "t"
  2317   "\u0168": "\u0055", // "Ū" => "U"
  2318   "\u0169": "\u0075", // "ū" => "u"
  2319   "\u016a": "\u0055", // "Ū" => "U"
  2320   "\u016b": "\u0075", // "ū" => "u"
  2321   "\u0178": "\u0059", // "Ÿ" => "Y"
  2322   "\u0179": "\u005a", // "Ź" => "Z"
  2323   "\u017a": "\u007a", // "ź" => "z"
  2324   "\u017b": "\u005a", // "Ż" => "Z"
  2325   "\u017c": "\u007a", // "ż" => "z"
  2326   "\u017d": "\u005a", // "Ž" => "Z"
  2327   "\u017e": "\u007a", // "ž" => "z"
  2328   "\u025b": "\u0045", // "ɛ" => "E"
  2329 //"\u0398": "\u0398", // "Θ" => "Θ", already in default alphabet
  2330   "\u1e7c": "\u0056", // "Ṽ" => "V"
  2331   "\u1e7d": "\u0076", // "ṽ" => "v"
  2332   "\u1ebc": "\u0045", // "Ẽ" => "E"
  2333   "\u1ebd": "\u0065", // "ẽ" => "e"
  2334   "\u1ef8": "\u0059", // "Ỹ" => "Y"
  2335   "\u1ef9": "\u0079", // "ỹ" => "y"
  2336   "\u20a4": "\u00a3", // "₤" => "£"
  2337 //"\u20ac": "\u20ac", // "€" => "€", already in default alphabet
  2338 };
  2340 this.RADIOTECH_FAMILY_3GPP = 1;  // GSM, WCDMA, LTE
  2341 this.RADIOTECH_FAMILY_3GPP2 = 2; // CDMA, EVDO
  2343 this.DATACALL_RADIOTECHNOLOGY_CDMA = 0;
  2344 this.DATACALL_RADIOTECHNOLOGY_GSM = 1;
  2346 this.DATACALL_AUTH_NONE = 0;
  2347 this.DATACALL_AUTH_PAP = 1;
  2348 this.DATACALL_AUTH_CHAP = 2;
  2349 this.DATACALL_AUTH_PAP_OR_CHAP = 3;
  2351 this.GECKO_DATACALL_AUTH_NONE = "none";
  2352 this.GECKO_DATACALL_AUTH_PAP = "pap";
  2353 this.GECKO_DATACALL_AUTH_CHAP = "chap";
  2354 this.GECKO_DATACALL_AUTH_PAP_OR_CHAP = "papOrChap";
  2355 this.GECKO_DATACALL_AUTH_DEFAULT = GECKO_DATACALL_AUTH_PAP_OR_CHAP;
  2356 this.RIL_DATACALL_AUTH_TO_GECKO = [
  2357   GECKO_DATACALL_AUTH_NONE,         // DATACALL_AUTH_NONE
  2358   GECKO_DATACALL_AUTH_PAP,          // DATACALL_AUTH_PAP
  2359   GECKO_DATACALL_AUTH_CHAP,         // DATACALL_AUTH_CHAP
  2360   GECKO_DATACALL_AUTH_PAP_OR_CHAP   // DATACALL_AUTH_PAP_OR_CHAP
  2361 ];
  2363 this.GECKO_DATACALL_PDP_TYPE_IP = "IP";
  2364 this.GECKO_DATACALL_PDP_TYPE_IPV4V6 = "IPV4V6";
  2365 this.GECKO_DATACALL_PDP_TYPE_IPV6 = "IPV6";
  2366 this.GECKO_DATACALL_PDP_TYPE_DEFAULT = GECKO_DATACALL_PDP_TYPE_IP;
  2367 this.RIL_DATACALL_PDP_TYPES = [
  2368   GECKO_DATACALL_PDP_TYPE_IP,
  2369   GECKO_DATACALL_PDP_TYPE_IPV4V6,
  2370   GECKO_DATACALL_PDP_TYPE_IPV6,
  2371 ];
  2373 this.DATACALL_PROFILE_DEFAULT = 0;
  2374 this.DATACALL_PROFILE_TETHERED = 1;
  2375 this.DATACALL_PROFILE_OEM_BASE = 1000;
  2377 this.DATACALL_DEACTIVATE_NO_REASON = 0;
  2378 this.DATACALL_DEACTIVATE_RADIO_SHUTDOWN = 1;
  2380 this.DATACALL_ACTIVE_UNKNOWN = -1;
  2381 this.DATACALL_INACTIVE = 0;
  2382 this.DATACALL_ACTIVE_DOWN = 1;
  2383 this.DATACALL_ACTIVE_UP = 2;
  2385 this.DATACALL_FAIL_NONE = 0;
  2386 this.DATACALL_FAIL_OPERATOR_BARRED = 0x08;
  2387 this.DATACALL_FAIL_INSUFFICIENT_RESOURCES = 0x1A;
  2388 this.DATACALL_FAIL_MISSING_UKNOWN_APN = 0x1B;
  2389 this.DATACALL_FAIL_UNKNOWN_PDP_ADDRESS_TYPE = 0x1C;
  2390 this.DATACALL_FAIL_USER_AUTHENTICATION = 0x1D;
  2391 this.DATACALL_FAIL_ACTIVATION_REJECT_GGSN = 0x1E;
  2392 this.DATACALL_FAIL_ACTIVATION_REJECT_UNSPECIFIED = 0x1F;
  2393 this.DATACALL_FAIL_SERVICE_OPTION_NOT_SUPPORTED = 0x20;
  2394 this.DATACALL_FAIL_SERVICE_OPTION_NOT_SUBSCRIBED = 0x21;
  2395 this.DATACALL_FAIL_SERVICE_OPTION_OUT_OF_ORDER = 0x22;
  2396 this.DATACALL_FAIL_NSAPI_IN_USE = 0x23;
  2397 this.DATACALL_FAIL_ONLY_IPV4_ALLOWED = 0x32;
  2398 this.DATACALL_FAIL_ONLY_IPV6_ALLOWED = 0x33;
  2399 this.DATACALL_FAIL_ONLY_SINGLE_BEARER_ALLOWED = 0x34;
  2400 this.DATACALL_FAIL_PROTOCOL_ERRORS = 0x6F;
  2401 this.DATACALL_FAIL_VOICE_REGISTRATION_FAIL = -1;
  2402 this.DATACALL_FAIL_DATA_REGISTRATION_FAIL = -2;
  2403 this.DATACALL_FAIL_SIGNAL_LOST = -3;
  2404 this.DATACALL_FAIL_PREF_RADIO_TECH_CHANGED = -4;
  2405 this.DATACALL_FAIL_RADIO_POWER_OFF = -5;
  2406 this.DATACALL_FAIL_TETHERED_CALL_ACTIVE = -6;
  2407 this.DATACALL_FAIL_ERROR_UNSPECIFIED = 0xffff;
  2409 // Keep consistent with nsINetworkManager.NETWORK_STATE_*.
  2410 this.GECKO_NETWORK_STATE_UNKNOWN = -1;
  2411 this.GECKO_NETWORK_STATE_CONNECTING = 0;
  2412 this.GECKO_NETWORK_STATE_CONNECTED = 1;
  2413 this.GECKO_NETWORK_STATE_DISCONNECTING = 2;
  2414 this.GECKO_NETWORK_STATE_DISCONNECTED = 3;
  2416 // Used for QUERY_AVAILABLE_NETWORKS status of "unknown"
  2417 this.GECKO_QAN_STATE_UNKNOWN = null;
  2419 this.CALL_FAIL_UNOBTAINABLE_NUMBER = 1;
  2420 this.CALL_FAIL_NORMAL = 16;
  2421 this.CALL_FAIL_BUSY = 17;
  2422 this.CALL_FAIL_NO_USER_RESPONDING = 18;
  2423 this.CALL_FAIL_USER_ALERTING = 19;
  2424 this.CALL_FAIL_CALL_REJECTED = 21;
  2425 this.CALL_FAIL_NUMBER_CHANGED = 22;
  2426 this.CALL_FAIL_CALL_PRE_EMPTION = 25;
  2427 this.CALL_FAIL_DEST_OUT_OF_ORDER = 27;
  2428 this.CALL_FAIL_INVALID_FORMAT = 28;
  2429 this.CALL_FAIL_FACILITY_REJECTED = 29;
  2430 this.CALL_FAIL_CONGESTION = 34;
  2431 this.CALL_FAIL_NETWORK_OUT_OF_ORDER = 38;
  2432 this.CALL_FAIL_NETWORK_TEMP_FAILURE = 41;
  2433 this.CALL_FAIL_ACM_LIMIT_EXCEEDED = 68;
  2434 this.CALL_FAIL_CALL_BARRED = 240;
  2435 this.CALL_FAIL_FDN_BLOCKED = 241;
  2436 this.CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242;
  2437 this.CALL_FAIL_IMEI_NOT_ACCEPTED = 243;
  2438 this.CALL_FAIL_ERROR_UNSPECIFIED = 0xffff;
  2440 // Other Gecko-specific constants
  2441 this.GECKO_RADIOSTATE_UNAVAILABLE   = null;
  2442 this.GECKO_RADIOSTATE_OFF           = "off";
  2443 this.GECKO_RADIOSTATE_READY         = "ready";
  2445 this.GECKO_DETAILED_RADIOSTATE_UNKNOWN    = null;
  2446 this.GECKO_DETAILED_RADIOSTATE_ENABLING   = "enabling";
  2447 this.GECKO_DETAILED_RADIOSTATE_ENABLED    = "enabled";
  2448 this.GECKO_DETAILED_RADIOSTATE_DISABLING  = "disabling";
  2449 this.GECKO_DETAILED_RADIOSTATE_DISABLED   = "disabled";
  2451 this.GECKO_CARDSTATE_UNINITIALIZED                 = "uninitialized";
  2452 this.GECKO_CARDSTATE_UNDETECTED                    = null;
  2453 this.GECKO_CARDSTATE_ILLEGAL                       = "illegal";
  2454 this.GECKO_CARDSTATE_UNKNOWN                       = "unknown";
  2455 this.GECKO_CARDSTATE_PIN_REQUIRED                  = "pinRequired";
  2456 this.GECKO_CARDSTATE_PUK_REQUIRED                  = "pukRequired";
  2457 this.GECKO_CARDSTATE_PERSONALIZATION_IN_PROGRESS   = "personalizationInProgress";
  2458 this.GECKO_CARDSTATE_PERSONALIZATION_READY         = "personalizationReady";
  2459 this.GECKO_CARDSTATE_NETWORK_LOCKED                = "networkLocked";
  2460 this.GECKO_CARDSTATE_NETWORK_SUBSET_LOCKED         = "networkSubsetLocked";
  2461 this.GECKO_CARDSTATE_NETWORK1_LOCKED               = "network1Locked";
  2462 this.GECKO_CARDSTATE_NETWORK2_LOCKED               = "network2Locked";
  2463 this.GECKO_CARDSTATE_HRPD_NETWORK_LOCKED           = "hrpdNetworkLocked";
  2464 this.GECKO_CARDSTATE_CORPORATE_LOCKED              = "corporateLocked";
  2465 this.GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED       = "serviceProviderLocked";
  2466 this.GECKO_CARDSTATE_SIM_LOCKED                    = "simPersonalizationLock";
  2467 this.GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED         = "ruimCorporateLocked";
  2468 this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED  = "ruimServiceProviderLocked";
  2469 this.GECKO_CARDSTATE_RUIM_LOCKED                   = "ruimPersonalizationLock";
  2470 this.GECKO_CARDSTATE_NETWORK_PUK_REQUIRED          = "networkPukRequired";
  2471 this.GECKO_CARDSTATE_NETWORK_SUBSET_PUK_REQUIRED   = "networkSubsetPukRequired";
  2472 this.GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED         = "network1PukRequired";
  2473 this.GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED         = "network2PukRequired";
  2474 this.GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED     = "hrpdNetworkPukRequired";
  2475 this.GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED        = "corporatePukRequired";
  2476 this.GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED = "serviceProviderPukRequired";
  2477 this.GECKO_CARDSTATE_SIM_PUK_REQUIRED              = "simPersonalizationPukRequired";
  2478 this.GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED   = "ruimCorporatePukRequired";
  2479 this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED = "ruimServiceProviderPukRequired";
  2480 this.GECKO_CARDSTATE_RUIM_PUK_REQUIRED             = "ruimPersonalizationPukRequired";
  2481 this.GECKO_CARDSTATE_READY                         = "ready";
  2482 this.GECKO_CARDSTATE_PERMANENT_BLOCKED             = "permanentBlocked";
  2484 this.GECKO_CARDLOCK_PIN      = "pin";
  2485 this.GECKO_CARDLOCK_PIN2     = "pin2";
  2486 this.GECKO_CARDLOCK_PUK      = "puk";
  2487 this.GECKO_CARDLOCK_PUK2     = "puk2";
  2488 this.GECKO_CARDLOCK_FDN      = "fdn";
  2489 this.GECKO_CARDLOCK_NCK      = "nck";
  2490 this.GECKO_CARDLOCK_NCK1     = "nck1";
  2491 this.GECKO_CARDLOCK_NCK2     = "nck2";
  2492 this.GECKO_CARDLOCK_HNCK     = "hnck";
  2493 this.GECKO_CARDLOCK_CCK      = "cck";
  2494 this.GECKO_CARDLOCK_SPCK     = "spck";
  2495 this.GECKO_CARDLOCK_RCCK     = "rcck";
  2496 this.GECKO_CARDLOCK_RSPCK    = "rspck";
  2497 this.GECKO_CARDLOCK_NCK_PUK  = "nckPuk";
  2498 this.GECKO_CARDLOCK_NCK1_PUK = "nck1Puk";
  2499 this.GECKO_CARDLOCK_NCK2_PUK = "nck2Puk";
  2500 this.GECKO_CARDLOCK_HNCK_PUK = "hnckPuk";
  2501 this.GECKO_CARDLOCK_CCK_PUK  = "cckPuk";
  2502 this.GECKO_CARDLOCK_SPCK_PUK = "spckPuk";
  2503 this.GECKO_CARDLOCK_RCCK_PUK = "rcckPuk";
  2504 this.GECKO_CARDLOCK_RSPCK_PUK = "rspckPuk";
  2506 // See ril.h RIL_PersoSubstate
  2507 this.PERSONSUBSTATE = {};
  2508 PERSONSUBSTATE[CARD_PERSOSUBSTATE_UNKNOWN] = GECKO_CARDSTATE_UNKNOWN;
  2509 PERSONSUBSTATE[CARD_PERSOSUBSTATE_IN_PROGRESS] = GECKO_CARDSTATE_PERSONALIZATION_IN_PROGRESS;
  2510 PERSONSUBSTATE[CARD_PERSOSUBSTATE_READY] = GECKO_CARDSTATE_PERSONALIZATION_READY;
  2511 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK] = GECKO_CARDSTATE_NETWORK_LOCKED;
  2512 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET] = GECKO_CARDSTATE_NETWORK_SUBSET_LOCKED;
  2513 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_CORPORATE] = GECKO_CARDSTATE_CORPORATE_LOCKED;
  2514 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER] = GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED;
  2515 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SIM] = GECKO_CARDSTATE_SIM_LOCKED;
  2516 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_PUK] = GECKO_CARDSTATE_NETWORK_PUK_REQUIRED;
  2517 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK] = GECKO_CARDSTATE_NETWORK_SUBSET_PUK_REQUIRED;
  2518 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK] = GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED;
  2519 PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK] = GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED;
  2520 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK1] = GECKO_CARDSTATE_NETWORK1_LOCKED;
  2521 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK2] = GECKO_CARDSTATE_NETWORK2_LOCKED;
  2522 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_HRPD] = GECKO_CARDSTATE_HRPD_NETWORK_LOCKED;
  2523 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_CORPORATE] = GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED;
  2524 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER] = GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED;
  2525 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_RUIM] = GECKO_CARDSTATE_RUIM_LOCKED;
  2526 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK] = GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED;
  2527 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK] = GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED;
  2528 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_HRPD_PUK] = GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED;
  2529 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK] = GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED;
  2530 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK] = GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED;
  2531 PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_RUIM_PUK] = GECKO_CARDSTATE_RUIM_PUK_REQUIRED;
  2533 this.GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK = {};
  2534 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK] = CARD_PERSOSUBSTATE_SIM_NETWORK;
  2535 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK1] = CARD_PERSOSUBSTATE_RUIM_NETWORK1;
  2536 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK2] = CARD_PERSOSUBSTATE_RUIM_NETWORK2;
  2537 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_HNCK] = CARD_PERSOSUBSTATE_RUIM_HRPD;
  2538 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_CCK] = CARD_PERSOSUBSTATE_SIM_CORPORATE;
  2539 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_SPCK] = CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER;
  2540 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RCCK] = CARD_PERSOSUBSTATE_RUIM_CORPORATE;
  2541 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RSPCK] = CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER;
  2542 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK_PUK] = CARD_PERSOSUBSTATE_SIM_NETWORK_PUK;
  2543 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK1_PUK] = CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK;
  2544 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK2_PUK] = CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK;
  2545 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_HNCK_PUK] = CARD_PERSOSUBSTATE_RUIM_HRPD_PUK;
  2546 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_CCK_PUK] = CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK;
  2547 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_SPCK_PUK] = CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK;
  2548 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RCCK_PUK] = CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK;
  2549 GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RSPCK_PUK] = CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK;
  2551 this.GECKO_NETWORK_SELECTION_UNKNOWN   = null;
  2552 this.GECKO_NETWORK_SELECTION_AUTOMATIC = "automatic";
  2553 this.GECKO_NETWORK_SELECTION_MANUAL    = "manual";
  2555 this.GECKO_MOBILE_CONNECTION_STATE_UNKNOWN = null;
  2556 this.GECKO_MOBILE_CONNECTION_STATE_NOTSEARCHING = "notSearching";
  2557 this.GECKO_MOBILE_CONNECTION_STATE_SEARCHING = "searching";
  2558 this.GECKO_MOBILE_CONNECTION_STATE_REGISTERED = "registered";
  2559 this.GECKO_MOBILE_CONNECTION_STATE_DENIED = "denied";
  2561 this.NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE = {};
  2562 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_NOT_SEARCHING] = GECKO_MOBILE_CONNECTION_STATE_NOTSEARCHING;
  2563 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_REGISTERED_HOME] = GECKO_MOBILE_CONNECTION_STATE_REGISTERED;
  2564 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_SEARCHING] = GECKO_MOBILE_CONNECTION_STATE_SEARCHING;
  2565 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_DENIED] = GECKO_MOBILE_CONNECTION_STATE_DENIED;
  2566 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_UNKNOWN] = GECKO_MOBILE_CONNECTION_STATE_UNKNOWN;
  2567 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_REGISTERED_ROAMING] = GECKO_MOBILE_CONNECTION_STATE_REGISTERED;
  2568 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_NOT_SEARCHING_EMERGENCY_CALLS] = GECKO_MOBILE_CONNECTION_STATE_NOTSEARCHING;
  2569 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_SEARCHING_EMERGENCY_CALLS] = GECKO_MOBILE_CONNECTION_STATE_SEARCHING;
  2570 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_DENIED_EMERGENCY_CALLS] = GECKO_MOBILE_CONNECTION_STATE_DENIED;
  2571 NETWORK_CREG_TO_GECKO_MOBILE_CONNECTION_STATE[NETWORK_CREG_STATE_UNKNOWN_EMERGENCY_CALLS] = GECKO_MOBILE_CONNECTION_STATE_UNKNOWN;
  2574 this.GECKO_CALL_ERROR_BAD_NUMBER             = "BadNumberError";
  2575 this.GECKO_CALL_ERROR_NORMAL_CALL_CLEARING   = "NormalCallClearingError";
  2576 this.GECKO_CALL_ERROR_BUSY                   = "BusyError";
  2577 this.GECKO_CALL_ERROR_NO_USER_RESPONDING     = "NoUserRespondingError";
  2578 this.GECKO_CALL_ERROR_USER_ALERTING          = "UserAlertingNoAnswerError";
  2579 this.GECKO_CALL_ERROR_REJECTED               = "CallRejectedError";
  2580 this.GECKO_CALL_ERROR_NUMBER_CHANGED         = "NumberChangedError";
  2581 this.GECKO_CALL_ERROR_PRE_EMPTION            = "PreEmptionError";
  2582 this.GECKO_CALL_ERROR_DEST_OUT_OF_ORDER      = "DestinationOutOfOrderError";
  2583 this.GECKO_CALL_ERROR_INVALID_NUMBER_FORMAT  = "InvalidNumberFormatError";
  2584 this.GECKO_CALL_ERROR_FACILITY_REJECTED      = "FacilityRejectedError";
  2585 this.GECKO_CALL_ERROR_CONGESTION             = "CongestionError";
  2586 this.GECKO_CALL_ERROR_NETWORK_OUT_OF_ORDER   = "NetworkOutOfOrderError";
  2587 this.GECKO_CALL_ERROR_NETWORK_TEMP_FAILURE   = "NetworkTempFailureError";
  2588 this.GECKO_CALL_ERROR_INCOMING_CALL_EXCEEDED = "IncomingCallExceededError";
  2589 this.GECKO_CALL_ERROR_BARRED                 = "BarredError";
  2590 this.GECKO_CALL_ERROR_FDN_BLOCKED            = "FDNBlockedError";
  2591 this.GECKO_CALL_ERROR_SUBSCRIBER_UNKNOWN     = "SubscriberUnknownError";
  2592 this.GECKO_CALL_ERROR_DEVICE_NOT_ACCEPTED    = "DeviceNotAcceptedError";
  2593 this.GECKO_CALL_ERROR_UNSPECIFIED            = "UnspecifiedError";
  2595 this.RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR = {};
  2596 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_UNOBTAINABLE_NUMBER] = GECKO_CALL_ERROR_BAD_NUMBER;
  2597 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NORMAL]              = GECKO_CALL_ERROR_NORMAL_CALL_CLEARING;
  2598 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_BUSY]                = GECKO_CALL_ERROR_BUSY;
  2599 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NO_USER_RESPONDING]  = GECKO_CALL_ERROR_NO_USER_RESPONDING;
  2600 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_USER_ALERTING]       = GECKO_CALL_ERROR_USER_ALERTING;
  2601 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_REJECTED]       = GECKO_CALL_ERROR_REJECTED;
  2602 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NUMBER_CHANGED]      = GECKO_CALL_ERROR_NUMBER_CHANGED;
  2603 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_PRE_EMPTION]    = GECKO_CALL_ERROR_PRE_EMPTION;
  2604 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_DEST_OUT_OF_ORDER]   = GECKO_CALL_ERROR_DEST_OUT_OF_ORDER;
  2605 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_INVALID_FORMAT]      = GECKO_CALL_ERROR_INVALID_NUMBER_FORMAT;
  2606 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_FACILITY_REJECTED]   = GECKO_CALL_ERROR_FACILITY_REJECTED;
  2607 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CONGESTION]          = GECKO_CALL_ERROR_CONGESTION;
  2608 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NETWORK_OUT_OF_ORDER]= GECKO_CALL_ERROR_NETWORK_OUT_OF_ORDER;
  2609 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_NETWORK_TEMP_FAILURE]= GECKO_CALL_ERROR_NETWORK_TEMP_FAILURE;
  2610 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_ACM_LIMIT_EXCEEDED]  = GECKO_CALL_ERROR_INCOMING_CALL_EXCEEDED;
  2611 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_CALL_BARRED]         = GECKO_CALL_ERROR_BARRED;
  2612 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_FDN_BLOCKED]         = GECKO_CALL_ERROR_FDN_BLOCKED;
  2613 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_IMSI_UNKNOWN_IN_VLR] = GECKO_CALL_ERROR_SUBSCRIBER_UNKNOWN;
  2614 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_IMEI_NOT_ACCEPTED]   = GECKO_CALL_ERROR_DEVICE_NOT_ACCEPTED;
  2615 RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_ERROR_UNSPECIFIED]   = GECKO_CALL_ERROR_UNSPECIFIED;
  2617 this.GECKO_DATACALL_ERROR_OPERATOR_BARRED               = "OperatorBarredError";
  2618 this.GECKO_DATACALL_ERROR_INSUFFICIENT_RESOURCES        = "InsufficientResourcesError";
  2619 this.GECKO_DATACALL_ERROR_MISSING_UKNOWN_APN            = "MissingUnknownAPNError";
  2620 this.GECKO_DATACALL_ERROR_UNKNOWN_PDP_ADDRESS_TYPE      = "UnknownPDPAddressTypeError";
  2621 this.GECKO_DATACALL_ERROR_USER_AUTHENTICATION           = "UserAuthenticationError";
  2622 this.GECKO_DATACALL_ERROR_ACTIVATION_REJECT_GGSN        = "ActivationRejectGGSNError";
  2623 this.GECKO_DATACALL_ERROR_ACTIVATION_REJECT_UNSPECIFIED = "ActivationRejectUnspecifiedError";
  2624 this.GECKO_DATACALL_ERROR_SERVICE_OPTION_NOT_SUPPORTED  = "ServiceOptionNotSupportedError";
  2625 this.GECKO_DATACALL_ERROR_SERVICE_OPTION_NOT_SUBSCRIBED = "ServiceOptionNotSubscribedError";
  2626 this.GECKO_DATACALL_ERROR_SERVICE_OPTION_OUT_OF_ORDER   = "ServiceOptionOutOfOrderError";
  2627 this.GECKO_DATACALL_ERROR_NSAPI_IN_USE                  = "NSAPIInUseError";
  2628 this.GECKO_DATACALL_ERROR_ONLY_IPV4_ALLOWED             = "OnlyIPv4Error";
  2629 this.GECKO_DATACALL_ERROR_ONLY_IPV6_ALLOWED             = "OnlyIPv6Error";
  2630 this.GECKO_DATACALL_ERROR_ONLY_SINGLE_BEARER_ALLOWED    = "OnlySingleBearerAllowedError";
  2631 this.GECKO_DATACALL_ERROR_PROTOCOL_ERRORS               = "ProtocolErrorsError";
  2632 this.GECKO_DATACALL_ERROR_VOICE_REGISTRATION_FAIL       = "VoiceRegistrationFailError";
  2633 this.GECKO_DATACALL_ERROR_DATA_REGISTRATION_FAIL        = "DataRegistrationFailError";
  2634 this.GECKO_DATACALL_ERROR_SIGNAL_LOST                   = "SignalLostError";
  2635 this.GECKO_DATACALL_ERROR_PREF_RADIO_TECH_CHANGED       = "PrefRadioTechChangedError";
  2636 this.GECKO_DATACALL_ERROR_RADIO_POWER_OFF               = "RadioPowerOffError";
  2637 this.GECKO_DATACALL_ERROR_TETHERED_CALL_ACTIVE          = "TetheredCallActiveError";
  2638 this.GECKO_DATACALL_ERROR_UNSPECIFIED                   = "UnspecifiedError";
  2640 this.RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR = {};
  2641 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_OPERATOR_BARRED]               = GECKO_DATACALL_ERROR_OPERATOR_BARRED;
  2642 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_INSUFFICIENT_RESOURCES]        = GECKO_DATACALL_ERROR_INSUFFICIENT_RESOURCES;
  2643 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_MISSING_UKNOWN_APN]            = GECKO_DATACALL_ERROR_MISSING_UKNOWN_APN;
  2644 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_UNKNOWN_PDP_ADDRESS_TYPE]      = GECKO_DATACALL_ERROR_UNKNOWN_PDP_ADDRESS_TYPE;
  2645 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_USER_AUTHENTICATION]           = GECKO_DATACALL_ERROR_USER_AUTHENTICATION;
  2646 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_ACTIVATION_REJECT_GGSN]        = GECKO_DATACALL_ERROR_ACTIVATION_REJECT_GGSN;
  2647 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_ACTIVATION_REJECT_UNSPECIFIED] = GECKO_DATACALL_ERROR_ACTIVATION_REJECT_UNSPECIFIED;
  2648 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_SERVICE_OPTION_NOT_SUPPORTED]  = GECKO_DATACALL_ERROR_SERVICE_OPTION_NOT_SUPPORTED;
  2649 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_SERVICE_OPTION_NOT_SUBSCRIBED] = GECKO_DATACALL_ERROR_SERVICE_OPTION_NOT_SUBSCRIBED;
  2650 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_SERVICE_OPTION_OUT_OF_ORDER]   = GECKO_DATACALL_ERROR_SERVICE_OPTION_OUT_OF_ORDER;
  2651 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_NSAPI_IN_USE]                  = GECKO_DATACALL_ERROR_NSAPI_IN_USE;
  2652 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_ONLY_IPV4_ALLOWED]             = GECKO_DATACALL_ERROR_ONLY_IPV4_ALLOWED;
  2653 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_ONLY_IPV6_ALLOWED]             = GECKO_DATACALL_ERROR_ONLY_IPV6_ALLOWED;
  2654 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_ONLY_SINGLE_BEARER_ALLOWED]    = GECKO_DATACALL_ERROR_ONLY_SINGLE_BEARER_ALLOWED;
  2655 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_PROTOCOL_ERRORS]               = GECKO_DATACALL_ERROR_PROTOCOL_ERRORS;
  2656 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_VOICE_REGISTRATION_FAIL]       = GECKO_DATACALL_ERROR_VOICE_REGISTRATION_FAIL;
  2657 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_DATA_REGISTRATION_FAIL]        = GECKO_DATACALL_ERROR_DATA_REGISTRATION_FAIL;
  2658 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_SIGNAL_LOST]                   = GECKO_DATACALL_ERROR_SIGNAL_LOST;
  2659 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_PREF_RADIO_TECH_CHANGED]       = GECKO_DATACALL_ERROR_PREF_RADIO_TECH_CHANGED;
  2660 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_RADIO_POWER_OFF]               = GECKO_DATACALL_ERROR_RADIO_POWER_OFF;
  2661 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_TETHERED_CALL_ACTIVE]          = GECKO_DATACALL_ERROR_TETHERED_CALL_ACTIVE;
  2662 RIL_DATACALL_FAILCAUSE_TO_GECKO_DATACALL_ERROR[DATACALL_FAIL_ERROR_UNSPECIFIED]             = GECKO_DATACALL_ERROR_UNSPECIFIED;
  2664 this.GECKO_RADIO_TECH = [
  2665   null,
  2666   "gprs",
  2667   "edge",
  2668   "umts",
  2669   "is95a",
  2670   "is95b",
  2671   "1xrtt",
  2672   "evdo0",
  2673   "evdoa",
  2674   "hsdpa",
  2675   "hsupa",
  2676   "hspa",
  2677   "evdob",
  2678   "ehrpd",
  2679   "lte",
  2680   "hspa+",
  2681   "gsm"
  2682 ];
  2684 this.GECKO_VOICEMAIL_MESSAGE_COUNT_UNKNOWN = -1;
  2686 // Call forwarding action. Must be in sync with nsIDOMMozMobileCFInfo interface
  2687 this.CALL_FORWARD_ACTION_DISABLE = 0;
  2688 this.CALL_FORWARD_ACTION_ENABLE = 1;
  2689 this.CALL_FORWARD_ACTION_QUERY_STATUS = 2;
  2690 this.CALL_FORWARD_ACTION_REGISTRATION = 3;
  2691 this.CALL_FORWARD_ACTION_ERASURE = 4;
  2693 // Call forwarding reason. Must be in sync with nsIDOMMozMobileCFInfo interface
  2694 this.CALL_FORWARD_REASON_UNCONDITIONAL = 0;
  2695 this.CALL_FORWARD_REASON_MOBILE_BUSY = 1;
  2696 this.CALL_FORWARD_REASON_NO_REPLY = 2;
  2697 this.CALL_FORWARD_REASON_NOT_REACHABLE = 3;
  2698 this.CALL_FORWARD_REASON_ALL_CALL_FORWARDING = 4;
  2699 this.CALL_FORWARD_REASON_ALL_CONDITIONAL_CALL_FORWARDING = 5;
  2701 // Call barring program. Must be in sync with nsIDOMMozMobileConnection interface
  2702 this.CALL_BARRING_PROGRAM_ALL_OUTGOING = 0;
  2703 this.CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL = 1;
  2704 this.CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL_EXCEPT_HOME = 2;
  2705 this.CALL_BARRING_PROGRAM_ALL_INCOMING = 3;
  2706 this.CALL_BARRING_PROGRAM_INCOMING_ROAMING = 4;
  2708 this.CALL_BARRING_PROGRAM_TO_FACILITY = {};
  2709 CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_ALL_OUTGOING] = ICC_CB_FACILITY_BAOC;
  2710 CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL] = ICC_CB_FACILITY_BAOIC;
  2711 CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL_EXCEPT_HOME] = ICC_CB_FACILITY_BAOICxH;
  2712 CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_ALL_INCOMING] = ICC_CB_FACILITY_BAIC;
  2713 CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_INCOMING_ROAMING] = ICC_CB_FACILITY_BAICr;
  2715 // CLIR constants. Must be in sync with nsIDOMMozMobileConnection interface
  2716 this.CLIR_DEFAULT = 0;
  2717 this.CLIR_INVOCATION  = 1;
  2718 this.CLIR_SUPPRESSION = 2;
  2720 // MMI procedure as defined in TS.22.030 6.5.2
  2721 this.MMI_PROCEDURE_ACTIVATION = "*";
  2722 this.MMI_PROCEDURE_DEACTIVATION = "#";
  2723 this.MMI_PROCEDURE_INTERROGATION = "*#";
  2724 this.MMI_PROCEDURE_REGISTRATION = "**";
  2725 this.MMI_PROCEDURE_ERASURE = "##";
  2727 this.MMI_PROC_TO_CF_ACTION = {};
  2728 MMI_PROC_TO_CF_ACTION[MMI_PROCEDURE_ACTIVATION] = CALL_FORWARD_ACTION_ENABLE;
  2729 MMI_PROC_TO_CF_ACTION[MMI_PROCEDURE_DEACTIVATION] = CALL_FORWARD_ACTION_DISABLE;
  2730 MMI_PROC_TO_CF_ACTION[MMI_PROCEDURE_INTERROGATION] = CALL_FORWARD_ACTION_QUERY_STATUS;
  2731 MMI_PROC_TO_CF_ACTION[MMI_PROCEDURE_REGISTRATION] = CALL_FORWARD_ACTION_REGISTRATION;
  2732 MMI_PROC_TO_CF_ACTION[MMI_PROCEDURE_ERASURE] = CALL_FORWARD_ACTION_ERASURE;
  2734 // MMI call forwarding service codes as defined in TS.22.030 Annex B
  2735 this.MMI_SC_CFU = "21";
  2736 this.MMI_SC_CF_BUSY = "67";
  2737 this.MMI_SC_CF_NO_REPLY = "61";
  2738 this.MMI_SC_CF_NOT_REACHABLE = "62";
  2739 this.MMI_SC_CF_ALL = "002";
  2740 this.MMI_SC_CF_ALL_CONDITIONAL = "004";
  2742 this.MMI_SC_TO_CF_REASON = {};
  2743 MMI_SC_TO_CF_REASON[MMI_SC_CFU] = CALL_FORWARD_REASON_UNCONDITIONAL;
  2744 MMI_SC_TO_CF_REASON[MMI_SC_CF_BUSY] = CALL_FORWARD_REASON_MOBILE_BUSY;
  2745 MMI_SC_TO_CF_REASON[MMI_SC_CF_NO_REPLY] = CALL_FORWARD_REASON_NO_REPLY;
  2746 MMI_SC_TO_CF_REASON[MMI_SC_CF_NOT_REACHABLE] = CALL_FORWARD_REASON_NOT_REACHABLE;
  2747 MMI_SC_TO_CF_REASON[MMI_SC_CF_ALL] = CALL_FORWARD_REASON_ALL_CALL_FORWARDING;
  2748 MMI_SC_TO_CF_REASON[MMI_SC_CF_ALL_CONDITIONAL] = CALL_FORWARD_REASON_ALL_CONDITIONAL_CALL_FORWARDING;
  2750 // MMI service codes for PIN/PIN2/PUK/PUK2 management as defined in TS.22.030
  2751 // sec 6.6
  2752 this.MMI_SC_PIN = "04";
  2753 this.MMI_SC_PIN2 = "042";
  2754 this.MMI_SC_PUK = "05";
  2755 this.MMI_SC_PUK2 = "052";
  2757 // MMI service code for IMEI presentation as defined in TS.22.030 sec 6.7
  2758 this.MMI_SC_IMEI = "06";
  2760 // MMI called line presentation service codes
  2761 this.MMI_SC_CLIP = "30";
  2762 this.MMI_SC_CLIR = "31";
  2764 // MMI call waiting service code
  2765 this.MMI_SC_CALL_WAITING = "43";
  2767 // MMI call barring service codes
  2768 this.MMI_SC_BAOC = "33";
  2769 this.MMI_SC_BAOIC = "331";
  2770 this.MMI_SC_BAOICxH = "332";
  2771 this.MMI_SC_BAIC = "35";
  2772 this.MMI_SC_BAICr = "351";
  2773 this.MMI_SC_BA_ALL = "330";
  2774 this.MMI_SC_BA_MO = "333";
  2775 this.MMI_SC_BA_MT = "353";
  2777 this.MMI_SC_TO_CB_FACILITY = {};
  2779 MMI_SC_TO_CB_FACILITY[MMI_SC_BAOC] = ICC_CB_FACILITY_BAOC;
  2780 MMI_SC_TO_CB_FACILITY[MMI_SC_BAOIC] = ICC_CB_FACILITY_BAOIC;
  2781 MMI_SC_TO_CB_FACILITY[MMI_SC_BAOICxH] = ICC_CB_FACILITY_BAOICxH;
  2782 MMI_SC_TO_CB_FACILITY[MMI_SC_BAIC] = ICC_CB_FACILITY_BAIC;
  2783 MMI_SC_TO_CB_FACILITY[MMI_SC_BAICr] = ICC_CB_FACILITY_BAICr;
  2784 MMI_SC_TO_CB_FACILITY[MMI_SC_BA_ALL] = ICC_CB_FACILITY_BA_ALL;
  2785 MMI_SC_TO_CB_FACILITY[MMI_SC_BA_MO] = ICC_CB_FACILITY_BA_MO;
  2786 MMI_SC_TO_CB_FACILITY[MMI_SC_BA_MT] = ICC_CB_FACILITY_BA_MT;
  2788 // MMI service code key strings.
  2789 this.MMI_KS_SC_CALL_BARRING = "scCallBarring";
  2790 this.MMI_KS_SC_CALL_FORWARDING = "scCallForwarding";
  2791 this.MMI_KS_SC_CLIP = "scClip";
  2792 this.MMI_KS_SC_CLIR = "scClir";
  2793 this.MMI_KS_SC_PWD = "scPwd";
  2794 this.MMI_KS_SC_CALL_WAITING = "scCallWaiting";
  2795 this.MMI_KS_SC_PIN = "scPin";
  2796 this.MMI_KS_SC_PIN2 = "scPin2";
  2797 this.MMI_KS_SC_PUK = "scPuk";
  2798 this.MMI_KS_SC_PUK2 = "scPuk2";
  2799 this.MMI_KS_SC_IMEI = "scImei";
  2800 this.MMI_KS_SC_USSD = "scUssd";
  2802 // MMI error messages key strings.
  2803 this.MMI_ERROR_KS_ERROR = "emMmiError";
  2804 this.MMI_ERROR_KS_NOT_SUPPORTED = "emMmiErrorNotSupported";
  2805 this.MMI_ERROR_KS_INVALID_ACTION = "emMmiErrorInvalidAction";
  2806 this.MMI_ERROR_KS_MISMATCH_PIN = "emMmiErrorMismatchPin";
  2807 this.MMI_ERROR_KS_BAD_PIN = "emMmiErrorBadPin";
  2808 this.MMI_ERROR_KS_BAD_PUK = "emMmiErrorBadPuk";
  2809 this.MMI_ERROR_KS_INVALID_PIN = "emMmiErrorInvalidPin";
  2810 this.MMI_ERROR_KS_NEEDS_PUK = "emMmiErrorNeedsPuk";
  2811 this.MMI_ERROR_KS_SIM_BLOCKED = "emMmiErrorSimBlocked";
  2813 // MMI status message.
  2814 this.MMI_SM_KS_PIN_CHANGED = "smPinChanged";
  2815 this.MMI_SM_KS_PIN2_CHANGED = "smPin2Changed";
  2816 this.MMI_SM_KS_PIN_UNBLOCKED = "smPinUnblocked";
  2817 this.MMI_SM_KS_PIN2_UNBLOCKED = "smPin2Unblocked";
  2818 this.MMI_SM_KS_SERVICE_ENABLED = "smServiceEnabled";
  2819 this.MMI_SM_KS_SERVICE_ENABLED_FOR = "smServiceEnabledFor";
  2820 this.MMI_SM_KS_SERVICE_DISABLED = "smServiceDisabled";
  2821 this.MMI_SM_KS_SERVICE_REGISTERED = "smServiceRegistered";
  2822 this.MMI_SM_KS_SERVICE_ERASED = "smServiceErased";
  2823 this.MMI_SM_KS_SERVICE_INTERROGATED = "smServiceInterrogated";
  2824 this.MMI_SM_KS_SERVICE_NOT_PROVISIONED = "smServiceNotProvisioned";
  2825 this.MMI_SM_KS_CLIR_PERMANENT = "smClirPermanent";
  2826 this.MMI_SM_KS_CLIR_DEFAULT_ON_NEXT_CALL_ON = "smClirDefaultOnNextCallOn";
  2827 this.MMI_SM_KS_CLIR_DEFAULT_ON_NEXT_CALL_OFF = "smClirDefaultOnNextCallOff";
  2828 this.MMI_SM_KS_CLIR_DEFAULT_OFF_NEXT_CALL_ON = "smClirDefaultOffNextCallOn";
  2829 this.MMI_SM_KS_CLIR_DEFAULT_OFF_NEXT_CALL_OFF = "smClirDefaultOffNextCallOff";
  2831 // MMI Service class
  2832 this.MMI_KS_SERVICE_CLASS_VOICE = "serviceClassVoice";
  2833 this.MMI_KS_SERVICE_CLASS_DATA = "serviceClassData";
  2834 this.MMI_KS_SERVICE_CLASS_FAX = "serviceClassFax";
  2835 this.MMI_KS_SERVICE_CLASS_SMS = "serviceClassSms";
  2836 this.MMI_KS_SERVICE_CLASS_DATA_SYNC = "serviceClassDataSync";
  2837 this.MMI_KS_SERVICE_CLASS_DATA_ASYNC = "serviceClassDataAsync";
  2838 this.MMI_KS_SERVICE_CLASS_PACKET = "serviceClassPacket";
  2839 this.MMI_KS_SERVICE_CLASS_PAD = "serviceClassPad";
  2841 this.MMI_KS_SERVICE_CLASS_MAPPING = {};
  2842 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_VOICE] = MMI_KS_SERVICE_CLASS_VOICE;
  2843 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_DATA] = MMI_KS_SERVICE_CLASS_DATA;
  2844 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_FAX] = MMI_KS_SERVICE_CLASS_FAX;
  2845 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_SMS] = MMI_KS_SERVICE_CLASS_SMS;
  2846 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_DATA_SYNC] = MMI_KS_SERVICE_CLASS_DATA_SYNC;
  2847 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_DATA_ASYNC] = MMI_KS_SERVICE_CLASS_DATA_ASYNC;
  2848 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_PACKET] = MMI_KS_SERVICE_CLASS_PACKET;
  2849 MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_PAD] = MMI_KS_SERVICE_CLASS_PAD;
  2850 /**
  2851  * CDMA PDU constants
  2852  */
  2854 // SMS Message Type, as defined in 3GPP2 C.S0015-A v2.0, Table 3.4-1
  2855 this.PDU_CDMA_MSG_TYPE_P2P = 0x00;        // Point-to-Point
  2856 this.PDU_CDMA_MSG_TYPE_BROADCAST = 0x01;  // Broadcast
  2857 this.PDU_CDMA_MSG_TYPE_ACK = 0x02;        // Acknowledge
  2859 // SMS Teleservice Identitifier, as defined in 3GPP2 N.S0005, Table 175
  2860 this.PDU_CDMA_MSG_TELESERIVCIE_ID_SMS  = 0x1002;   // SMS
  2861 this.PDU_CDMA_MSG_TELESERIVCIE_ID_WAP  = 0x1004;   // WAP
  2862 this.PDU_CDMA_MSG_TELESERIVCIE_ID_WEMT = 0x1005;   // Wireless Enhanced Messaging Teleservice
  2863                                                    // required for fragmented SMS
  2865 // SMS Service Category, as defined in 3GPP2 C.R1001-D, Table 9.3.1-1
  2866 this.PDU_CDMA_MSG_CATEGORY_UNSPEC = 0x00; // Unknown/Unspecified
  2868 // Address Information, Digit Mode, as defined in 3GPP2 C.S0015-A v2.0, sec 3.4.3.3
  2869 this.PDU_CDMA_MSG_ADDR_DIGIT_MODE_DTMF = 0x00;      // Digit Mode : DTMF
  2870 this.PDU_CDMA_MSG_ADDR_DIGIT_MODE_ASCII = 0x01;     // Digit Mode : 8-bit ASCII with MSB = 0
  2872 // Address Information, Number Mode, as defined in 3GPP2 C.S0015-A v2.0, sec 3.4.3.3
  2873 this.PDU_CDMA_MSG_ADDR_NUMBER_MODE_ANSI = 0x00;     // Number Mode : ANSI T1.607-2000(R2004)
  2874 this.PDU_CDMA_MSG_ADDR_NUMBER_MODE_ASCII = 0x01;    // Number Mode : Data network address format
  2876 // Address Information, Number Type, as defined in 3GPP2 C.S0015-A v2.0, Table 3.4.3.3-1
  2877 this.PDU_CDMA_MSG_ADDR_NUMBER_TYPE_UNKNOWN = 0x00;        // Number Type : Unknown
  2878 this.PDU_CDMA_MSG_ADDR_NUMBER_TYPE_INTERNATIONAL = 0x01;  // Number Type : Internaltional number(+XXXXX)
  2879 this.PDU_CDMA_MSG_ADDR_NUMBER_TYPE_NATIONAL = 0x02;       // Number Type : National number
  2881 // Address Information, Number Plan, as defined in 3GPP2 C.S0005-D v2.0, Table 2.7.1.3.2.4-3
  2882 this.PDU_CDMA_MSG_ADDR_NUMBER_PLAN_UNKNOWN = 0x00;  // Number Plan : Unknown
  2883 this.PDU_CDMA_MSG_ADDR_NUMBER_PLAN_ISDN = 0x01;     // Number Plan : ISDN/Telephony numbering plan
  2885 // SMS Encoding, as defined in 3GPP2 C.R1001-D, Table 9.1-1
  2886 this.PDU_CDMA_MSG_CODING_OCTET = 0x00;        // octet(8-bit), Not tested
  2887 this.PDU_CDMA_MSG_CODING_IS_91 = 0x01;        // IS-91 Extended Protocol Message(variable), Not tested
  2888 this.PDU_CDMA_MSG_CODING_7BITS_ASCII = 0x02;  // 7-bit ASCII(7-bit)
  2889 this.PDU_CDMA_MSG_CODING_IA5 = 0x03;          // IA5(7-bit), Not tested
  2890 this.PDU_CDMA_MSG_CODING_UNICODE = 0x04;      // Unicode(16-bit)
  2891 this.PDU_CDMA_MSG_CODING_SHIFT_JIS = 0x05;    // Shift-6 JIS(8/16-bit variable), Not supported
  2892 this.PDU_CDMA_MSG_CODING_KOREAN = 0x06;       // Korean(8/16-bit variable), Not supported
  2893 this.PDU_CDMA_MSG_CODING_LATIN_HEBREW = 0x07; // Latin/ Hebrew(8-bit), ISO/IEC 8859-8, Not supported
  2894 this.PDU_CDMA_MSG_CODING_LATIN = 0x08;        // Latin(8-bit), ISO/IEC 8859-1, Not tested
  2895 this.PDU_CDMA_MSG_CODING_7BITS_GSM = 0x09;    // GSM 7-bit default alphabet(7-bit), Not tested
  2896 this.PDU_CDMA_MSG_CODING_GSM_DCS = 0x0A;      // GSM Data-Coding-Scheme, Not supported
  2898 // SMS Message Type, as defined in 3GPP2 C.S0015-A v2.0, Table 4.5.1-1
  2899 this.PDU_CDMA_MSG_TYPE_DELIVER     = 0x01;         // Deliver
  2900 this.PDU_CDMA_MSG_TYPE_SUBMIT      = 0x02;         // Submit
  2901 this.PDU_CDMA_MSG_TYPE_DELIVER_ACK = 0x04;         // Delivery Acknowledgment
  2903 // SMS User Data Subparameters, as defined in 3GPP2 C.S0015-A v2.0, Table 4.5-1
  2904 this.PDU_CDMA_MSG_USERDATA_MSG_ID          = 0x00;  // Message Identifier
  2905 this.PDU_CDMA_MSG_USERDATA_BODY            = 0x01;  // User Data Body
  2906 this.PDU_CDMA_MSG_USERDATA_TIMESTAMP       = 0x03;  // Message Center Time Stamp
  2907 this.PDU_CDMA_MSG_USERDATA_REPLY_OPTION    = 0x0A;  // Reply Option
  2908 this.PDU_CDMA_LANGUAGE_INDICATOR           = 0x0D;  // Language Indicator
  2909 this.PDU_CDMA_MSG_USERDATA_CALLBACK_NUMBER = 0x0E;  // Callback Number
  2910 this.PDU_CDMA_MSG_USER_DATA_MSG_STATUS     = 0x14;  // Message Status
  2912 // CDMA Language Indicator: Language groups
  2913 // see 3GPP2 C.R1001-F table 9.2-1
  2914 this.CB_CDMA_LANG_GROUP = [
  2915   null, "en", "fr", "es", "ja", "ko", "zh", "he"
  2916 ];
  2918 // IS-91 Message Type, as defined in TIA/EIA/IS-91-A, Table 9
  2919 this.PDU_CDMA_MSG_CODING_IS_91_TYPE_VOICEMAIL_STATUS = 0x82;
  2920 this.PDU_CDMA_MSG_CODING_IS_91_TYPE_SMS_FULL = 0x83;
  2921 this.PDU_CDMA_MSG_CODING_IS_91_TYPE_CLI = 0x84;
  2922 this.PDU_CDMA_MSG_CODING_IS_91_TYPE_SMS = 0x85;
  2924 // CDMA roaming preference mode
  2925 this.CDMA_ROAMING_PREFERENCE_HOME = 0;
  2926 this.CDMA_ROAMING_PREFERENCE_AFFILIATED = 1;
  2927 this.CDMA_ROAMING_PREFERENCE_ANY = 2;
  2929 this.GECKO_CDMA_ROAMING_PREFERENCE_HOME = "home";
  2930 this.GECKO_CDMA_ROAMING_PREFERENCE_AFFILIATED = "affiliated";
  2931 this.GECKO_CDMA_ROAMING_PREFERENCE_ANY = "any";
  2933 this.CDMA_ROAMING_PREFERENCE_TO_GECKO = [
  2934   GECKO_CDMA_ROAMING_PREFERENCE_HOME,       // CDMA_ROAMING_PREFERENCE_HOME
  2935   GECKO_CDMA_ROAMING_PREFERENCE_AFFILIATED, // CDMA_ROAMING_PREFERENCE_AFFILIATED
  2936   GECKO_CDMA_ROAMING_PREFERENCE_ANY         // CDMA_ROAMING_PREFERENCE_ANY
  2937 ];
  2939 // Information Record Type, reference from ril.h
  2940 this.PDU_CDMA_INFO_REC_TYPE_DISPLAY = 0;
  2941 this.PDU_CDMA_INFO_REC_TYPE_CALLED_PARTY_NUMBER = 1;
  2942 this.PDU_CDMA_INFO_REC_TYPE_CALLING_PARTY_NUMBER = 2;
  2943 this.PDU_CDMA_INFO_REC_TYPE_CONNECTED_NUMBER =3;
  2944 this.PDU_CDMA_INFO_REC_TYPE_SIGNAL = 4;
  2945 this.PDU_CDMA_INFO_REC_TYPE_REDIRECTING_NUMBER = 5;
  2946 this.PDU_CDMA_INFO_REC_TYPE_LINE_CONTROL = 6;
  2947 this.PDU_CDMA_INFO_REC_TYPE_EXTENDED_DISPLAY = 7;
  2948 this.PDU_CDMA_INFO_REC_TYPE_T53_CLIR = 8;
  2949 this.PDU_CDMA_INFO_REC_TYPE_T53_RELEASE = 9;
  2950 this.PDU_CDMA_INFO_REC_TYPE_T53_AUDIO_CONTROL = 10;
  2952 // Display type of extended display of information record,
  2953 // as defined in C.S0005-F v1.0, Table 3.7.5.16-2
  2954 this.INFO_REC_EXTENDED_DISPLAY_BLANK = 0x80;
  2955 this.INFO_REC_EXTENDED_DISPLAY_SKIP = 0x81;
  2956 this.INFO_REC_EXTENDED_DISPLAY_CONTINATION = 0x82;
  2957 this.INFO_REC_EXTENDED_DISPLAY_CALLED_ADDRESS = 0x83;
  2958 this.INFO_REC_EXTENDED_DISPLAY_CAUSE = 0x84;
  2959 this.INFO_REC_EXTENDED_DISPLAY_PROGRESS_INDICATOR = 0x85;
  2960 this.INFO_REC_EXTENDED_DISPLAY_NOTIFICATION_INDICATOR = 0x86;
  2961 this.INFO_REC_EXTENDED_DISPLAY_PROMPT = 0x87;
  2962 this.INFO_REC_EXTENDED_DISPLAY_ACCUMULATED_DIGITS = 0x88;
  2963 this.INFO_REC_EXTENDED_DISPLAY_STATUS = 0x89;
  2964 this.INFO_REC_EXTENDED_DISPLAY_INBAND = 0x8A;
  2965 this.INFO_REC_EXTENDED_DISPLAY_CALLING_ADDRESS = 0x8B;
  2966 this.INFO_REC_EXTENDED_DISPLAY_REASON = 0x8C;
  2967 this.INFO_REC_EXTENDED_DISPLAY_CALLING_PARTY_NAME = 0x8D;
  2968 this.INFO_REC_EXTENDED_DISPLAY_CALLED_PARTY_NAME = 0x8E;
  2969 this.INFO_REC_EXTENDED_DISPLAY_ORIGINAL_CALLED_NAME = 0x8F;
  2970 this.INFO_REC_EXTENDED_DISPLAY_REDIRECT_NAME = 0x90;
  2971 this.INFO_REC_EXTENDED_DISPLAY_CONNECTED_NAME = 0x91;
  2972 this.INFO_REC_EXTENDED_DISPLAY_ORIGINATING_RESTRICTIONS = 0x92;
  2973 this.INFO_REC_EXTENDED_DISPLAY_DATE_TIME_OF_DAY = 0x93;
  2974 this.INFO_REC_EXTENDED_DISPLAY_CALL_APPEARANCE_ID = 0x94;
  2975 this.INFO_REC_EXTENDED_DISPLAY_FEATURE_ADDRESS = 0x95;
  2976 this.INFO_REC_EXTENDED_DISPLAY_REDIRECTION_NAME = 0x96;
  2977 this.INFO_REC_EXTENDED_DISPLAY_REDIRECTION_NUMBER = 0x97;
  2978 this.INFO_REC_EXTENDED_DISPLAY_REDIRECTING_NUMBER = 0x98;
  2979 this.INFO_REC_EXTENDED_DISPLAY_ORIGINAL_CALLED_NUMBER = 0x99;
  2980 this.INFO_REC_EXTENDED_DISPLAY_CONNECTED_NUMBER = 0x9A;
  2981 this.INFO_REC_EXTENDED_DISPLAY_TEXT = 0x9B;
  2983 /**
  2984  * The table for MCC which the length of MNC is 3
  2986  * This table is built from below links.
  2987  * - http://www.itu.int/pub/T-SP-E.212B-2013
  2988  * - http://en.wikipedia.org/wiki/Mobile_Network_Code
  2989  */
  2990 this.MCC_TABLE_FOR_MNC_LENGTH_IS_3 = [
  2991   "302",  // Canada
  2992   "310",  // United States of America
  2993   "311",  // United States of America
  2994   "312",  // United States of America
  2995   "313",  // United States of America
  2996   "316",  // United States of America
  2997   "330",  // Puerto Rico
  2998   "334",  // Mexico
  2999   "338",  // Jamaica
  3000   "342",  // Barbados
  3001   "344",  // Antigua and Barbuda
  3002   "346",  // Cayman Islands
  3003   "348",  // British Virgin Islands
  3004   "350",  // Bermuda
  3005   "352",  // Grenada
  3006   "354",  // Montserrat
  3007   "356",  // Saint Kitts and Nevis
  3008   "358",  // Saint Lucia
  3009   "360",  // Saint Vincent and the Grenadines
  3010   "365",  // Anguilla
  3011   "366",  // Dominica
  3012   "376",  // Turks and Caicos Islands
  3013   "405",  // India
  3014   "708",  // Honduras
  3015   "722",  // Argentina
  3016   "732",  // Colombia
  3017   "750"   // Falkland Islands (Malvinas)
  3018 ];
  3020 // Supplementary service notifications, code2, as defined in 3GPP 27.007 7.17
  3021 this.SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD = 2;
  3022 this.SUPP_SVC_NOTIFICATION_CODE2_RETRIEVED = 3;
  3024 this.GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD    = "RemoteHeld";
  3025 this.GECKO_SUPP_SVC_NOTIFICATION_REMOTE_RESUMED = "RemoteResumed";
  3027 this.GECKO_SUPP_SVC_NOTIFICATION_FROM_CODE2 = {};
  3028 GECKO_SUPP_SVC_NOTIFICATION_FROM_CODE2[SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD] = GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD;
  3029 GECKO_SUPP_SVC_NOTIFICATION_FROM_CODE2[SUPP_SVC_NOTIFICATION_CODE2_RETRIEVED]   = GECKO_SUPP_SVC_NOTIFICATION_REMOTE_RESUMED;
  3031 /**
  3032  * The status for an Over-the-Air Service Provisioning / Over-the-Air
  3033  * Parameter Administration (OTASP/OTAPA) session.
  3035  * @see 3GPP2 C.S0016
  3036  */
  3037 this.GECKO_OTA_STATUS_SPL_UNLOCKED          = "spl_unlocked";
  3038 this.GECKO_OTA_STATUS_SPC_RETRIES_EXCEEDED  = "spc_retries_exceeded";
  3039 this.GECKO_OTA_STATUS_A_KEY_EXCHANGED       = "a_key_exchanged";
  3040 this.GECKO_OTA_STATUS_SSD_UPDATED           = "ssd_updated";
  3041 this.GECKO_OTA_STATUS_NAM_DOWNLOADED        = "nam_downloaded";
  3042 this.GECKO_OTA_STATUS_MDN_DOWNLOADED        = "mdn_downloaded";
  3043 this.GECKO_OTA_STATUS_IMSI_DOWNLOADED       = "imsi_downloaded";
  3044 this.GECKO_OTA_STATUS_PRL_DOWNLOADED        = "prl_downloaded";
  3045 this.GECKO_OTA_STATUS_COMMITTED             = "committed";
  3046 this.GECKO_OTA_STATUS_OTAPA_STARTED         = "otapa_started";
  3047 this.GECKO_OTA_STATUS_OTAPA_STOPPED         = "otapa_stopped";
  3048 this.GECKO_OTA_STATUS_OTAPA_ABORTED         = "otapa_aborted";
  3049 this.CDMA_OTA_PROVISION_STATUS_TO_GECKO = [
  3050   GECKO_OTA_STATUS_SPL_UNLOCKED,
  3051   GECKO_OTA_STATUS_SPC_RETRIES_EXCEEDED,
  3052   GECKO_OTA_STATUS_A_KEY_EXCHANGED,
  3053   GECKO_OTA_STATUS_SSD_UPDATED,
  3054   GECKO_OTA_STATUS_NAM_DOWNLOADED,
  3055   GECKO_OTA_STATUS_MDN_DOWNLOADED,
  3056   GECKO_OTA_STATUS_IMSI_DOWNLOADED,
  3057   GECKO_OTA_STATUS_PRL_DOWNLOADED,
  3058   GECKO_OTA_STATUS_COMMITTED,
  3059   GECKO_OTA_STATUS_OTAPA_STARTED,
  3060   GECKO_OTA_STATUS_OTAPA_STOPPED,
  3061   GECKO_OTA_STATUS_OTAPA_ABORTED
  3062 ];
  3064 // Allow this file to be imported via Components.utils.import().
  3065 this.EXPORTED_SYMBOLS = Object.keys(this);

mercurial