KlteRIL: Handle RIL_UNSOL_NITZ_TIME_RECEIVED
* This fixes auto time zone * This is related to how it was handled in the old SamsungQualcommRIL class (deprecated) but the Parcel is fixed rather than handling it directly in the RIL subclass * This is done because after we handle it, it's still handled by processUnsolicited in the super class, which undoes our changes * The extra "garbage" that is sent in the RIL_UNSOL_NITZ_TIME_RECEIVED parcel seems to be country MCC code for whatever reason Change-Id: I70982873e6304d81794bdd03eb8d9a1c1d3f3a55
This commit is contained in:
parent
02f25ecebc
commit
a4fd548352
1 changed files with 21 additions and 0 deletions
|
@ -57,6 +57,24 @@ public class KlteRIL extends RIL {
|
|||
mQANElements = 6;
|
||||
}
|
||||
|
||||
private void
|
||||
fixNitz(Parcel p) {
|
||||
int dataPosition = p.dataPosition();
|
||||
String nitz = p.readString();
|
||||
long nitzReceiveTime = p.readLong();
|
||||
|
||||
String[] nitzParts = nitz.split(",");
|
||||
if (nitzParts.length >= 4) {
|
||||
// 0=date, 1=time+zone, 2=dst, 3(+)=garbage that confuses ServiceStateTracker
|
||||
nitz = nitzParts[0] + "," + nitzParts[1] + "," + nitzParts[2];
|
||||
p.setDataPosition(dataPosition);
|
||||
p.writeString(nitz);
|
||||
p.writeLong(nitzReceiveTime);
|
||||
// The string is shorter now, drop the extra bytes
|
||||
p.setDataSize(p.dataPosition());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void
|
||||
dial(String address, int clirMode, UUSInfo uusInfo, Message result) {
|
||||
|
@ -292,6 +310,9 @@ public class KlteRIL extends RIL {
|
|||
int newResponse = response;
|
||||
|
||||
switch(response) {
|
||||
case RIL_UNSOL_NITZ_TIME_RECEIVED:
|
||||
fixNitz(p);
|
||||
break;
|
||||
case RIL_UNSOL_ON_SS_LL:
|
||||
newResponse = RIL_UNSOL_ON_SS;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue