summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2013-08-06 13:48:38 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2013-08-06 13:48:38 -0700
commit1fd129339d052426c1459e36e5384422af63851c (patch)
tree86dc9ad14b9bf3818c74b95bae7a3de7a21c9bb3
parent4001342393f9c000830f4533d3bd6ed9c3ce4d97 (diff)
parent8204f7166eb03dc32692ec20599a23c3fb775f35 (diff)
downloadandroid_hardware_qcom_fm-1fd129339d052426c1459e36e5384422af63851c.tar.gz
android_hardware_qcom_fm-1fd129339d052426c1459e36e5384422af63851c.tar.bz2
android_hardware_qcom_fm-1fd129339d052426c1459e36e5384422af63851c.zip
Merge "FM-APP2: Added support for configurable FM band sweep"
-rw-r--r--fmapp2/res/layout/band_sweep_setting.xml90
-rw-r--r--fmapp2/res/layout/fmstats.xml11
-rw-r--r--fmapp2/res/values/arrays.xml20
-rw-r--r--fmapp2/res/values/strings.xml13
-rw-r--r--fmapp2/src/com/caf/fmradio/FMStats.java1064
-rw-r--r--fmapp2/src/com/caf/fmradio/FmSharedPreferences.java49
-rw-r--r--fmapp2/src/com/caf/fmradio/Settings.java285
7 files changed, 1021 insertions, 511 deletions
diff --git a/fmapp2/res/layout/band_sweep_setting.xml b/fmapp2/res/layout/band_sweep_setting.xml
new file mode 100644
index 0000000..777332c
--- /dev/null
+++ b/fmapp2/res/layout/band_sweep_setting.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2013 The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of The Linux Foundation nor
+ * the names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:scrollbars="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_gravity="center_horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+
+ <TextView
+ android:id="@+id/lbl_band_sweep_spinner"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:textSize="15sp"
+ android:text="@string/band_sweep_choose"/>
+
+ <Spinner
+ android:id="@+id/band_sweep_spinner"
+ android:layout_width="fill_parent"
+ android:layout_height="75dp"
+ android:layout_below="@id/lbl_band_sweep_spinner"
+ android:prompt="@string/band_method_prompt"
+ android:textSize="25sp"/>
+
+ <TextView
+ android:id="@+id/LabelStartdelay"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:textSize="15sp"
+ android:layout_below="@id/band_sweep_spinner"
+ android:text="@string/enter_start_delay_time"/>
+
+ <EditText
+ android:id="@+id/txtboxDelayTime"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:textSize="15sp"
+ android:inputType="number"
+ android:layout_toRightOf="@id/LabelStartdelay"/>
+
+ <TextView
+ android:id="@+id/LabelDwellTime"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:textSize="15sp"
+ android:layout_below="@id/LabelStartdelay"
+ android:text="@string/enter_dwell_time"/>
+
+ <EditText
+ android:id="@+id/txtboxDwellTime"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:textSize="15sp"
+ android:inputType="number"
+ android:layout_toRightOf="@id/LabelDwellTime"/>
+
+ </LinearLayout>
+
+</ScrollView>
diff --git a/fmapp2/res/layout/fmstats.xml b/fmapp2/res/layout/fmstats.xml
index 2501a51..1cf8023 100644
--- a/fmapp2/res/layout/fmstats.xml
+++ b/fmapp2/res/layout/fmstats.xml
@@ -50,9 +50,18 @@
<Button
android:id= "@+id/Runbutton"
- android:text="@string/test_run"
+ android:text="@string/band_sweep_setting"
android:layout_width="wrap_content"
android:layout_height="100dp"
+ android:textSize="25dp"
+ android:visibility="gone"/>
+
+ <TextView
+ android:id= "@+id/BandSweepSetting"
+ android:text="@string/band_sweep_setting"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_toRightOf="@id/Runbutton"
android:textSize="25sp"
android:visibility="gone"/>
diff --git a/fmapp2/res/values/arrays.xml b/fmapp2/res/values/arrays.xml
index dd4b87d..2fbe0d2 100644
--- a/fmapp2/res/values/arrays.xml
+++ b/fmapp2/res/values/arrays.xml
@@ -243,6 +243,7 @@
<item>Turkey</item>
<item>United Kingdom </item>
<item>United States</item>
+ <item>User Defined Band</item>
</string-array>
<string-array name="regional_band_values">
@@ -282,6 +283,7 @@
<item>33</item>
<item>34</item>
<item>35</item>
+ <item>36</item>
</string-array>
<string-array name="regional_band_summary">
@@ -321,6 +323,7 @@
<item>Turkey (87.5MHz To 108.0MHz In 100 Khz Steps)</item>
<item>United Kingdom (87.5MHz To 108.0MHz In 100 Khz Steps)</item>
<item>United States (88.1MHz To 107.9MHz In 200 Khz Steps)</item>
+ <item>User Defined Band</item>
</string-array>
<string-array name="rf_cfg">
@@ -368,4 +371,21 @@
<item> RF Statistics</item>
</string-array>
+ <string-array name="channel_spacing_val">
+ <item>2</item>
+ <item>1</item>
+ <item>0</item>
+ </string-array>
+
+ <string-array name="channel_spacing_entries">
+ <item>50 Khz</item>
+ <item>100 Khz</item>
+ <item>200 Khz</item>
+ </string-array>
+
+ <string-array name="band_sweep_methods">
+ <item>Manual</item>
+ <item>From File</item>
+ </string-array>
+
</resources>
diff --git a/fmapp2/res/values/strings.xml b/fmapp2/res/values/strings.xml
index 12c9778..8fdc938 100644
--- a/fmapp2/res/values/strings.xml
+++ b/fmapp2/res/values/strings.xml
@@ -247,4 +247,17 @@
<string name="enter_RxRePeatCount">Enter RxRePeat count</string>
<string name="set_RxRePeatCount">Config RxRePeat count</string>
+ <string name="usr_def_band_min">Lower Freq Limit(In Mhz)</string>
+ <string name="usr_def_band_max">Higher Freq Limit(In Mhz)</string>
+ <string name="sel_chanl_spacing">Select Channel Spacing</string>
+ <string name="chanl_spacing">Channel Spacing</string>
+
+ <string name="band_method_prompt">Select Method</string>
+ <string name="enter_start_delay_time">Start Delay Time</string>
+ <string name="enter_dwell_time">Dwell Time</string>
+ <string name="band_sweep_setting">Sweep Setting</string>
+ <string name="band_sweep_setting_set">Set</string>
+ <string name="band_sweep_setting_cancel">Cancel</string>
+ <string name="band_sweep_choose">Choose Band Sweep Method</string>
+
</resources>
diff --git a/fmapp2/src/com/caf/fmradio/FMStats.java b/fmapp2/src/com/caf/fmradio/FMStats.java
index 4014b8e..e587c08 100644
--- a/fmapp2/src/com/caf/fmradio/FMStats.java
+++ b/fmapp2/src/com/caf/fmradio/FMStats.java
@@ -55,6 +55,10 @@ import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import qcom.fmradio.FmReceiver;
import android.os.SystemProperties;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.view.LayoutInflater;
+import android.content.DialogInterface;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -62,7 +66,8 @@ import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import android.os.SystemProperties;
-
+import java.io.BufferedReader;
+import java.io.FileReader;
public class FMStats extends Activity {
@@ -77,12 +82,13 @@ public class FMStats extends Activity {
private FmReceiver mReceiver;
+ TextView bandSweepSettingButton;
+
/*Data structure for band*/
private class Band {
-
- public int lFreq;
- public int hFreq;
- public int Spacing;
+ public int lFreq;
+ public int hFreq;
+ public int Spacing;
}
/* Data structure for Result*/
private class Result {
@@ -141,47 +147,51 @@ public class FMStats extends Activity {
public String getSINR() {
return mSINR;
}
-
};
/*constant column header*/
Result mColumnHeader = new Result();
boolean mTestRunning = false;
- FmRfItemSelectedListener mSpinFmRfListener = new FmRfItemSelectedListener();
- RfCfgItemSelectedListener mSpinRfCfgListener = new RfCfgItemSelectedListener();
+ FmRfItemSelectedListener mSpinFmRfListener =
+ new FmRfItemSelectedListener();
+ RfCfgItemSelectedListener mSpinRfCfgListener =
+ new RfCfgItemSelectedListener();
CfgRfItemSelectedListener1 mSpinCfgRfListener1 = null;
CfgRfItemSelectedListener2 mSpinCfgRfListener2 = null;
-
+ BandSweepMthdsSelectedListener mSweepMthdsListener =
+ new BandSweepMthdsSelectedListener();
int mTestSelected = 0;
boolean mIsSearching = false;
private static String LOGTAG = "FMStats";
private static IFMRadioService mService = null;
- private Thread mMultiUpdateThread =null;
- private static final int STATUS_UPDATE =1;
- private static final int STATUS_DONE =2;
- private static final int STOP_ROW_ID =200;
+ private Thread mMultiUpdateThread = null;
+ private static final int STATUS_UPDATE = 1;
+ private static final int STATUS_DONE = 2;
+ private static final int STOP_ROW_ID = 200;
private static final int NEW_ROW_ID = 300;
private int mStopIds = STOP_ROW_ID;
private int mNewRowIds = NEW_ROW_ID;
private static final int SCAN_DWELL_PERIOD = 1;
- private static final int CUR_FREQ_TEST =0;
+ private static final int CUR_FREQ_TEST = 0;
private static final int CUR_MULTI_TEST = 1;
private static final int SEARCH_TEST =2;
- private static final int SWEEP_TEST =3;
- private Band mBand =null;
+ private static final int SWEEP_TEST = 3;
+ private Band mBand = null;
private Band mSync = null;
int Lo = 1, Auto = 0;
- private FileOutputStream mFileCursor =null;
+ private FileOutputStream mFileCursor = null;
private String mCurrentFileName = null;
Spinner spinOptionFmRf;
+ Spinner spinOptionBandSweepMthds;
ArrayAdapter<CharSequence> adaptCfgRf;
ArrayAdapter<CharSequence> adaptRfCfg;
ArrayAdapter<CharSequence> adaptFmRf;
+ ArrayAdapter<CharSequence> bandSweepMthds;
private static boolean mIsTransportSMD = false;
@@ -204,27 +214,42 @@ public class FMStats extends Activity {
private static final int MIN_AF_JMP_RMSSI_SAMPLES = 0;
private static final int MAX_AF_JMP_RMSSI_SAMPLES = 255;
+ private static final int DIALOG_BAND_SWEEP_SETTING = 1;
+
+ private int prevDwellTime = 2; //2secs
+ private int prevDelayTime = 0;//0secs
+ private int prevSweepMthd = 0; //Manual (using band min, max)
+
+ private int curSweepMthd = 0;
+
+ private final String FREQ_LIST_FILE_NAME = "/freq_list_comma_separated.txt";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.fmstats);
- spinOptionFmRf = (Spinner) findViewById(R.id.spinner);
- adaptFmRf = ArrayAdapter.createFromResource(
- this, R.array.stats_options, android.R.layout.simple_spinner_item);
- adaptFmRf.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinOptionFmRf = (Spinner)findViewById(R.id.spinner);
+ adaptFmRf = ArrayAdapter.createFromResource
+ (this, R.array.stats_options
+ , android.R.layout.simple_spinner_item);
+ adaptFmRf.setDropDownViewResource
+ (android.R.layout.simple_spinner_dropdown_item);
if (spinOptionFmRf != null) {
spinOptionFmRf.setAdapter(adaptFmRf);
spinOptionFmRf.setOnItemSelectedListener(mSpinFmRfListener);
}
+ bandSweepMthds = ArrayAdapter.createFromResource
+ (this, R.array.band_sweep_methods,
+ android.R.layout.simple_spinner_item);
+
checkTransportLayer();
if (!isTransportLayerSMD()) {
mSpinCfgRfListener1 = new CfgRfItemSelectedListener1();
adaptCfgRf = ArrayAdapter.createFromResource(
this, R.array.cfg_rf1,
android.R.layout.simple_spinner_item);
- } else {
+ }else {
mSpinCfgRfListener2 = new CfgRfItemSelectedListener2();
adaptCfgRf = ArrayAdapter.createFromResource(
this, R.array.cfg_rf2,
@@ -238,194 +263,206 @@ public class FMStats extends Activity {
if(mReceiver == null)
mReceiver = new FmReceiver();
- long curTime = System.currentTimeMillis();
- mCurrentFileName = "FMStats_".concat(Long.toString(curTime).concat(".txt"));
- Log.e(LOGTAG,"Filename is "+mCurrentFileName);
+ long curTime = System.currentTimeMillis();
+ mCurrentFileName = "FMStats_".concat(
+ Long.toString(curTime).concat(".txt")
+ );
+ Log.e(LOGTAG,"Filename is " + mCurrentFileName);
try {
- mFileCursor = openFileOutput(mCurrentFileName, Context.MODE_PRIVATE);
+ mFileCursor = openFileOutput(
+ mCurrentFileName,
+ Context.MODE_PRIVATE);
if(null != mFileCursor) {
Log.e(LOGTAG, "location of the file is"+getFilesDir());
}
- } catch (IOException e) {
- e.printStackTrace();
+ }catch (IOException e) {
+ e.printStackTrace();
Log.e(LOGTAG,"Couldn't create the file to writeLog");
mCurrentFileName = null;
}
- if (false == bindToService(this, osc))
- {
- Log.d(LOGTAG, "onCreate: Failed to Start Service");
- }
- else
- {
- Log.d(LOGTAG, "onCreate: Start Service completed successfully");
+ if (false == bindToService(this, osc)) {
+ Log.d(LOGTAG, "onCreate: Failed to Start Service");
+ }else {
+ Log.d(LOGTAG, "onCreate: Start Service completed successfully");
}
- /*Initialize the column header with
- constant values*/
- mColumnHeader.setFreq("Freq");
- mColumnHeader.setRSSI("RMSSI");
- mColumnHeader.setIoC("IoC");
+ /*Initialize the column header with
+ constant values*/
+ mColumnHeader.setFreq("Freq");
+ mColumnHeader.setRSSI("RMSSI");
+ mColumnHeader.setIoC("IoC");
mColumnHeader.setSINR("SINR");
- mColumnHeader.setMpxDcc("Offset");
- mColumnHeader.setIntDet("IntDet");
+ mColumnHeader.setMpxDcc("Offset");
+ mColumnHeader.setIntDet("IntDet");
+
+ bandSweepSettingButton = (TextView)findViewById(R.id.BandSweepSetting);
+ if(bandSweepSettingButton != null) {
+ bandSweepSettingButton.setOnClickListener(mClicktBandSweepSettingListener);
+ }
}
public void onDestroy() {
if(null != mFileCursor ) {
- try {
- mFileCursor.close();
+ try {
+ mFileCursor.close();
} catch (IOException e) {
-
e.printStackTrace();
}
}
- /*Stop the thread by interrupting it*/
- if(mMultiUpdateThread != null) {
- mMultiUpdateThread.interrupt();
- mMultiUpdateThread = null;
- }
- /*Stop the search/scan if there is an ongoing*/
+ /*Stop the thread by interrupting it*/
+ if(mMultiUpdateThread != null) {
+ mMultiUpdateThread.interrupt();
+ mMultiUpdateThread = null;
+ }
+ /*Stop the search/scan if there is an ongoing*/
if(SEARCH_TEST == mTestSelected)
{
- Log.d(LOGTAG, "Stop Search\n");
- try {
- mService.cancelSearch();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ Log.d(LOGTAG, "Stop Search\n");
+ try {
+ mService.cancelSearch();
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
}
unbindFromService(this);
Log.d(LOGTAG, "onDestroy: unbindFromService completed");
mReceiver = null;
mService = null;
+ removeDialog(DIALOG_BAND_SWEEP_SETTING);
super.onDestroy();
}
private View.OnClickListener mOnRunListener = new View.OnClickListener() {
- public void onClick(View v) {
- if(false == mTestRunning)
- {
+ public void onClick(View v) {
+ if(false == mTestRunning) {
clearPreviousTestResults();
mTestRunning = true;
+ if(mTestSelected == SWEEP_TEST) {
+ disableBandSweepSetting();
+ }
runCurrentTest();
- }
- else
- {
+ }else {
mTestRunning = false;
/*Set it back to ready to Run*/
SetButtonState(true);
- /*Stop the thread by interrupting it*/
- if(mMultiUpdateThread != null) {
- mMultiUpdateThread.interrupt();
- mMultiUpdateThread = null;
- }
-
- if(SEARCH_TEST == mTestSelected )
- {
+ /*Stop the thread by interrupting it*/
+ if(mMultiUpdateThread != null) {
+ mMultiUpdateThread.interrupt();
+ mMultiUpdateThread = null;
+ }
+
+ if(SEARCH_TEST == mTestSelected) {
try {
mService.cancelSearch();
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- }
+ if(mTestSelected == SWEEP_TEST) {
+ enableBandSweepSetting();
+ }
+ }
}
};
- private void clearPreviousTestResults()
- {
- TableLayout tl = (TableLayout) findViewById(R.id.maintable);
+ private void clearPreviousTestResults() {
+ TableLayout tl = (TableLayout)findViewById(R.id.maintable);
if (tl != null) {
- tl.removeAllViewsInLayout();
+ tl.removeAllViewsInLayout();
}
mNewRowIds = NEW_ROW_ID;
- }
-
+ }
- private void SetButtonState(boolean state)
- {
- // Get the TableRow
- Button RunButton = (Button)findViewById(R.id.Runbutton);
- ProgressBar pbar = (ProgressBar) findViewById(R.id.progressbar);
- /*Update the state of the button based on
+ private void SetButtonState(boolean state) {
+ // Get the TableRow
+ Button RunButton = (Button)findViewById(R.id.Runbutton);
+ ProgressBar pbar = (ProgressBar)findViewById(R.id.progressbar);
+ /*Update the state of the button based on
state*/
- if( state )
- {
- if (RunButton != null) {
- RunButton.setText(R.string.test_run);
- }
- if (pbar != null) {
- pbar.setVisibility(View.INVISIBLE);
- }
- }
- else
- {
- if (RunButton != null) {
- RunButton.setText("Stop Test");
- }
- if (pbar != null) {
- pbar.setVisibility(View.VISIBLE);
- }
- }
+ if(state) {
+ if(RunButton != null) {
+ RunButton.setText(R.string.test_run);
+ }
+ if(pbar != null) {
+ pbar.setVisibility(View.INVISIBLE);
+ }
+ if(mTestSelected == SWEEP_TEST) {
+ enableBandSweepSetting();
+ }
+ }else {
+ if(RunButton != null) {
+ RunButton.setText("Stop Test");
+ }
+ if(pbar != null) {
+ pbar.setVisibility(View.VISIBLE);
+ }
+ }
}
private void chooseFMRFoption(){
- String[] szTestInformation = getResources().getStringArray(
+ String[] szTestInformation = getResources().getStringArray(
R.array.stats_options);
- final StringBuilder szbTestHeader = new StringBuilder();
- szbTestHeader.append("running test:").append(szTestInformation[mTestSelected]);
- String szTestHeader = new String(szbTestHeader);
- switch(mTestSelected){
- case 1:
- RunButton = (Button)findViewById(R.id.Runbutton);
- if (RunButton != null) {
- RunButton.setVisibility(View.INVISIBLE);
- }
- pbar = (ProgressBar) findViewById(R.id.progressbar);
- if (pbar != null) {
- pbar.setVisibility(View.INVISIBLE);
- }
- adaptCfgRf.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinOptionFmRf.setAdapter(adaptCfgRf);
- if(isTransportLayerSMD())
- spinOptionFmRf.setOnItemSelectedListener(mSpinCfgRfListener2);
- else
- spinOptionFmRf.setOnItemSelectedListener(mSpinCfgRfListener1);
- break;
- case 2:
- txtbox1 = (EditText) findViewById(R.id.txtbox1);
- tv1 = (TextView) findViewById(R.id.label);
- if (txtbox1 != null) {
- txtbox1.setVisibility(View.INVISIBLE);
- }
- if (tv1 != null) {
- tv1.setVisibility(View.INVISIBLE);
- }
- Button SetButton = (Button)findViewById(R.id.Setbutton);
- if (SetButton != null) {
- SetButton.setVisibility(View.INVISIBLE);
- }
- adaptRfCfg.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinOptionFmRf.setAdapter(adaptRfCfg);
- spinOptionFmRf.setOnItemSelectedListener(mSpinRfCfgListener);
- break;
+ final StringBuilder szbTestHeader = new StringBuilder();
+ szbTestHeader.append("running test:").append
+ (szTestInformation[mTestSelected]);
+ String szTestHeader = new String(szbTestHeader);
+ switch(mTestSelected)
+ {
+ case 1:
+ RunButton = (Button)findViewById(R.id.Runbutton);
+ if(RunButton != null) {
+ RunButton.setVisibility(View.INVISIBLE);
+ }
+ pbar = (ProgressBar) findViewById(R.id.progressbar);
+ if(pbar != null) {
+ pbar.setVisibility(View.INVISIBLE);
+ }
+ adaptCfgRf.setDropDownViewResource
+ (android.R.layout.simple_spinner_dropdown_item);
+ spinOptionFmRf.setAdapter(adaptCfgRf);
+ if(isTransportLayerSMD())
+ spinOptionFmRf.setOnItemSelectedListener
+ (mSpinCfgRfListener2);
+ else
+ spinOptionFmRf.setOnItemSelectedListener
+ (mSpinCfgRfListener1);
+ break;
+ case 2:
+ txtbox1 = (EditText)findViewById(R.id.txtbox1);
+ tv1 = (TextView)findViewById(R.id.label);
+ if(txtbox1 != null) {
+ txtbox1.setVisibility(View.INVISIBLE);
+ }
+ if(tv1 != null) {
+ tv1.setVisibility(View.INVISIBLE);
+ }
+ Button SetButton = (Button)findViewById(R.id.Setbutton);
+ if(SetButton != null) {
+ SetButton.setVisibility(View.INVISIBLE);
+ }
+ adaptRfCfg.setDropDownViewResource
+ (android.R.layout.simple_spinner_dropdown_item);
+ spinOptionFmRf.setAdapter(adaptRfCfg);
+ spinOptionFmRf.setOnItemSelectedListener(mSpinRfCfgListener);
+ break;
}
}
- private View.OnClickListener mOnSetRmssitListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetRmssitListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int rdel = Integer.parseInt(a);
Log.d(LOGTAG, "Value of RMSSI DELTA is : " + rdel);
mReceiver.setRmssiDel(rdel);
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format: " + a);
txtbox1.setText("");
- } catch (NullPointerException e) {
+ }catch (NullPointerException e) {
e.printStackTrace();
}
}
@@ -455,108 +492,116 @@ public class FMStats extends Activity {
}
};
- private View.OnClickListener mOnSetSigThListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetSigThListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int rdel = Integer.parseInt(a);
Log.d(LOGTAG, "Value of Signal Th. is : " + rdel);
mReceiver.setSignalThreshold(rdel);
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format: " + a);
txtbox1.setText("");
- } catch (NullPointerException e) {
+ }catch (NullPointerException e) {
e.printStackTrace();
}
}
};
- private View.OnClickListener mOnSetSinrSmplCntListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetSinrSmplCntListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int rdel = Integer.parseInt(a);
Log.d(LOGTAG, "Value of Sinr Samples count is : " + rdel);
if(mService != null) {
try {
mService.setSinrSamplesCnt(rdel);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format: " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetSinrThListener = new View.OnClickListener() {
+
+ private View.OnClickListener mOnSetSinrThListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int rdel = Integer.parseInt(a);
Log.d(LOGTAG, "Value of Sinr Th is : " + rdel);
if(mService != null) {
try {
mService.setSinrTh(rdel);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format: " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetIntfLowThListener = new View.OnClickListener() {
+
+ private View.OnClickListener mOnSetIntfLowThListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int rdel = Integer.parseInt(a);
Log.d(LOGTAG, "Value of Intf Det Low Th is : " + rdel);
if(mService != null) {
try {
mService.setIntfDetLowTh(rdel);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format: " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetIntfHighThListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetIntfHighThListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int rdel = Integer.parseInt(a);
Log.d(LOGTAG, "Value of Intf Det Low Th is : " + rdel);
if(mService != null) {
try {
mService.setIntfDetHighTh(rdel);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format : " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetSinrFirstStageListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetSinrFirstStageListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int sinr = Integer.parseInt(a);
Log.d(LOGTAG, "Value entered for SINR FIRST STAGE is : " + sinr);
@@ -566,20 +611,22 @@ public class FMStats extends Activity {
if(mService != null) {
try {
mService.setSinrFirstStage(sinr);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format : " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetRmssiFirstStageListener = new View.OnClickListener() {
+
+ private View.OnClickListener mOnSetRmssiFirstStageListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int rmssi = Integer.parseInt(a);
Log.d(LOGTAG, "Value entered for RMSSI FIRST STAGE is: " + rmssi);
@@ -589,21 +636,22 @@ public class FMStats extends Activity {
if(mService != null) {
try {
mService.setRmssiFirstStage(rmssi);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format : " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetCFOMeanThListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetCFOMeanThListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int cf0 = Integer.parseInt(a);
Log.d(LOGTAG, "Value entered for CF0TH12 is: " + cf0);
@@ -613,46 +661,50 @@ public class FMStats extends Activity {
if(mService != null) {
try {
mService.setCFOMeanTh(cf0);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format : " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetSearchMPXDCCListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetSearchMPXDCCListener =
+ new View.OnClickListener() {
public void onClick(View v) {
- Log.d(LOGTAG, "Value entered for search is: MPX DCC");
- if(mService != null) {
- try {
- mService.setSearchAlgoType(MPX_DCC);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
+ Log.d(LOGTAG, "Value entered for search is: MPX DCC");
+ if(mService != null) {
+ try {
+ mService.setSearchAlgoType(MPX_DCC);
+ }catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
}
};
- private View.OnClickListener mOnSetSearchSinrIntfListener = new View.OnClickListener() {
+
+ private View.OnClickListener mOnSetSearchSinrIntfListener =
+ new View.OnClickListener() {
public void onClick(View v) {
- Log.d(LOGTAG, "Value entered for search is: SINR INTF");
- if(mService != null) {
- try {
- mService.setSearchAlgoType(SINR_INTF);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
+ Log.d(LOGTAG, "Value entered for search is: SINR INTF");
+ if(mService != null) {
+ try {
+ mService.setSearchAlgoType(SINR_INTF);
+ }catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
}
};
- private View.OnClickListener mOnSetAfJmpRmssiThListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetAfJmpRmssiThListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int th = Integer.parseInt(a);
Log.d(LOGTAG, "Value entered for AfJmpRmssiTh is: " + th);
@@ -662,21 +714,22 @@ public class FMStats extends Activity {
if(mService != null) {
try {
mService.setAfJmpRmssiTh(th);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format : " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetGdChRmssiThListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetGdChRmssiThListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int th = Integer.parseInt(a);
Log.d(LOGTAG, "Value entered for Good channel Rmssi Th is: " + th);
@@ -686,21 +739,22 @@ public class FMStats extends Activity {
if(mService != null) {
try {
mService.setGoodChRmssiTh(th);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format : " + a);
txtbox1.setText("");
}
}
};
- private View.OnClickListener mOnSetAfJmpRmssiSmplsCntListener = new View.OnClickListener() {
+ private View.OnClickListener mOnSetAfJmpRmssiSmplsCntListener =
+ new View.OnClickListener() {
public void onClick(View v) {
String a;
- a = txtbox1.getText().toString();
+ a = txtbox1.getText().toString();
try {
int cnt = Integer.parseInt(a);
Log.d(LOGTAG, "Value entered for AfJmpRmssiSamples is: " + cnt);
@@ -710,11 +764,11 @@ public class FMStats extends Activity {
if(mService != null) {
try {
mService.setAfJmpRmssiSamplesCnt(cnt);
- } catch (RemoteException e) {
+ }catch (RemoteException e) {
e.printStackTrace();
}
}
- } catch (NumberFormatException e) {
+ }catch (NumberFormatException e) {
Log.e(LOGTAG, "Value entered is not in correct format : " + a);
txtbox1.setText("");
}
@@ -722,61 +776,64 @@ public class FMStats extends Activity {
};
public class CfgRfItemSelectedListener1 implements OnItemSelectedListener {
- public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+ public void onItemSelected(
+ AdapterView<?> parent, View view, int pos, long id) {
Log.d("Table","onItemSelected is hit with " + pos);
- txtbox1 = (EditText) findViewById(R.id.txtbox1);
- tv1 = (TextView) findViewById(R.id.label);
+ txtbox1 = (EditText)findViewById(R.id.txtbox1);
+ tv1 = (TextView)findViewById(R.id.label);
Button SetButton = (Button)findViewById(R.id.Setbutton);
tLayout.setVisibility(View.INVISIBLE);
switch(pos)
{
- case 0:
- if (txtbox1 != null) {
+ case 0:
+ if (txtbox1 != null) {
txtbox1.setText(R.string.type_rd);
txtbox1.setVisibility(View.VISIBLE);
- }
- if (tv1 != null) {
+ }
+ if (tv1 != null) {
tv1.setText(R.string.enter_rssi);
tv1.setVisibility(View.VISIBLE);
- }
- if (SetButton != null) {
+ }
+ if (SetButton != null) {
SetButton.setText(R.string.set_rmmsi_delta);
SetButton.setVisibility(View.VISIBLE);
SetButton.setOnClickListener(mOnSetRmssitListener);
- }
- break;
- case 1:
- if (txtbox1 != null) {
+ }
+ break;
+ case 1:
+ if (txtbox1 != null) {
txtbox1.setText(R.string.type_rd);
txtbox1.setVisibility(View.VISIBLE);
- }
- if (tv1 != null) {
+ }
+ if (tv1 != null) {
tv1.setText(R.string.enter_sigth);
tv1.setVisibility(View.VISIBLE);
- }
- if (SetButton != null) {
+ }
+ if (SetButton != null) {
SetButton.setText(R.string.set_sigth);
SetButton.setVisibility(View.VISIBLE);
SetButton.setOnClickListener(mOnSetSigThListener);
- }
- break;
- case 2:
- tLayout.removeAllViewsInLayout();
- mNewRowIds = NEW_ROW_ID;
- tLayout.setVisibility(View.VISIBLE);
- if (txtbox1 != null) {
+ }
+ break;
+ case 2:
+ tLayout.removeAllViewsInLayout();
+ mNewRowIds = NEW_ROW_ID;
+ tLayout.setVisibility(View.VISIBLE);
+ if (txtbox1 != null) {
txtbox1.setVisibility(View.INVISIBLE);
- }
- if (tv1 != null) {
+ }
+ if (tv1 != null) {
tv1.setVisibility(View.INVISIBLE);
- }
- if (SetButton != null) {
+ }
+ if (SetButton != null) {
SetButton.setVisibility(View.INVISIBLE);
- }
- adaptRfCfg.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinOptionFmRf.setAdapter(adaptRfCfg);
- spinOptionFmRf.setOnItemSelectedListener(mSpinRfCfgListener);
- break;
+ }
+ adaptRfCfg.setDropDownViewResource(
+ android.R.layout.simple_spinner_dropdown_item);
+ spinOptionFmRf.setAdapter(adaptRfCfg);
+ spinOptionFmRf.setOnItemSelectedListener(
+ mSpinRfCfgListener);
+ break;
}
}
@@ -786,7 +843,8 @@ public class FMStats extends Activity {
}
public class CfgRfItemSelectedListener2 implements OnItemSelectedListener {
- public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+ public void onItemSelected(AdapterView<?> parent,
+ View view, int pos, long id) {
Log.d("Table","onItemSelected is hit with " + pos);
int ret = Integer.MAX_VALUE;
txtbox1 = (EditText) findViewById(R.id.txtbox1);
@@ -1306,7 +1364,8 @@ public class FMStats extends Activity {
if(button2 != null) {
button2.setVisibility(View.INVISIBLE);
}
- adaptRfCfg.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ adaptRfCfg.setDropDownViewResource(
+ android.R.layout.simple_spinner_dropdown_item);
spinOptionFmRf.setAdapter(adaptRfCfg);
spinOptionFmRf.setOnItemSelectedListener(mSpinRfCfgListener);
break;
@@ -1324,6 +1383,12 @@ public class FMStats extends Activity {
SetButton.setVisibility(View.VISIBLE);
SetButton.setOnClickListener(mOnSetRxRePeatCount);
}
+ if(button1 != null) {
+ button1.setVisibility(View.INVISIBLE);
+ }
+ if(button2 != null) {
+ button2.setVisibility(View.INVISIBLE);
+ }
break;
}
}
@@ -1333,7 +1398,8 @@ public class FMStats extends Activity {
}
public class RfCfgItemSelectedListener implements OnItemSelectedListener {
- public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+ public void onItemSelected(AdapterView<?> parent,
+ View view, int pos, long id) {
Log.d("Table","onItemSelected is hit with "+pos);
tLayout.setVisibility(View.INVISIBLE);
if (mTestRunning)
@@ -1354,6 +1420,11 @@ public class FMStats extends Activity {
RunButton.setVisibility(View.VISIBLE);
RunButton.setOnClickListener(mOnRunListener);
}
+ if(mTestSelected == SWEEP_TEST) {
+ enableBandSweepSetting();
+ }else {
+ disableBandSweepSetting();
+ }
break;
case 4:
RunButton = (Button)findViewById(R.id.Runbutton);
@@ -1364,12 +1435,14 @@ public class FMStats extends Activity {
if (pbar != null) {
pbar.setVisibility(View.INVISIBLE);
}
- adaptCfgRf.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ adaptCfgRf.setDropDownViewResource(
+ android.R.layout.simple_spinner_dropdown_item);
spinOptionFmRf.setAdapter(adaptCfgRf);
if(isTransportLayerSMD())
spinOptionFmRf.setOnItemSelectedListener(mSpinCfgRfListener2);
else
spinOptionFmRf.setOnItemSelectedListener(mSpinCfgRfListener1);
+ disableBandSweepSetting();
break;
}
}
@@ -1384,9 +1457,7 @@ public class FMStats extends Activity {
mTestSelected = pos;
tLayout.setVisibility(View.INVISIBLE);
chooseFMRFoption();
-
}
-
public void onNothingSelected(AdapterView<?> parent) {
// Do Nothing
}
@@ -1479,8 +1550,7 @@ public class FMStats extends Activity {
}
}
-
- private void runCurrentTest(){
+ private void runCurrentTest() {
Log.d(LOGTAG, "The test being run is" +mTestSelected);
//get test summary
@@ -1490,118 +1560,107 @@ public class FMStats extends Activity {
szbTestHeader.append("running test:").append(szTestInformation[mTestSelected]);
szbTestHeader.append("\r\n");
String szTestHeader = new String(szbTestHeader);
- if(null != mFileCursor )
- {
- try {
+ if(null != mFileCursor ) {
+ try {
mFileCursor.write(szTestHeader.getBytes());
- } catch (IOException ioe) {
+ } catch (IOException ioe) {
ioe.printStackTrace();
- }
+ }
}
- switch(mTestSelected){
- case CUR_FREQ_TEST:
- Log.d(LOGTAG,"Current Freq test is going to run");
- int freq = FmSharedPreferences.getTunedFrequency();
- Result res = GetFMStatsForFreq(freq);
- createResult(mColumnHeader);
- if(res != null)
- createResult(res);
- mTestRunning = false;
- break;
- case CUR_MULTI_TEST:
- /*Set it to ready to Stop*/
- SetButtonState(false);
- createResult(mColumnHeader);
-
- if (mMultiUpdateThread == null)
- {
- mMultiUpdateThread = new Thread(null, getMultipleResults,
- "MultiResultsThread");
- }
- /* Launch dummy thread to simulate the transfer progress */
- Log.d(LOGTAG, "Thread State: " + mMultiUpdateThread.getState());
- if (mMultiUpdateThread.getState() == Thread.State.TERMINATED)
- {
- mMultiUpdateThread = new Thread(null, getMultipleResults,
- "MultiResultsThread");
- }
- /* If the thread state is "new" then the thread has not yet started */
- if (mMultiUpdateThread.getState() == Thread.State.NEW)
- {
- mMultiUpdateThread.start();
- }
- // returns and UI in different thread.
- break;
- case SEARCH_TEST:
- try {
- Log.d(LOGTAG, "start scanning\n");
- if(isTransportLayerSMD()) {
- Log.d(LOGTAG,"Scanning with 0 scan time");
- if (mReceiver != null)
- mIsSearching = mReceiver.searchStations(FmReceiver.FM_RX_SRCH_MODE_SCAN,
- SCAN_DWELL_PERIOD, FmReceiver.FM_RX_SEARCHDIR_UP);
- } else {
- mIsSearching = mService.scan(0);
- }
- } catch (RemoteException e) {
-
- e.printStackTrace();
- }
+ switch(mTestSelected)
+ {
+ case CUR_FREQ_TEST:
+ Log.d(LOGTAG,"Current Freq test is going to run");
+ int freq = FmSharedPreferences.getTunedFrequency();
+ Result res = GetFMStatsForFreq(freq);
+ createResult(mColumnHeader);
+ if(res != null)
+ createResult(res);
+ mTestRunning = false;
+ break;
+ case CUR_MULTI_TEST:
+ /*Set it to ready to Stop*/
+ SetButtonState(false);
+ createResult(mColumnHeader);
+
+ if(mMultiUpdateThread == null) {
+ mMultiUpdateThread = new Thread(null, getMultipleResults,
+ "MultiResultsThread");
+ }
+ /* Launch dummy thread to simulate the transfer progress */
+ Log.d(LOGTAG, "Thread State: " + mMultiUpdateThread.getState());
+ if(mMultiUpdateThread.getState() == Thread.State.TERMINATED) {
+ mMultiUpdateThread = new Thread(null, getMultipleResults,
+ "MultiResultsThread");
+ }
+ /* If the thread state is "new" then the thread has not yet started */
+ if(mMultiUpdateThread.getState() == Thread.State.NEW) {
+ mMultiUpdateThread.start();
+ }
+ // returns and UI in different thread.
+ break;
+ case SEARCH_TEST:
+ try {
+ Log.d(LOGTAG, "start scanning\n");
+ if(isTransportLayerSMD()) {
+ Log.d(LOGTAG,"Scanning with 0 scan time");
+ if (mReceiver != null)
+ mIsSearching = mReceiver.searchStations(FmReceiver.FM_RX_SRCH_MODE_SCAN,
+ SCAN_DWELL_PERIOD, FmReceiver.FM_RX_SEARCHDIR_UP);
+ }else {
+ mIsSearching = mService.scan(0);
+ }
+ }catch (RemoteException e) {
+ e.printStackTrace();
+ }
- if(mIsSearching)
- {
- /*Set it to Ready to Stop*/
- SetButtonState(false);
- createResult(mColumnHeader);
- Log.d(LOGTAG, "Created the results and cancel UI\n");
- }
- else
- {
- mTestRunning = false;
- }
- break;
- case SWEEP_TEST:
- int Spacing = FmSharedPreferences.getChSpacing();
- int lowerFreq = FmSharedPreferences.getLowerLimit();
- int higherFreq = FmSharedPreferences.getUpperLimit();
- try {
- Log.d(LOGTAG, "Going to set low side injection\n");
- mService.setHiLoInj(Lo);
- } catch (RemoteException e) {
-
- e.printStackTrace();
- }
- /* Set it to Ready to stop*/
- SetButtonState(false);
- createResult(mColumnHeader);
- getFMStatsInBand(lowerFreq,higherFreq,Spacing);
- break;
+ if(mIsSearching) {
+ /*Set it to Ready to Stop*/
+ SetButtonState(false);
+ createResult(mColumnHeader);
+ Log.d(LOGTAG, "Created the results and cancel UI\n");
+ }else {
+ mTestRunning = false;
+ }
+ break;
+ case SWEEP_TEST:
+ int Spacing = FmSharedPreferences.getChSpacing();
+ int lowerFreq = FmSharedPreferences.getLowerLimit();
+ int higherFreq = FmSharedPreferences.getUpperLimit();
+ try {
+ Log.d(LOGTAG, "Going to set low side injection\n");
+ mService.setHiLoInj(Lo);
+ }catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ /* Set it to Ready to stop*/
+ SetButtonState(false);
+ createResult(mColumnHeader);
+ getFMStatsInBand(lowerFreq, higherFreq, Spacing);
+ break;
}
}
/* Thread processing */
private Runnable getMultipleResults = new Runnable() {
public void run() {
- /*Collect the data for the current frequency
- 20 times*/
- int freq = FmSharedPreferences.getTunedFrequency();
+ /*Collect the data for the current frequency
+ 20 times*/
+ int freq = FmSharedPreferences.getTunedFrequency();
- for (int i = 0; i < 20; i++)
- {
- try
- {
- Thread.sleep(500);
- Message updateUI = new Message();
- updateUI.what = STATUS_UPDATE;
- updateUI.obj = (Object)GetFMStatsForFreq(freq);
- if (updateUI.obj == null)
+ for(int i = 0; i < 20; i++) {
+ try {
+ Thread.sleep(500);
+ Message updateUI = new Message();
+ updateUI.what = STATUS_UPDATE;
+ updateUI.obj = (Object)GetFMStatsForFreq(freq);
+ if(updateUI.obj == null)
break;
- mUIUpdateHandlerHandler.sendMessage(updateUI);
- } catch (InterruptedException e)
- {
- /*break the loop*/
- break;
- }
+ mUIUpdateHandlerHandler.sendMessage(updateUI);
+ }catch (InterruptedException e) {
+ /*break the loop*/
+ break;
+ }
}
mTestRunning = false;
Message updateStop = new Message();
@@ -1610,92 +1669,167 @@ public class FMStats extends Activity {
}
};
- private void getFMStatsInBand(int lFreq, int hFreq, int Spacing)
- {
- if( null == mBand) {
- mBand = new Band();
- }
- mBand.lFreq = lFreq;
- mBand.hFreq = hFreq;
- if(Spacing == 0)
- {
- mBand.Spacing = 200; // 200KHz
- }
- else if( Spacing == 1)
- {
- mBand.Spacing = 100; // 100KHz
- }
- else
- {
- mBand.Spacing = 50;
- }
+ private void getFMStatsInBand(int lFreq, int hFreq, int Spacing) {
+ if(null == mBand) {
+ mBand = new Band();
+ }
+ mBand.lFreq = lFreq;
+ mBand.hFreq = hFreq;
+ if(Spacing == 0) {
+ mBand.Spacing = 200; // 200KHz
+ }else if(Spacing == 1) {
+ mBand.Spacing = 100; // 100KHz
+ }else {
+ mBand.Spacing = 50;
+ }
- if (mMultiUpdateThread == null)
- {
- mMultiUpdateThread = new Thread(null, getSweepResults,
- "MultiResultsThread");
- }
- /* Launch he dummy thread to simulate the transfer progress */
- Log.d(LOGTAG, "Thread State: " + mMultiUpdateThread.getState());
- if (mMultiUpdateThread.getState() == Thread.State.TERMINATED)
- {
- mMultiUpdateThread = new Thread(null, getSweepResults,
+ if(mMultiUpdateThread == null) {
+ if(prevSweepMthd == 0) {
+ mMultiUpdateThread = new Thread(null, getManualSweepResults,
+ "MultiResultsThread");
+ }else {
+ mMultiUpdateThread = new Thread(null, getFileSweepResults,
+ "MultiResultsThread");
+ }
+ }
+ /* Launch he dummy thread to simulate the transfer progress */
+ Log.d(LOGTAG, "Thread State: " + mMultiUpdateThread.getState());
+ if((mMultiUpdateThread.getState() == Thread.State.TERMINATED)) {
+ if(prevSweepMthd == 0) {
+ mMultiUpdateThread = new Thread(null, getManualSweepResults,
"MultiResultsThread");
- }
- /* If the thread state is "new" then the thread has not yet started */
- if (mMultiUpdateThread.getState() == Thread.State.NEW)
- {
- mMultiUpdateThread.start();
- }
+ }else {
+ mMultiUpdateThread = new Thread(null, getFileSweepResults,
+ "MultiResultsThread");
+ }
+ }
+ /* If the thread state is "new" then the thread has not yet started */
+ if(mMultiUpdateThread.getState() == Thread.State.NEW) {
+ mMultiUpdateThread.start();
+ }
}
/* Thread processing */
- private Runnable getSweepResults = new Runnable() {
+ private Runnable getManualSweepResults = new Runnable() {
public void run() {
- for (int i = mBand.lFreq; (i <= mBand.hFreq) && (mService != null);
- i += mBand.Spacing)
- {
+ try {
+ Thread.sleep(prevDelayTime * 1000);
+ }catch(InterruptedException e) {
+ }
+ for (int i = mBand.lFreq; (i <= mBand.hFreq) &&
+ (mService != null); i += mBand.Spacing) {
+ if(!tuneAndUpdateSweepResult(i)) {
+ break;
+ }
try {
- if (!mService.tune(i)) {
- Log.e(LOGTAG, "tune failed");
- break;
- }
- mSync = new Band();
- synchronized(mSync) {
- mSync.wait(); //wait till notified
- }
- mSync = null;
- Message updateUI = new Message();
- updateUI.what = STATUS_UPDATE;
- updateUI.obj = (Object)GetFMStatsForFreq(i);
- if (updateUI.obj == null) {
- break;
- } else {
- mUIUpdateHandlerHandler.sendMessage(updateUI);
- Log.d(LOGTAG,"highFerq is "+mBand.hFreq);
- }
+ Thread.sleep(prevDwellTime * 1000);
+ }catch (InterruptedException e) {
+ /*Stop the thrad*/
+ break;
}
- catch (RemoteException e) {
- Log.e(LOGTAG, "SweepResults:Tune failed\n");
- }
+ }
+ sendStatusDoneMsg();
+ }
+ };
- catch (InterruptedException e) {
- /*Stop the thrad*/
- break;
- }
+ private void sendStatusDoneMsg() {
+ mTestRunning = false;
+ Message updateStop = new Message();
+ updateStop.what = STATUS_DONE;
+ try {
+ Log.d(LOGTAG, "Going to set auto hi-lo injection\n");
+ mService.setHiLoInj(Auto);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ if(mUIUpdateHandlerHandler != null) {
+ Log.d(LOGTAG, "Sending message to stop test");
+ mUIUpdateHandlerHandler.sendMessage(updateStop);
+ }
+ }
+
+ private Runnable getFileSweepResults = new Runnable() {
+ public void run() {
+ boolean status = true;
+ try {
+ BufferedReader reader = new BufferedReader
+ (new FileReader(getFilesDir()
+ + FREQ_LIST_FILE_NAME));
+ String curLine = null;
+ try {
+ Thread.sleep(prevDelayTime * 1000);
+ }catch(InterruptedException e) {
+ }
+ while((reader != null) && (curLine = reader.readLine()) != null) {
+ String[] freq_list = curLine.split(",");
+ for(int i = 0; (freq_list != null ) &&
+ (i < freq_list.length); i++) {
+ int freq =
+ (int)(Double.parseDouble(freq_list[i]) * 1000);
+ if(validFreq(freq)) {
+ if(!tuneAndUpdateSweepResult(freq)) {
+ status = false;
+ break;
+ }else {
+ try {
+ Thread.sleep(prevDwellTime * 1000);
+ }catch (InterruptedException e) {
+ /*Stop the thrad*/
+ status = false;
+ break;
+ }
+ }
+ }
+ }
+ if(!status) {
+ break;
+ }
+ }
+ reader.close();
+ }catch(IOException e) {
+ e.printStackTrace();
+ }
+ sendStatusDoneMsg();
+ }
+ };
+
+ private boolean validFreq(int freq) {
+ if((freq >= mBand.lFreq) &&
+ (((freq - mBand.lFreq) / mBand.Spacing) >= 0)) {
+ return true;
+ }else {
+ return false;
+ }
+ }
+
+ private boolean tuneAndUpdateSweepResult(int freq) {
+ try {
+ if(!mService.tune(freq)) {
+ Log.e(LOGTAG, "tune failed");
+ return false;
}
- mTestRunning = false;
- Message updateStop = new Message();
- updateStop.what = STATUS_DONE;
- try {
- Log.d(LOGTAG, "Going to set auto hi-lo injection\n");
- mService.setHiLoInj(Auto);
- } catch (RemoteException e) {
- e.printStackTrace();
+ mSync = new Band();
+ synchronized(mSync) {
+ mSync.wait(); //wait till notified
}
- mUIUpdateHandlerHandler.sendMessage(updateStop);
+ mSync = null;
+ Message updateUI = new Message();
+ updateUI.what = STATUS_UPDATE;
+ updateUI.obj = (Object)GetFMStatsForFreq(freq);
+ if(updateUI.obj == null) {
+ return false;
+ }else {
+ mUIUpdateHandlerHandler.sendMessage(updateUI);
+ Log.d(LOGTAG,"highFerq is " + mBand.hFreq);
+ }
+ }catch (RemoteException e) {
+ Log.e(LOGTAG, "SweepResults:Tune failed\n");
+ return false;
+ }catch (InterruptedException e) {
+ return false;
}
- };
+ return true;
+ }
private Result GetFMStatsForFreq(int freq)
{
@@ -2015,4 +2149,90 @@ public class FMStats extends Activity {
mTestRunning = false;
}
}
+
+ @Override
+ protected Dialog onCreateDialog(int id) {
+ AlertDialog.Builder dlgBuilder = new AlertDialog.Builder(this);
+ switch(id)
+ {
+ case DIALOG_BAND_SWEEP_SETTING:
+ return createBandSweepDialog(id, dlgBuilder);
+ }
+ return null;
+ }
+
+ private Dialog createBandSweepDialog(int id, AlertDialog.Builder dlgBuilder) {
+ LayoutInflater inflater = LayoutInflater.from(this);
+ final View listview = inflater.inflate(R.layout.band_sweep_setting, null);
+ spinOptionBandSweepMthds = (Spinner)listview.findViewById(R.id.band_sweep_spinner);
+ final EditText delayBox = (EditText)listview.findViewById(R.id.txtboxDelayTime);
+ final EditText dwellBox = (EditText)listview.findViewById(R.id.txtboxDwellTime);
+
+ if(delayBox != null) {
+ delayBox.setText("" + prevDelayTime);
+ }
+ if(dwellBox != null) {
+ dwellBox.setText("" + prevDwellTime);
+ }
+ if(spinOptionBandSweepMthds != null) {
+ spinOptionBandSweepMthds.setAdapter(bandSweepMthds);
+ spinOptionBandSweepMthds.setOnItemSelectedListener(mSweepMthdsListener);
+ spinOptionBandSweepMthds.setSelection(prevSweepMthd);
+ }else {
+ Log.e(LOGTAG, "could not find spinner for methods\n");
+ }
+ dlgBuilder.setView(listview)
+ .setPositiveButton(R.string.band_sweep_setting_set, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ prevSweepMthd = curSweepMthd;
+ if(delayBox != null) {
+ String s = delayBox.getText().toString();
+ prevDelayTime = Integer.parseInt(s);
+ }
+ if(dwellBox != null) {
+ String s = dwellBox.getText().toString();
+ prevDwellTime = Integer.parseInt(s);
+ }
+ removeDialog(DIALOG_BAND_SWEEP_SETTING);
+ }
+ })
+ .setNegativeButton(R.string.band_sweep_setting_cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ removeDialog(DIALOG_BAND_SWEEP_SETTING);
+ }
+ });
+ return dlgBuilder.create();
+ }
+
+ private View.OnClickListener mClicktBandSweepSettingListener = new View.OnClickListener() {
+ public void onClick(View v) {
+ showDialog(DIALOG_BAND_SWEEP_SETTING);
+ }
+ };
+
+ private void enableBandSweepSetting() {
+ if(bandSweepSettingButton != null) {
+ bandSweepSettingButton.setEnabled(true);
+ bandSweepSettingButton.setVisibility(View.VISIBLE);
+ }
+ }
+
+ private void disableBandSweepSetting() {
+ if(bandSweepSettingButton != null) {
+ bandSweepSettingButton.setEnabled(false);
+ bandSweepSettingButton.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ public class BandSweepMthdsSelectedListener implements OnItemSelectedListener {
+ public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+ Log.d("Band Sweep Methods","onItemSelected is hit with " + pos);
+ curSweepMthd = pos;
+ }
+
+ public void onNothingSelected(AdapterView<?> parent) {
+ // Do Nothing
+ }
+ }
+
}
diff --git a/fmapp2/src/com/caf/fmradio/FmSharedPreferences.java b/fmapp2/src/com/caf/fmradio/FmSharedPreferences.java
index 8ddc3f3..4222b4d 100644
--- a/fmapp2/src/com/caf/fmradio/FmSharedPreferences.java
+++ b/fmapp2/src/com/caf/fmradio/FmSharedPreferences.java
@@ -78,6 +78,7 @@ public class FmSharedPreferences
public static final int REGIONAL_BAND_TURKEY = 33;
public static final int REGIONAL_BAND_UNITEDKINGDOM = 34;
public static final int REGIONAL_BAND_UNITED_STATES = 35;
+ public static final int REGIONAL_BAND_USER_DEFINED = 36;
public static final int RECORD_DUR_INDEX_0_VAL = 5;
public static final int RECORD_DUR_INDEX_1_VAL = 15;
@@ -98,9 +99,9 @@ public class FmSharedPreferences
private static final String FMCONFIG_COUNTRY = "fmconfig_country";
//private static final String FMCONFIG_BAND = "fmconfig_band";
- //private static final String FMCONFIG_MIN = "fmconfig_min";
- //private static final String FMCONFIG_MAX = "fmconfig_max";
- //private static final String FMCONFIG_STEP = "fmconfig_step";
+ private static final String FMCONFIG_MIN = "fmconfig_min";
+ private static final String FMCONFIG_MAX = "fmconfig_max";
+ private static final String FMCONFIG_STEP = "fmconfig_step";
//private static final String FMCONFIG_EMPH = "fmconfig_emphasis";
//private static final String FMCONFIG_RDSSTD = "fmconfig_rdsstd";
/* Storage key String */
@@ -153,6 +154,9 @@ public class FmSharedPreferences
private static int mListIndex;
private Context mContext;
private static int mTunedFrequency = 98100;
+ private static int mBandMinFreq = 76000;
+ private static int mBandMaxFreq = 108000;
+ private static int mChanSpacing = 0;
private static int mFrequencyBand_Stepsize = 200;
private static int mCountry = 0;
@@ -449,6 +453,12 @@ public class FmSharedPreferences
/* Reset the Lists before reading the preferences */
mListOfPlists.clear();
+ if(sp.getInt(FMCONFIG_COUNTRY, 0) == REGIONAL_BAND_USER_DEFINED) {
+ mBandMinFreq = sp.getInt(FMCONFIG_MIN, mBandMinFreq);
+ mBandMaxFreq = sp.getInt(FMCONFIG_MAX, mBandMaxFreq);
+ mChanSpacing = sp.getInt(FMCONFIG_STEP, mChanSpacing);
+ }
+
int num_lists = sp.getInt(LIST_NUM, 1);
if (mListOfPlists.size() == 0) {
@@ -542,6 +552,11 @@ public class FmSharedPreferences
/* Save Configuration */
ed.putInt(FMCONFIG_COUNTRY, mCountry);
+ if(mCountry == REGIONAL_BAND_USER_DEFINED) {
+ ed.putInt(FMCONFIG_MIN, mBandMinFreq);
+ ed.putInt(FMCONFIG_MAX, mBandMaxFreq);
+ ed.putInt(FMCONFIG_STEP, mChanSpacing);
+ }
ed.putInt(LAST_RECORD_DURATION, mRecordDuration);
ed.putBoolean(LAST_AF_JUMP_VALUE, mAFAutoSwitch);
ed.commit();
@@ -683,8 +698,8 @@ public class FmSharedPreferences
public static void setChSpacing(int spacing)
{
- if((spacing>=FmReceiver.FM_CHSPACE_200_KHZ)
- && (spacing<=FmReceiver.FM_CHSPACE_50_KHZ))
+ if( (spacing >= FmReceiver.FM_CHSPACE_200_KHZ)
+ && (spacing <= FmReceiver.FM_CHSPACE_50_KHZ))
{
mFrequencyBand_Stepsize = 200;
switch (spacing)
@@ -700,6 +715,7 @@ public class FmSharedPreferences
break;
}
}
+ mChanSpacing = spacing;
mFMConfiguration.setChSpacing(spacing);
}
}
@@ -762,10 +778,16 @@ public class FmSharedPreferences
}
public static void setLowerLimit(int lowLimit){
mFMConfiguration.setLowerLimit(lowLimit);
+ if(mCountry == REGIONAL_BAND_USER_DEFINED) {
+ mBandMinFreq = lowLimit;
+ }
}
public static void setUpperLimit(int upLimit){
mFMConfiguration.setUpperLimit(upLimit);
+ if(mCountry == REGIONAL_BAND_USER_DEFINED) {
+ mBandMaxFreq = upLimit;
+ }
}
public static void setCountry(int nCountryCode){
@@ -1051,6 +1073,23 @@ public class FmSharedPreferences
mFrequencyBand_Stepsize = 200;
break;
}
+ case REGIONAL_BAND_USER_DEFINED:
+ {
+ mFMConfiguration.setRadioBand(FmReceiver.FM_USER_DEFINED_BAND);
+ mFMConfiguration.setChSpacing(mChanSpacing);
+ mFMConfiguration.setEmphasis(FmReceiver.FM_DE_EMP75);
+ mFMConfiguration.setRdsStd(FmReceiver.FM_RDS_STD_RDS);
+ mFMConfiguration.setLowerLimit(mBandMinFreq);
+ mFMConfiguration.setUpperLimit(mBandMaxFreq);
+ if(mChanSpacing == 0) {
+ mFrequencyBand_Stepsize = 200;
+ }else if(mChanSpacing == 1) {
+ mFrequencyBand_Stepsize = 100;
+ }else {
+ mFrequencyBand_Stepsize = 50;
+ }
+ break;
+ }
default:
{
Log.d(LOGTAG, "Invalid: countryCode: "+nCountryCode);
diff --git a/fmapp2/src/com/caf/fmradio/Settings.java b/fmapp2/src/com/caf/fmradio/Settings.java
index f5c5d07..c5683f1 100644
--- a/fmapp2/src/com/caf/fmradio/Settings.java
+++ b/fmapp2/src/com/caf/fmradio/Settings.java
@@ -42,6 +42,9 @@ import android.preference.CheckBoxPreference;
import android.preference.PreferenceCategory;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
+import android.preference.EditTextPreference;
+import android.text.InputType;
+import android.widget.Toast;
import java.util.Locale;
import android.util.Log;
@@ -55,19 +58,34 @@ public class Settings extends PreferenceActivity implements
public static final String AUTO_AF = "af_checkbox_preference";
public static final String RESTORE_FACTORY_DEFAULT = "revert_to_fac";
public static final int RESTORE_FACTORY_DEFAULT_INT = 1;
+ public static final String USER_DEFINED_BAND_MIN_KEY = "user_defined_band_min";
+ public static final String USER_DEFINED_BAND_MAX_KEY = "user_defined_band_max";
+ public static final String CHAN_SPACING_KEY = "chanl_spacing";
public static final String RESTORE_FACTORY_DEFAULT_ACTION = "com.caf.fmradio.settings.revert_to_defaults";
private static final String LOGTAG = FMRadio.LOGTAG;
+ private static final String USR_BAND_MSG = "Enter Freq from range 76.0 - 108.0";
private ListPreference mBandPreference;
private ListPreference mAudioPreference;
private ListPreference mRecordDurPreference;
private CheckBoxPreference mAfPref;
+ private EditTextPreference mUserBandMinPref;
+ private EditTextPreference mUserBandMaxPref;
+ private ListPreference mChannelSpacingPref;
private Preference mRestoreDefaultPreference;
private FmSharedPreferences mPrefs = null;
private boolean mRxMode = false;
+ private int min_freq;
+ private int max_freq;
+ private int chan_spacing;
+ private String[] summaryBandItems;
+ private String[] chSpacingItems;
+ private String[] summaryAudioModeItems;
+ private String[] summaryRecordItems;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -90,62 +108,87 @@ public class Settings extends PreferenceActivity implements
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(
this);
- // Band/Country
- String[] summaryBandItems = getResources().getStringArray(
+ summaryBandItems = getResources().getStringArray(
R.array.regional_band_summary);
- mBandPreference = new ListPreference(this);
- mBandPreference.setEntries(R.array.regional_band_entries);
- mBandPreference.setEntryValues(R.array.regional_band_values);
- mBandPreference.setDialogTitle(R.string.sel_band_menu);
- mBandPreference.setKey(REGIONAL_BAND_KEY);
- mBandPreference.setTitle(R.string.regional_band);
- index = FmSharedPreferences.getCountry();
- Log.d(LOGTAG, "createPreferenceHierarchy: Country: " + index);
- // Get the preference and list the value.
- if ((index < 0) || (index >= summaryBandItems.length)) {
+ chSpacingItems = getResources().getStringArray(
+ R.array.channel_spacing_entries);
+ mBandPreference = new ListPreference(this);
+ mBandPreference.setEntries(R.array.regional_band_entries);
+ mBandPreference.setEntryValues(R.array.regional_band_values);
+ mBandPreference.setDialogTitle(R.string.sel_band_menu);
+ mBandPreference.setKey(REGIONAL_BAND_KEY);
+ mBandPreference.setTitle(R.string.regional_band);
+ index = FmSharedPreferences.getCountry();
+ Log.d(LOGTAG, "createPreferenceHierarchy: Country: " + index);
+ // Get the preference and list the value.
+ if ((index < 0) || (index >= summaryBandItems.length)) {
index = 0;
- }
- Log.d(LOGTAG, "createPreferenceHierarchy: CountrySummary: "
- + summaryBandItems[index]);
- mBandPreference.setSummary(summaryBandItems[index]);
- mBandPreference.setValueIndex(index);
- root.addPreference(mBandPreference);
+ }
+ mBandPreference.setValueIndex(index);
+ root.addPreference(mBandPreference);
- if (mRxMode) {
- // Audio Output (Stereo or Mono)
- String[] summaryAudioModeItems = getResources().getStringArray(
- R.array.ster_mon_entries);
- mAudioPreference = new ListPreference(this);
- mAudioPreference.setEntries(R.array.ster_mon_entries);
- mAudioPreference.setEntryValues(R.array.ster_mon_values);
- mAudioPreference.setDialogTitle(R.string.sel_audio_output);
- mAudioPreference.setKey(AUDIO_OUTPUT_KEY);
- mAudioPreference.setTitle(R.string.aud_output_mode);
- boolean audiomode = FmSharedPreferences.getAudioOutputMode();
- if (audiomode) {
- index = 0;
- }else {
- index = 1;
- }
- Log.d(LOGTAG, "createPreferenceHierarchy: audiomode: " + audiomode);
- mAudioPreference.setSummary(summaryAudioModeItems[index]);
- mAudioPreference.setValueIndex(index);
- root.addPreference(mAudioPreference);
+ mChannelSpacingPref = new ListPreference(this);
+ mChannelSpacingPref.setEntries(R.array.channel_spacing_entries);
+ mChannelSpacingPref.setEntryValues(R.array.channel_spacing_val);
+ mChannelSpacingPref.setDialogTitle(R.string.sel_chanl_spacing);
+ mChannelSpacingPref.setTitle(R.string.chanl_spacing);
+ mChannelSpacingPref.setKey(CHAN_SPACING_KEY);
+
+ mUserBandMinPref = new EditTextPreference(this);
+ mUserBandMinPref.setKey(USER_DEFINED_BAND_MIN_KEY);
+ mUserBandMinPref.setTitle(R.string.usr_def_band_min);
+ mUserBandMinPref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER |
+ InputType.TYPE_NUMBER_FLAG_DECIMAL);
+ mUserBandMinPref.setDialogTitle(R.string.usr_def_band_min);
+
+ mUserBandMaxPref = new EditTextPreference(this);
+ mUserBandMaxPref.setKey(USER_DEFINED_BAND_MAX_KEY);
+ mUserBandMaxPref.setTitle(R.string.usr_def_band_max);
+ mUserBandMaxPref.setDialogTitle(R.string.usr_def_band_max);
+ mUserBandMaxPref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER |
+ InputType.TYPE_NUMBER_FLAG_DECIMAL);
- // AF Auto Enable (Checkbox)
- mAfPref = new CheckBoxPreference(this);
- mAfPref.setKey(AUTO_AF);
- mAfPref.setTitle(R.string.auto_select_af);
- mAfPref.setSummaryOn(R.string.auto_select_af_enabled);
- mAfPref.setSummaryOff(R.string.auto_select_af_disabled);
- boolean bAFAutoSwitch = FmSharedPreferences.getAutoAFSwitch();
- Log.d(LOGTAG, "createPreferenceHierarchy: bAFAutoSwitch: "
- + bAFAutoSwitch);
- mAfPref.setChecked(bAFAutoSwitch);
- root.addPreference(mAfPref);
+ setBandSummary(index);
+
+ root.addPreference(mChannelSpacingPref);
+ root.addPreference(mUserBandMinPref);
+ root.addPreference(mUserBandMaxPref);
+
+ if (mRxMode) {
+ // Audio Output (Stereo or Mono)
+ summaryAudioModeItems = getResources().getStringArray(
+ R.array.ster_mon_entries);
+ mAudioPreference = new ListPreference(this);
+ mAudioPreference.setEntries(R.array.ster_mon_entries);
+ mAudioPreference.setEntryValues(R.array.ster_mon_values);
+ mAudioPreference.setDialogTitle(R.string.sel_audio_output);
+ mAudioPreference.setKey(AUDIO_OUTPUT_KEY);
+ mAudioPreference.setTitle(R.string.aud_output_mode);
+ boolean audiomode = FmSharedPreferences.getAudioOutputMode();
+ if (audiomode) {
+ index = 0;
+ } else {
+ index = 1;
+ }
+ Log.d(LOGTAG, "createPreferenceHierarchy: audiomode: " + audiomode);
+ mAudioPreference.setSummary(summaryAudioModeItems[index]);
+ mAudioPreference.setValueIndex(index);
+ root.addPreference(mAudioPreference);
+
+ // AF Auto Enable (Checkbox)
+ mAfPref = new CheckBoxPreference(this);
+ mAfPref.setKey(AUTO_AF);
+ mAfPref.setTitle(R.string.auto_select_af);
+ mAfPref.setSummaryOn(R.string.auto_select_af_enabled);
+ mAfPref.setSummaryOff(R.string.auto_select_af_disabled);
+ boolean bAFAutoSwitch = FmSharedPreferences.getAutoAFSwitch();
+ Log.d(LOGTAG, "createPreferenceHierarchy: bAFAutoSwitch: "
+ + bAFAutoSwitch);
+ mAfPref.setChecked(bAFAutoSwitch);
+ root.addPreference(mAfPref);
if(FMRadio.RECORDING_ENABLE) {
- String[] summaryRecordItems = getResources().getStringArray(
+ summaryRecordItems = getResources().getStringArray(
R.array.record_durations_entries);
int nRecordDuration = 0;
mRecordDurPreference = new ListPreference(this);
@@ -197,40 +240,92 @@ public class Settings extends PreferenceActivity implements
root.addPreference(mRestoreDefaultPreference);
return root;
}
- public void clearStationList() {
+
+ public void clearStationList() {
SharedPreferences sp = getSharedPreferences(FMRadio.SCAN_STATION_PREFS_NAME, 0);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
editor.commit();
}
+
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
int mTunedFreq = 0;
boolean bStatus = false;
if (key.equals(REGIONAL_BAND_KEY)) {
- int curListIndex = FmSharedPreferences.getCurrentListIndex();
- PresetList curList = FmSharedPreferences.getStationList(curListIndex);
- String[] summaryBandItems = getResources().getStringArray(
- R.array.regional_band_summary);
+ int curListIndex = FmSharedPreferences.getCurrentListIndex();
+ PresetList curList = FmSharedPreferences.getStationList(curListIndex);
String valueStr = sharedPreferences.getString(key, "");
int index = 0;
- if (valueStr != null) {
+ if(valueStr != null) {
index = mBandPreference.findIndexOfValue(valueStr);
}
- if ((index < 0) || (index >= summaryBandItems.length)) {
+ if((index < 0) || (index >= summaryBandItems.length)) {
index = 0;
mBandPreference.setValueIndex(0);
+ }else if((index + 1) == summaryBandItems.length) {
+ mChannelSpacingPref.setEnabled(true);
+ }else {
+ mChannelSpacingPref.setEnabled(false);
}
Log.d(LOGTAG, "onSharedPreferenceChanged: Country Change: "
+ index);
- mBandPreference.setSummary(summaryBandItems[index]);
FmSharedPreferences.setCountry(index);
+ setBandSummary(index);
bStatus = FMRadio.fmConfigure();
FMTransmitterActivity.fmConfigure();
if (curList != null) {
curList.clear();
}
clearStationList();
+ }else if(key.equals(CHAN_SPACING_KEY)) {
+ int curListIndex = FmSharedPreferences.getCurrentListIndex();
+ PresetList curList = FmSharedPreferences.getStationList(curListIndex);
+ String valStr = mChannelSpacingPref.getValue();
+ int index = 0;
+ if(valStr != null) {
+ index = mChannelSpacingPref.findIndexOfValue(valStr);
+ }
+ if ((index < 0) || (index >= summaryRecordItems.length)) {
+ index = 0;
+ mChannelSpacingPref.setValueIndex(0);
+ }
+ mChannelSpacingPref.setSummary(chSpacingItems[index]);
+ FmSharedPreferences.setChSpacing(2 - index);
+ FMRadio.fmConfigure();
+ FMTransmitterActivity.fmConfigure();
+ if(curList != null) {
+ curList.clear();
+ }
+ clearStationList();
+ }else if(key.equals(USER_DEFINED_BAND_MIN_KEY)) {
+ String valStr = mUserBandMinPref.getText();
+ double freq = Double.parseDouble(valStr) * 1000;
+ max_freq = FmSharedPreferences.getUpperLimit();
+ min_freq = FmSharedPreferences.getLowerLimit();
+ if((freq > 0) && (freq < max_freq) && (freq >= 76000)) {
+ FmSharedPreferences.setLowerLimit((int)freq);
+ FMRadio.fmConfigure();
+ FMTransmitterActivity.fmConfigure();
+ setBandSummary(summaryBandItems.length - 1);
+ clearStationList();
+ }else {
+ displayToast(USR_BAND_MSG);
+ }
+ }else if(key.equals(USER_DEFINED_BAND_MAX_KEY)) {
+ String valStr = mUserBandMaxPref.getText();
+ double freq = Double.parseDouble(valStr) * 1000;
+ min_freq = FmSharedPreferences.getLowerLimit();
+ max_freq = FmSharedPreferences.getUpperLimit();
+ if((freq > 0) && (freq > min_freq) && (freq <= 108000)) {
+ FmSharedPreferences.setUpperLimit((int)freq);
+ FMRadio.fmConfigure();
+ FMTransmitterActivity.fmConfigure();
+ setBandSummary(summaryBandItems.length - 1);
+ clearStationList();
+ }else {
+ displayToast(USR_BAND_MSG);
+ }
}else {
if(mRxMode) {
if (key.equals(AUTO_AF)) {
@@ -242,40 +337,36 @@ public class Settings extends PreferenceActivity implements
mPrefs.Save();
}else if(key.equals(RECORD_DURATION_KEY)) {
if(FMRadio.RECORDING_ENABLE) {
- String[] recordItems = getResources().getStringArray(
- R.array.record_durations_entries);
String valueStr = mRecordDurPreference.getValue();
int index = 0;
if (valueStr != null) {
index = mRecordDurPreference.findIndexOfValue(valueStr);
}
- if ((index < 0) || (index >= recordItems.length)) {
+ if ((index < 0) || (index >= summaryRecordItems.length)) {
index = 0;
mRecordDurPreference.setValueIndex(index);
}
Log.d(LOGTAG, "onSharedPreferenceChanged: recorddur: "
- + recordItems[index]);
- mRecordDurPreference.setSummary(recordItems[index]);
- FmSharedPreferences.setRecordDuration(index);
- }
- }else if (key.equals(AUDIO_OUTPUT_KEY)) {
- String[] bandItems = getResources().getStringArray(
- R.array.ster_mon_entries);
- String valueStr = mAudioPreference.getValue();
- int index = 0;
- if (valueStr != null) {
- index = mAudioPreference.findIndexOfValue(valueStr);
- }
- if (index != 1) {
- if (index != 0) {
- index = 0;
- /* It shud be 0(Stereo) or 1(Mono) */
- mAudioPreference.setValueIndex(index);
- }
- }
- Log.d(LOGTAG, "onSharedPreferenceChanged: audiomode: "
- + bandItems[index]);
- mAudioPreference.setSummary(bandItems[index]);
+ + summaryRecordItems[index]);
+ mRecordDurPreference.setSummary(summaryRecordItems[index]);
+ FmSharedPreferences.setRecordDuration(index);
+ }
+ } else if (key.equals(AUDIO_OUTPUT_KEY)) {
+ String valueStr = mAudioPreference.getValue();
+ int index = 0;
+ if (valueStr != null) {
+ index = mAudioPreference.findIndexOfValue(valueStr);
+ }
+ if (index != 1) {
+ if (index != 0) {
+ index = 0;
+ /* It shud be 0(Stereo) or 1(Mono) */
+ mAudioPreference.setValueIndex(index);
+ }
+ }
+ Log.d(LOGTAG, "onSharedPreferenceChanged: audiomode: "
+ + summaryAudioModeItems[index]);
+ mAudioPreference.setSummary(summaryAudioModeItems[index]);
if (index == 0) {
// Stereo
FmSharedPreferences.setAudioOutputMode(true);
@@ -394,4 +485,32 @@ public class Settings extends PreferenceActivity implements
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
}
+ private void setBandSummary(int index) {
+ if((index + 1) == summaryBandItems.length) {
+ min_freq = FmSharedPreferences.getLowerLimit();
+ max_freq = FmSharedPreferences.getUpperLimit();
+ chan_spacing = FmSharedPreferences.getChSpacing();
+ if(chan_spacing < 0) {
+ chan_spacing = 0;
+ }
+ mBandPreference.setSummary(summaryBandItems[index] + "( "
+ + (min_freq / 1000.0) +"Mhz To " + (max_freq / 1000.0) +
+ "Mhz)");
+ mChannelSpacingPref.setValueIndex(2 - chan_spacing);
+ mChannelSpacingPref.setSummary(chSpacingItems[2 - chan_spacing]);
+ mChannelSpacingPref.setEnabled(true);
+ mUserBandMinPref.setEnabled(true);
+ mUserBandMaxPref.setEnabled(true);
+ mUserBandMinPref.setSummary((min_freq / 1000.0) + "Mhz");
+ mUserBandMaxPref.setSummary((max_freq / 1000.0) + "Mhz");
+ }else {
+ mBandPreference.setSummary(summaryBandItems[index]);
+ mChannelSpacingPref.setEnabled(false);
+ mUserBandMinPref.setEnabled(false);
+ mUserBandMaxPref.setEnabled(false);
+ }
+ }
+ private void displayToast(String msg) {
+ Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
+ }
}