diff options
author | Edward Wang <ewang@cyngn.com> | 2015-04-10 16:57:05 -0700 |
---|---|---|
committer | Edward Wang <ewang@cyngn.com> | 2015-04-10 17:43:49 -0700 |
commit | 2a2612f5a3125dadd4c804d4104ce996b91a4d9e (patch) | |
tree | 1c7efbf6610511da6906bb9f114311d5f842c7c2 /qcom | |
parent | 087fb5a9128f8a9d96289815b1ae4be2ea98981a (diff) | |
download | android_hardware_qcom_fm-2a2612f5a3125dadd4c804d4104ce996b91a4d9e.tar.gz android_hardware_qcom_fm-2a2612f5a3125dadd4c804d4104ce996b91a4d9e.tar.bz2 android_hardware_qcom_fm-2a2612f5a3125dadd4c804d4104ce996b91a4d9e.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
Diffstat (limited to 'qcom')
-rw-r--r-- | qcom/fmradio/FmReceiver.java | 20 |
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 { |