summaryrefslogtreecommitdiffstats
path: root/qcom
diff options
context:
space:
mode:
authorEdward Wang <ewang@cyngn.com>2015-04-10 16:57:05 -0700
committerMatt Wagantall <mwagantall@cyngn.com>2016-02-19 14:07:44 -0800
commitc41b1230f86a7af5c422f4fa1d014be1167101ee (patch)
treecf1885b37edcdc46f06b5aff322d1d2931992cca /qcom
parentae7d8f71276ad27319efe9030c0a1f381802cd13 (diff)
downloadandroid_hardware_qcom_fm-c41b1230f86a7af5c422f4fa1d014be1167101ee.tar.gz
android_hardware_qcom_fm-c41b1230f86a7af5c422f4fa1d014be1167101ee.tar.bz2
android_hardware_qcom_fm-c41b1230f86a7af5c422f4fa1d014be1167101ee.zip
FM: Store tag num/value in sequence
Storing tag into mTag[] array should not depend on its index. If one tag num/value are invalid and it will create empty string in the tag array, which might return the empty string during query. Change-Id: I35287e5dd1e97c6a7196d02b0aa7c9efcea4d3a3 (cherry picked from commit 2a2612f5a3125dadd4c804d4104ce996b91a4d9e)
Diffstat (limited to 'qcom')
-rw-r--r--qcom/fmradio/FmReceiver.java20
1 files changed, 13 insertions, 7 deletions
diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index 732c0b2..81b395e 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -1475,7 +1475,7 @@ public class FmReceiver extends FmTransceiver
int bytes_read;
String rt = "";
int rt_len;
- int i, j = 2;
+ int i, count, avail_tag_num = 0;
byte tag_code, tag_len, tag_start_pos;
bytes_read = FmReceiverJNI.getBufferNative(sFd, rt_plus, BUF_RTPLUS);
@@ -1487,14 +1487,20 @@ public class FmReceiver extends FmTransceiver
if ((rt != "") && (rt != null)) {
rt_len = rt.length();
mRdsData.setTagNums(0);
- for (i = 1; (i <= 2) && (j < rt_plus[LEN_IND]); i++) {
- tag_code = rt_plus[j++];
- tag_start_pos = rt_plus[j++];
- tag_len = rt_plus[j++];
+ avail_tag_num = (rt_plus[LEN_IND] - 2)/3;
+ if (avail_tag_num > 2) {
+ avail_tag_num = 2;
+ }
+ count = 1;
+ for (i = 0; i < avail_tag_num; i++) {
+ tag_code = rt_plus[2+3*i];
+ tag_start_pos = rt_plus[3+3*i];
+ tag_len = rt_plus[4+3*i];
if (((tag_len + tag_start_pos) <= rt_len) && (tag_code > 0)) {
mRdsData.setTagValue(rt.substring(tag_start_pos,
- (tag_len + tag_start_pos)), i);
- mRdsData.setTagCode(tag_code, i);
+ (tag_len + tag_start_pos)), count);
+ mRdsData.setTagCode(tag_code, count);
+ count++;
}
}
} else {