mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 833754 - Part 1: RIL changes for call barring through MMI codes. r=ferjm
This commit is contained in:
parent
581c731632
commit
e2d1b61f96
@ -576,10 +576,13 @@ this.ICC_STATUS_ERROR_WRONG_PARAMETERS = 0x6a;
|
||||
this.ICC_CB_FACILITY_SIM = "SC";
|
||||
this.ICC_CB_FACILITY_FDN = "FD";
|
||||
this.ICC_CB_FACILITY_BAOC = "AO";
|
||||
this.ICC_CB_FACILITY_BOIC = "OI";
|
||||
this.ICC_CB_FACILITY_BOIC_EX_HC = "OX";
|
||||
this.ICC_CB_FACILITY_BAOIC = "OI";
|
||||
this.ICC_CB_FACILITY_BAOICxH = "OX";
|
||||
this.ICC_CB_FACILITY_BAIC = "AI";
|
||||
this.ICC_CB_FACILITY_BIC_ROAM = "IR";
|
||||
this.ICC_CB_FACILITY_BAICr = "IR";
|
||||
this.ICC_CB_FACILITY_BA_ALL = "AB";
|
||||
this.ICC_CB_FACILITY_BA_MO = "AG";
|
||||
this.ICC_CB_FACILITY_BA_MT = "AC";
|
||||
|
||||
// ICC service class
|
||||
// TS 27.007, clause 7.4, +CLCK
|
||||
@ -2508,10 +2511,10 @@ this.CALL_BARRING_PROGRAM_INCOMING_ROAMING = 4;
|
||||
|
||||
this.CALL_BARRING_PROGRAM_TO_FACILITY = {};
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_ALL_OUTGOING] = ICC_CB_FACILITY_BAOC;
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL] = ICC_CB_FACILITY_BOIC;
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL_EXCEPT_HOME] = ICC_CB_FACILITY_BOIC_EX_HC;
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL] = ICC_CB_FACILITY_BAOIC;
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL_EXCEPT_HOME] = ICC_CB_FACILITY_BAOICxH;
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_ALL_INCOMING] = ICC_CB_FACILITY_BAIC;
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_INCOMING_ROAMING] = ICC_CB_FACILITY_BIC_ROAM;
|
||||
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_INCOMING_ROAMING] = ICC_CB_FACILITY_BAICr;
|
||||
|
||||
// CLIR constants. Must be in sync with nsIDOMMozMobileConnection interface
|
||||
this.CLIR_DEFAULT = 0;
|
||||
@ -2575,6 +2578,17 @@ this.MMI_SC_BA_ALL = "330";
|
||||
this.MMI_SC_BA_MO = "333";
|
||||
this.MMI_SC_BA_MT = "353";
|
||||
|
||||
this.MMI_SC_TO_CB_FACILITY = {};
|
||||
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BAOC] = ICC_CB_FACILITY_BAOC;
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BAOIC] = ICC_CB_FACILITY_BAOIC;
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BAOICxH] = ICC_CB_FACILITY_BAOICxH;
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BAIC] = ICC_CB_FACILITY_BAIC;
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BAICr] = ICC_CB_FACILITY_BAICr;
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BA_ALL] = ICC_CB_FACILITY_BA_ALL;
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BA_MO] = ICC_CB_FACILITY_BA_MO;
|
||||
MMI_SC_TO_CB_FACILITY[MMI_SC_BA_MT] = ICC_CB_FACILITY_BA_MT;
|
||||
|
||||
// MMI service code key strings.
|
||||
this.MMI_KS_SC_CALL_BARRING = "scCallBarring";
|
||||
this.MMI_KS_SC_CALL_FORWARDING = "scCallForwarding";
|
||||
@ -2606,6 +2620,7 @@ this.MMI_SM_KS_PIN2_CHANGED = "smPin2Changed";
|
||||
this.MMI_SM_KS_PIN_UNBLOCKED = "smPinUnblocked";
|
||||
this.MMI_SM_KS_PIN2_UNBLOCKED = "smPin2Unblocked";
|
||||
this.MMI_SM_KS_SERVICE_ENABLED = "smServiceEnabled";
|
||||
this.MMI_SM_KS_SERVICE_ENABLED_FOR = "smServiceEnabledFor";
|
||||
this.MMI_SM_KS_SERVICE_DISABLED = "smServiceDisabled";
|
||||
this.MMI_SM_KS_SERVICE_REGISTERED = "smServiceRegistered";
|
||||
this.MMI_SM_KS_SERVICE_ERASED = "smServiceErased";
|
||||
@ -2617,6 +2632,25 @@ this.MMI_SM_KS_CLIR_DEFAULT_ON_NEXT_CALL_OFF = "smClirDefaultOnNextCallOff";
|
||||
this.MMI_SM_KS_CLIR_DEFAULT_OFF_NEXT_CALL_ON = "smClirDefaultOffNextCallOn";
|
||||
this.MMI_SM_KS_CLIR_DEFAULT_OFF_NEXT_CALL_OFF = "smClirDefaultOffNextCallOff";
|
||||
|
||||
// MMI Service class
|
||||
this.MMI_KS_SERVICE_CLASS_VOICE = "serviceClassVoice";
|
||||
this.MMI_KS_SERVICE_CLASS_DATA = "serviceClassData";
|
||||
this.MMI_KS_SERVICE_CLASS_FAX = "serviceClassFax";
|
||||
this.MMI_KS_SERVICE_CLASS_SMS = "serviceClassSms";
|
||||
this.MMI_KS_SERVICE_CLASS_DATA_SYNC = "serviceClassDataSync";
|
||||
this.MMI_KS_SERVICE_CLASS_DATA_ASYNC = "serviceClassDataAsync";
|
||||
this.MMI_KS_SERVICE_CLASS_PACKET = "serviceClassPacket";
|
||||
this.MMI_KS_SERVICE_CLASS_PAD = "serviceClassPad";
|
||||
|
||||
this.MMI_KS_SERVICE_CLASS_MAPPING = {};
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_VOICE] = MMI_KS_SERVICE_CLASS_VOICE;
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_DATA] = MMI_KS_SERVICE_CLASS_DATA;
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_FAX] = MMI_KS_SERVICE_CLASS_FAX;
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_SMS] = MMI_KS_SERVICE_CLASS_SMS;
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_DATA_SYNC] = MMI_KS_SERVICE_CLASS_DATA_SYNC;
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_DATA_ASYNC] = MMI_KS_SERVICE_CLASS_DATA_ASYNC;
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_PACKET] = MMI_KS_SERVICE_CLASS_PACKET;
|
||||
MMI_KS_SERVICE_CLASS_MAPPING[ICC_SERVICE_CLASS_PAD] = MMI_KS_SERVICE_CLASS_PAD;
|
||||
/**
|
||||
* CDMA PDU constants
|
||||
*/
|
||||
|
@ -2545,7 +2545,7 @@ let RIL = {
|
||||
options.clirMode = CLIR_SUPPRESSION;
|
||||
break;
|
||||
default:
|
||||
_sendMMIError(MMI_ERROR_KS_ERROR);
|
||||
_sendMMIError(MMI_ERROR_KS_NOT_SUPPORTED, MMI_KS_SC_CLIR);
|
||||
return;
|
||||
}
|
||||
this.setCLIR(options);
|
||||
@ -2560,6 +2560,24 @@ let RIL = {
|
||||
case MMI_SC_BA_ALL:
|
||||
case MMI_SC_BA_MO:
|
||||
case MMI_SC_BA_MT:
|
||||
options.mmiServiceCode = MMI_KS_SC_CALL_BARRING;
|
||||
options.password = mmi.sia || "";
|
||||
options.serviceClass = this._siToServiceClass(mmi.sib);
|
||||
options.facility = MMI_SC_TO_CB_FACILITY[sc];
|
||||
options.procedure = mmi.procedure;
|
||||
if (mmi.procedure === MMI_PROCEDURE_INTERROGATION) {
|
||||
this.queryICCFacilityLock(options);
|
||||
return;
|
||||
} else if (mmi.procedure === MMI_PROCEDURE_ACTIVATION) {
|
||||
options.enabled = 1;
|
||||
} else if (mmi.procedure === MMI_PROCEDURE_DEACTIVATION) {
|
||||
options.enabled = 0;
|
||||
} else {
|
||||
_sendMMIError(MMI_ERROR_KS_NOT_SUPPORTED, MMI_KS_SC_CALL_BARRING);
|
||||
return;
|
||||
}
|
||||
this.setICCFacilityLock(options);
|
||||
return;
|
||||
// Call waiting
|
||||
case MMI_SC_CALL_WAITING:
|
||||
_sendMMIError(MMI_ERROR_KS_NOT_SUPPORTED);
|
||||
@ -5291,8 +5309,35 @@ RIL[REQUEST_QUERY_FACILITY_LOCK] = function REQUEST_QUERY_FACILITY_LOCK(length,
|
||||
options.errorMsg = RIL_ERROR_TO_GECKO_ERROR[options.rilRequestError];
|
||||
}
|
||||
|
||||
let services;
|
||||
if (length) {
|
||||
options.enabled = Buf.readUint32List()[0] === 0 ? false : true;
|
||||
// Buf.readUint32List()[0] for Call Barring is a bit vector of services.
|
||||
services = Buf.readUint32List()[0];
|
||||
} else {
|
||||
options.success = false;
|
||||
options.errorMsg = GECKO_ERROR_GENERIC_FAILURE;
|
||||
this.sendChromeMessage(options);
|
||||
return;
|
||||
}
|
||||
|
||||
options.enabled = services === 0 ? false : true;
|
||||
|
||||
if (options.success && (options.rilMessageType === "sendMMI")) {
|
||||
if (!options.enabled) {
|
||||
options.statusMessage = MMI_SM_KS_SERVICE_DISABLED;
|
||||
} else {
|
||||
options.statusMessage = MMI_SM_KS_SERVICE_ENABLED_FOR;
|
||||
let serviceClass = [];
|
||||
for (let serviceClassMask = 1;
|
||||
serviceClassMask <= ICC_SERVICE_CLASS_MAX;
|
||||
serviceClassMask <<= 1) {
|
||||
if ((serviceClassMask & services) != 0) {
|
||||
serviceClass.push(MMI_KS_SERVICE_CLASS_MAPPING[serviceClassMask]);
|
||||
}
|
||||
}
|
||||
|
||||
options.additionalInformation = serviceClass;
|
||||
}
|
||||
}
|
||||
this.sendChromeMessage(options);
|
||||
};
|
||||
@ -5301,7 +5346,19 @@ RIL[REQUEST_SET_FACILITY_LOCK] = function REQUEST_SET_FACILITY_LOCK(length, opti
|
||||
if (!options.success) {
|
||||
options.errorMsg = RIL_ERROR_TO_GECKO_ERROR[options.rilRequestError];
|
||||
}
|
||||
|
||||
options.retryCount = length ? Buf.readUint32List()[0] : -1;
|
||||
|
||||
if (options.success && (options.rilMessageType === "sendMMI")) {
|
||||
switch (options.procedure) {
|
||||
case MMI_PROCEDURE_ACTIVATION:
|
||||
options.statusMessage = MMI_SM_KS_SERVICE_ENABLED;
|
||||
break;
|
||||
case MMI_PROCEDURE_DEACTIVATION:
|
||||
options.statusMessage = MMI_SM_KS_SERVICE_DISABLED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.sendChromeMessage(options);
|
||||
};
|
||||
RIL[REQUEST_CHANGE_BARRING_PASSWORD] = null;
|
||||
|
Loading…
Reference in New Issue
Block a user