summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdward Wang <ewang@cyngn.com>2015-04-10 16:57:05 -0700
committerHoward Harte <hharte@cyngn.com>2015-04-11 17:33:55 +0000
commit62f0d2e86fdd562a349117b35351d9ca5693ef39 (patch)
treefe96ccbe0b12b6ace742f4ffa9335aa1f4d8112a
parentd71550fd2deaba38ad3a030166f8086af7f6d5a3 (diff)
downloadandroid_hardware_qcom_fm-62f0d2e86fdd562a349117b35351d9ca5693ef39.tar.gz
android_hardware_qcom_fm-62f0d2e86fdd562a349117b35351d9ca5693ef39.tar.bz2
android_hardware_qcom_fm-62f0d2e86fdd562a349117b35351d9ca5693ef39.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
-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 {