summaryrefslogtreecommitdiffstats
path: root/telephony/java/com/android
diff options
context:
space:
mode:
authorcodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-30 10:59:39 +0200
committercodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-30 10:59:39 +0200
commitd38b842d1a490a2bff822f3ff93cf83fbfd07231 (patch)
tree5478641e29e4a5dbf22f91fff0e8c2372d885d9a /telephony/java/com/android
parent44f9c784306665b040acab64b37aa514f8e22920 (diff)
downloadframeworks_base-d38b842d1a490a2bff822f3ff93cf83fbfd07231.zip
frameworks_base-d38b842d1a490a2bff822f3ff93cf83fbfd07231.tar.gz
frameworks_base-d38b842d1a490a2bff822f3ff93cf83fbfd07231.tar.bz2
Smdk4210RIL: fix signalstrength
based on http://review.cyanogenmod.com/#/c/18220/ Change-Id: I872221e58e89412fcecf67c7208ab2c89aac7c04
Diffstat (limited to 'telephony/java/com/android')
-rw-r--r--telephony/java/com/android/internal/telephony/Smdk4210RIL.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/telephony/java/com/android/internal/telephony/Smdk4210RIL.java b/telephony/java/com/android/internal/telephony/Smdk4210RIL.java
index 106e0f8..cc3462b 100644
--- a/telephony/java/com/android/internal/telephony/Smdk4210RIL.java
+++ b/telephony/java/com/android/internal/telephony/Smdk4210RIL.java
@@ -620,20 +620,29 @@ public class Smdk4210RIL extends RIL implements CommandsInterface {
int numInts = 12;
int response[];
- /* TODO: Add SignalStrength class to match RIL_SignalStrength */
+ // Get raw data
response = new int[numInts];
for (int i = 0 ; i < numInts ; i++) {
response[i] = p.readInt();
}
- // SamsungRIL is a v3 RIL, fill the rest with -1
- for (int i = 7; i < numInts; i++) {
- response[i] = -1;
+ Log.d(LOG_TAG, "responseSignalStength BEFORE: gsmDbm=" + response[0]);
+
+ //Samsung sends the count of bars that should be displayed instead of
+ //a real signal strength
+ int num_bars = (response[0] & 0xff00) >> 8;
+
+ // Translate number of bars into something SignalStrength.java can understand
+ switch (num_bars) {
+ case 0 : response[0] = 1; break; // map to 0 bars
+ case 1 : response[0] = 3; break; // map to 1 bar
+ case 2 : response[0] = 5; break; // map to 2 bars
+ case 3 : response[0] = 8; break; // map to 3 bars
+ case 4 : response[0] = 12; break; // map to 4 bars
+ case 5 : response[0] = 15; break; // map to 4 bars but give an extra 10 dBm
+ default : response[0] &= 0xff; break; // no idea; just pass value through
}
- /* Matching Samsung signal strength to asu.
- Method taken from Samsungs cdma/gsmSignalStateTracker */
- response[0] = ((response[0] & 0xFF00) >> 8) * 3; //gsmDbm
response[1] = -1; //gsmEcio
response[2] = (response[2] < 0)?-120:-response[2]; //cdmaDbm
response[3] = (response[3] < 0)?-160:-response[3]; //cdmaEcio
@@ -643,6 +652,8 @@ public class Smdk4210RIL extends RIL implements CommandsInterface {
response[6] = -1;
}
+ Log.d(LOG_TAG, "responseSignalStength AFTER: gsmDbm=" + response[0]);
+
return response;
}
}