summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-08-31 00:08:33 -0500
committerKeith Packard <keithp@keithp.com>2014-08-31 00:08:33 -0500
commitbc3fbcb35090be3856284ccf4d908ebf39d02bec (patch)
tree7cb5bada48a2bfc1b79cfda3b50d72c5c797fd9e
parent0b70ea04e807c69a987d5976ab217f9f65fb1e09 (diff)
altosdroid: Add quit. Restart. Show freq in title.
Add a quit button to menu. When restarting, reconnect to previous device. When connecting, set the freq/rate to previous values. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--altosdroid/res/layout/device_list.xml30
-rw-r--r--altosdroid/res/menu/option_menu.xml3
-rw-r--r--altosdroid/res/values/strings.xml1
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java17
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java79
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java14
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java5
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java26
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java11
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java36
10 files changed, 188 insertions, 34 deletions
diff --git a/altosdroid/res/layout/device_list.xml b/altosdroid/res/layout/device_list.xml
index 395695f8..93d65517 100644
--- a/altosdroid/res/layout/device_list.xml
+++ b/altosdroid/res/layout/device_list.xml
@@ -18,39 +18,39 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
>
- <TextView android:id="@+id/title_paired_devices"
+ <Button android:id="@+id/button_scan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/title_paired_devices"
+ android:text="@string/button_scan"
+ />
+ <TextView android:id="@+id/title_new_devices"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/title_other_devices"
android:visibility="gone"
android:background="#666"
android:textColor="#fff"
android:paddingLeft="5dp"
/>
- <ListView android:id="@+id/paired_devices"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:stackFromBottom="true"
- android:layout_weight="1"
- />
- <TextView android:id="@+id/title_new_devices"
+ <TextView android:id="@+id/title_paired_devices"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/title_other_devices"
+ android:text="@string/title_paired_devices"
android:visibility="gone"
android:background="#666"
android:textColor="#fff"
android:paddingLeft="5dp"
/>
- <ListView android:id="@+id/new_devices"
+ <ListView android:id="@+id/paired_devices"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stackFromBottom="true"
- android:layout_weight="2"
+ android:layout_weight="1"
/>
- <Button android:id="@+id/button_scan"
+ <ListView android:id="@+id/new_devices"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/button_scan"
+ android:stackFromBottom="true"
+ android:layout_weight="2"
/>
-</LinearLayout> \ No newline at end of file
+</LinearLayout>
diff --git a/altosdroid/res/menu/option_menu.xml b/altosdroid/res/menu/option_menu.xml
index ee9d475f..4321d6e7 100644
--- a/altosdroid/res/menu/option_menu.xml
+++ b/altosdroid/res/menu/option_menu.xml
@@ -17,6 +17,9 @@
<item android:id="@+id/connect_scan"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/connect_device" />
+ <item android:id="@+id/quit"
+ android:icon="@android:drawable/ic_menu_close_clear_cancel"
+ android:title="@string/quit" />
<item android:id="@+id/select_freq"
android:icon="@android:drawable/ic_menu_preferences"
android:title="@string/select_freq" />
diff --git a/altosdroid/res/values/strings.xml b/altosdroid/res/values/strings.xml
index ce335b76..0384b9b8 100644
--- a/altosdroid/res/values/strings.xml
+++ b/altosdroid/res/values/strings.xml
@@ -27,6 +27,7 @@
<!-- Options Menu -->
<string name="connect_device">Connect a device</string>
+ <string name="quit">Quit</string>
<string name="select_freq">Select radio frequency</string>
<string name="select_rate">Select data rate</string>
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java
index 484efaf8..4a1fc371 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java
@@ -52,6 +52,7 @@ public class AltosBluetooth extends AltosLink {
// Constructor
public AltosBluetooth(BluetoothDevice in_device, Handler in_handler) {
+// set_debug(D);
adapter = BluetoothAdapter.getDefaultAdapter();
device = in_device;
handler = in_handler;
@@ -136,6 +137,22 @@ public class AltosBluetooth extends AltosLink {
}
}
+ public double frequency() {
+ return frequency;
+ }
+
+ public int telemetry_rate() {
+ return telemetry_rate;
+ }
+
+ public void save_frequency() {
+ AltosPreferences.set_frequency(serial, frequency);
+ }
+
+ public void save_telemetry_rate() {
+ AltosPreferences.set_telemetry_rate(serial, telemetry_rate);
+ }
+
private synchronized void wait_connected() throws InterruptedException, IOException {
if (input == null) {
wait();
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
index c94f36fd..db1ca691 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
@@ -44,8 +44,10 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
+import android.view.View;
import android.widget.TabHost;
import android.widget.TextView;
+import android.widget.RelativeLayout;
import android.widget.Toast;
import android.app.AlertDialog;
import android.location.Location;
@@ -63,6 +65,8 @@ public class AltosDroid extends FragmentActivity {
public static final int MSG_UPDATE_AGE = 3;
public static final int MSG_LOCATION = 4;
public static final int MSG_CRC_ERROR = 5;
+ public static final int MSG_FREQUENCY = 6;
+ public static final int MSG_TELEMETRY_RATE = 7;
// Intent request codes
private static final int REQUEST_CONNECT_DEVICE = 1;
@@ -78,12 +82,16 @@ public class AltosDroid extends FragmentActivity {
private TextView mRSSIView;
private TextView mSerialView;
private TextView mFlightView;
+ private RelativeLayout mStateLayout;
private TextView mStateView;
private TextView mAgeView;
// field to display the version at the bottom of the screen
private TextView mVersion;
+ private double frequency;
+ private int telemetry_rate;
+
// Tabs
TabHost mTabHost;
AltosViewPager mViewPager;
@@ -122,11 +130,7 @@ public class AltosDroid extends FragmentActivity {
if(D) Log.d(TAG, "MSG_STATE_CHANGE: " + msg.arg1);
switch (msg.arg1) {
case TelemetryService.STATE_CONNECTED:
- ad.mConfigData = (AltosConfigData) msg.obj;
- String str = String.format(" %s S/N: %d", ad.mConfigData.product, ad.mConfigData.serial);
- ad.mTitle.setText(R.string.title_connected_to);
- ad.mTitle.append(str);
- Toast.makeText(ad.getApplicationContext(), "Connected to " + str, Toast.LENGTH_SHORT).show();
+ ad.set_config_data((AltosConfigData) msg.obj);
break;
case TelemetryService.STATE_CONNECTING:
ad.mTitle.setText(R.string.title_connecting);
@@ -135,6 +139,9 @@ public class AltosDroid extends FragmentActivity {
case TelemetryService.STATE_NONE:
ad.mConfigData = null;
ad.mTitle.setText(R.string.title_not_connected);
+ String active_device = AltosDroidPreferences.active_device();
+ if (active_device != null)
+ ad.connectDevice(active_device);
break;
}
break;
@@ -151,6 +158,12 @@ public class AltosDroid extends FragmentActivity {
ad.mAgeView.setText(String.format("%d", (System.currentTimeMillis() - ad.saved_state.received_time + 500) / 1000));
}
break;
+ case MSG_FREQUENCY:
+ ad.set_frequency((Double) msg.obj);
+ break;
+ case MSG_TELEMETRY_RATE:
+ ad.set_telemetry_rate((Integer) msg.obj);
+ break;
}
}
};
@@ -211,6 +224,33 @@ public class AltosDroid extends FragmentActivity {
update_ui(saved_state);
}
+ void set_title() {
+ if (mConfigData != null) {
+ String str = String.format("S/N %d %6.3f MHz", mConfigData.serial, frequency);
+
+ if (telemetry_rate != AltosLib.ao_telemetry_rate_38400)
+ str = str.concat(String.format(" %d bps", AltosLib.ao_telemetry_rate_values[telemetry_rate]));
+ mTitle.setText(str);
+ }
+ }
+
+ void set_frequency(double frequency) {
+ if (D) Log.d(TAG, String.format("AltosDroid: set_frequency %f\n", frequency));
+ this.frequency = frequency;
+ set_title();
+ }
+
+ void set_telemetry_rate(int telemetry_rate) {
+ if (D) Log.d(TAG, String.format("AltosDroid: set_telemetry_rate %d\n", telemetry_rate));
+ this.telemetry_rate = telemetry_rate;
+ set_title();
+ }
+
+ void set_config_data(AltosConfigData config_data) {
+ mConfigData = config_data;
+ set_title();
+ }
+
boolean same_string(String a, String b) {
if (a == null) {
if (b == null)
@@ -226,8 +266,15 @@ public class AltosDroid extends FragmentActivity {
void update_ui(AltosState state) {
Log.d(TAG, "update_ui");
- if (state != null && saved_state != null) {
- if (saved_state.state != state.state) {
+
+ int prev_state = AltosLib.ao_flight_invalid;
+
+ if (saved_state != null)
+ prev_state = saved_state.state;
+
+ if (state != null) {
+ Log.d(TAG, String.format("prev state %d new state %d\n", prev_state, state.state));
+ if (prev_state != state.state) {
String currentTab = mTabHost.getCurrentTabTag();
Log.d(TAG, "switch state");
switch (state.state) {
@@ -240,6 +287,9 @@ public class AltosDroid extends FragmentActivity {
case AltosLib.ao_flight_landed:
if (currentTab.equals("descent")) mTabHost.setCurrentTabByTag("landed");
break;
+ case AltosLib.ao_flight_stateless:
+ if (currentTab.equals("pad")) mTabHost.setCurrentTabByTag("descent");
+ break;
}
}
}
@@ -273,7 +323,12 @@ public class AltosDroid extends FragmentActivity {
}
if (saved_state == null || state.state != saved_state.state) {
Log.d(TAG, "update state");
- mStateView.setText(state.state_name());
+ if (state.state == AltosLib.ao_flight_stateless) {
+ mStateLayout.setVisibility(View.GONE);
+ } else {
+ mStateView.setText(state.state_name());
+ mStateLayout.setVisibility(View.VISIBLE);
+ }
}
if (saved_state == null || state.rssi != saved_state.rssi) {
Log.d(TAG, "update rssi");
@@ -399,6 +454,7 @@ public class AltosDroid extends FragmentActivity {
mRSSIView = (TextView) findViewById(R.id.rssi_value);
mSerialView = (TextView) findViewById(R.id.serial_value);
mFlightView = (TextView) findViewById(R.id.flight_value);
+ mStateLayout = (RelativeLayout) findViewById(R.id.state_container);
mStateView = (TextView) findViewById(R.id.state_value);
mAgeView = (TextView) findViewById(R.id.age_value);
@@ -421,6 +477,7 @@ public class AltosDroid extends FragmentActivity {
startService(new Intent(AltosDroid.this, TelemetryService.class));
doBindService();
+
}
@Override
@@ -490,6 +547,7 @@ public class AltosDroid extends FragmentActivity {
private void connectDevice(Intent data) {
// Get the device MAC address
String address = data.getExtras().getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
+ AltosDroidPreferences.set_active_device(address);
connectDevice(address);
}
@@ -550,6 +608,11 @@ public class AltosDroid extends FragmentActivity {
serverIntent = new Intent(this, DeviceListActivity.class);
startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE);
return true;
+ case R.id.quit:
+ Log.d(TAG, "R.id.quit");
+ stopService(new Intent(AltosDroid.this, TelemetryService.class));
+ finish();
+ return true;
case R.id.select_freq:
// Set the TBT radio frequency
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java b/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java
index 8e8d9c03..267c90f8 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java
@@ -20,6 +20,7 @@ package org.altusmetrum.AltosDroid;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;
+import android.view.View;
public class GoNoGoLights {
private Boolean state;
@@ -51,14 +52,27 @@ public class GoNoGoLights {
missing = m;
set = true;
if (missing) {
+ hide();
red.setImageDrawable(dGray);
green.setImageDrawable(dGray);
} else if (state) {
red.setImageDrawable(dGray);
green.setImageDrawable(dGreen);
+ show();
} else {
red.setImageDrawable(dRed);
green.setImageDrawable(dGray);
+ show();
}
}
+
+ public void show() {
+ red.setVisibility(View.VISIBLE);
+ green.setVisibility(View.VISIBLE);
+ }
+
+ public void hide() {
+ red.setVisibility(View.GONE);
+ green.setVisibility(View.GONE);
+ }
}
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java
index 16427d8b..32c235e1 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java
@@ -92,7 +92,10 @@ public class TabLanded extends AltosDroidTab {
if (state != null) {
mMaxHeightView.setText(String.format("%6.0f m", state.max_height()));
- mMaxAccelView.setText(String.format("%6.0f m/s²", state.max_acceleration()));
+ if (state.max_acceleration() != AltosLib.MISSING)
+ mMaxAccelView.setText(String.format("%6.0f m/s²", state.max_acceleration()));
+ else
+ mMaxAccelView.setText("missing");
mMaxSpeedView.setText(String.format("%6.0f m/s", state.max_speed()));
}
}
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java
index 03b78b75..1068fa46 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java
@@ -33,10 +33,13 @@ public class TabPad extends AltosDroidTab {
AltosDroid mAltosDroid;
private TextView mBatteryVoltageView;
+ private TextView mBatteryVoltageLabel;
private GoNoGoLights mBatteryLights;
private TextView mApogeeVoltageView;
+ private TextView mApogeeVoltageLabel;
private GoNoGoLights mApogeeLights;
private TextView mMainVoltageView;
+ private TextView mMainVoltageLabel;
private GoNoGoLights mMainLights;
private TextView mDataLoggingView;
private GoNoGoLights mDataLoggingLights;
@@ -59,16 +62,19 @@ public class TabPad extends AltosDroidTab {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab_pad, container, false);
mBatteryVoltageView = (TextView) v.findViewById(R.id.battery_voltage_value);
+ mBatteryVoltageLabel = (TextView) v.findViewById(R.id.battery_voltage_label);
mBatteryLights = new GoNoGoLights((ImageView) v.findViewById(R.id.battery_redled),
(ImageView) v.findViewById(R.id.battery_greenled),
getResources());
mApogeeVoltageView = (TextView) v.findViewById(R.id.apogee_voltage_value);
+ mApogeeVoltageLabel = (TextView) v.findViewById(R.id.apogee_voltage_label);
mApogeeLights = new GoNoGoLights((ImageView) v.findViewById(R.id.apogee_redled),
(ImageView) v.findViewById(R.id.apogee_greenled),
getResources());
mMainVoltageView = (TextView) v.findViewById(R.id.main_voltage_value);
+ mMainVoltageLabel = (TextView) v.findViewById(R.id.main_voltage_label);
mMainLights = new GoNoGoLights((ImageView) v.findViewById(R.id.main_redled),
(ImageView) v.findViewById(R.id.main_greenled),
getResources());
@@ -107,11 +113,23 @@ public class TabPad extends AltosDroidTab {
if (state != null) {
mBatteryVoltageView.setText(AltosDroid.number("%4.2f V", state.battery_voltage));
mBatteryLights.set(state.battery_voltage >= AltosLib.ao_battery_good, state.battery_voltage == AltosLib.MISSING);
-
- mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.apogee_voltage));
+ if (state.apogee_voltage == AltosLib.MISSING) {
+ mApogeeVoltageView.setVisibility(View.GONE);
+ mApogeeVoltageLabel.setVisibility(View.GONE);
+ } else {
+ mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.apogee_voltage));
+ mApogeeVoltageView.setVisibility(View.VISIBLE);
+ mApogeeVoltageLabel.setVisibility(View.VISIBLE);
+ }
mApogeeLights.set(state.apogee_voltage >= AltosLib.ao_igniter_good, state.apogee_voltage == AltosLib.MISSING);
-
- mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_voltage));
+ if (state.main_voltage == AltosLib.MISSING) {
+ mMainVoltageView.setVisibility(View.GONE);
+ mMainVoltageLabel.setVisibility(View.GONE);
+ } else {
+ mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_voltage));
+ mMainVoltageView.setVisibility(View.VISIBLE);
+ mMainVoltageLabel.setVisibility(View.VISIBLE);
+ }
mMainLights.set(state.main_voltage >= AltosLib.ao_igniter_good, state.main_voltage == AltosLib.MISSING);
if (state.flight != 0) {
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java
index 3ba5afa9..0c437f87 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java
@@ -66,7 +66,7 @@ public class TelemetryReader extends Thread {
AltosState state = null;
try {
- for (;;) {
+ while (telemQueue != null) {
try {
state = read();
handler.obtainMessage(TelemetryService.MSG_TELEMETRY, state).sendToTarget();
@@ -91,5 +91,14 @@ public class TelemetryReader extends Thread {
state = null;
telemQueue = new LinkedBlockingQueue<AltosLine>();
link.add_monitor(telemQueue);
+ try {
+ link.set_radio_frequency(AltosPreferences.frequency(link.serial));
+ link.set_telemetry(AltosLib.ao_telemetry_standard);
+ link.set_telemetry_rate(AltosPreferences.telemetry_rate(link.serial));
+ } catch (InterruptedException ee) {
+ close();
+ } catch (TimeoutException te) {
+ close();
+ }
}
}
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
index 4ec353e3..8e5c7903 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
@@ -115,6 +115,10 @@ public class TelemetryService extends Service implements LocationListener {
if (s.last_state != null) msg.replyTo.send(Message.obtain(null, AltosDroid.MSG_TELEMETRY, s.last_state ));
if (s.last_location != null) msg.replyTo.send(Message.obtain(null, AltosDroid.MSG_LOCATION , s.last_location ));
if (s.last_crc_errors != 0 ) msg.replyTo.send(Message.obtain(null, AltosDroid.MSG_CRC_ERROR, s.last_crc_errors));
+ if (s.state == STATE_CONNECTED) {
+ msg.replyTo.send(s.frequency_message());
+ msg.replyTo.send(s.telemetry_rate_message());
+ }
} catch (RemoteException e) {
s.mClients.remove(msg.replyTo);
}
@@ -131,13 +135,17 @@ public class TelemetryService extends Service implements LocationListener {
break;
case MSG_CONNECTED:
if (D) Log.d(TAG, "Connected to device");
- s.connected();
+ try {
+ s.connected();
+ } catch (InterruptedException ie) {
+ }
break;
case MSG_CONNECT_FAILED:
if (D) Log.d(TAG, "Connection failed... retrying");
s.startAltosBluetooth();
break;
case MSG_DISCONNECTED:
+ Log.d(TAG, "MSG_DISCONNECTED");
// Only do the following if we haven't been shutdown elsewhere..
if (s.device != null) {
if (D) Log.d(TAG, "Disconnected from " + s.device.getName());
@@ -158,6 +166,8 @@ public class TelemetryService extends Service implements LocationListener {
if (s.state == STATE_CONNECTED) {
try {
s.mAltosBluetooth.set_radio_frequency((Double) msg.obj);
+ s.mAltosBluetooth.save_frequency();
+ s.sendMessageToClients(s.frequency_message());
} catch (InterruptedException e) {
} catch (TimeoutException e) {
}
@@ -166,6 +176,8 @@ public class TelemetryService extends Service implements LocationListener {
case MSG_SETBAUD:
if (s.state == STATE_CONNECTED) {
s.mAltosBluetooth.set_telemetry_rate((Integer) msg.obj);
+ s.mAltosBluetooth.save_telemetry_rate();
+ s.sendMessageToClients(s.telemetry_rate_message());
}
break;
default:
@@ -184,6 +196,16 @@ public class TelemetryService extends Service implements LocationListener {
}
}
+ private Message frequency_message() {
+ if (D) Log.d(TAG, String.format("frequency_message %f\n", mAltosBluetooth.frequency()));
+ return Message.obtain(null, AltosDroid.MSG_FREQUENCY, mAltosBluetooth.frequency());
+ }
+
+ private Message telemetry_rate_message() {
+ if (D) Log.d(TAG, String.format("telemetry_rate_message %d\n", mAltosBluetooth.telemetry_rate()));
+ return Message.obtain(null, AltosDroid.MSG_TELEMETRY_RATE, mAltosBluetooth.telemetry_rate());
+ }
+
private void stopAltosBluetooth() {
if (D) Log.d(TAG, "stopAltosBluetooth(): begin");
setState(STATE_READY);
@@ -241,12 +263,14 @@ public class TelemetryService extends Service implements LocationListener {
sendMessageToClients(Message.obtain(null, AltosDroid.MSG_STATE_CHANGE, state, -1, acd));
}
- private void connected() {
+ private void connected() throws InterruptedException {
try {
if (mAltosBluetooth == null)
throw new InterruptedException("no bluetooth");
mConfigData = mAltosBluetooth.config_data();
- } catch (InterruptedException e) {
+ if (D) Log.d(TAG, "send frequency/rate messages\n");
+ sendMessageToClients(frequency_message());
+ sendMessageToClients(telemetry_rate_message());
} catch (TimeoutException e) {
// If this timed out, then we really want to retry it, but
// probably safer to just retry the connection from scratch.
@@ -258,10 +282,12 @@ public class TelemetryService extends Service implements LocationListener {
mTelemetryReader = new TelemetryReader(mAltosBluetooth, mHandler);
mTelemetryReader.start();
-
+
mTelemetryLogger = new TelemetryLogger(this, mAltosBluetooth);
- }
+ sendMessageToClients(frequency_message());
+ sendMessageToClients(telemetry_rate_message());
+ }
private void onTimerTick() {
if (D) Log.d(TAG, "Timer wakeup");