/* MultiWii EZ-GUI
Copyright (C) <2012> Bartosz Szczygiel (eziosoft)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.ezio.multiwii.raw;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
import com.ezio.multiwii.R;
import com.ezio.multiwii.app.App;
import com.ezio.multiwii.mw.ServoConfClass;
import com.ezio.sec.Sec;
public class RawDataActivity extends Activity {
private boolean killme = false;
App app;
Handler mHandler = new Handler();
TextView TVData;
TextView TVMWInfo;
View FlashUpdate;
private Runnable update = new Runnable() {
@Override
public void run() {
app.mw.ProcessSerialData(app.loggingON);
app.frskyProtocol.ProcessSerialData(false);
app.Frequentjobs();
displayData();
if (FlashUpdate.getVisibility() == View.VISIBLE) {
FlashUpdate.setVisibility(View.INVISIBLE);
} else {
FlashUpdate.setVisibility(View.VISIBLE);
}
app.mw.SendRequest(app.MainRequestMethod);
if (!killme)
mHandler.postDelayed(update, app.RefreshRate);
if (app.D)
Log.d(app.TAG, "loop " + this.getClass().getName());
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = (App) getApplication();
app.ForceLanguage();
app.ConnectionBug();
setContentView(R.layout.raw_data_layout);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
TVData = (TextView) findViewById(R.id.textViewData);
TVMWInfo = (TextView) findViewById(R.id.textViewMWInfo);
FlashUpdate = (View) findViewById(R.id.UpdateFlash);
}
@Override
protected void onResume() {
super.onResume();
app.ForceLanguage();
app.Say(getString(R.string.RawData));
killme = false;
mHandler.postDelayed(update, app.RefreshRate);
if (app.MacAddress.equals("")) {
TVData.setText(getString(R.string.MacNotSet));
} else {
TVData.setText("");
if (!app.commMW.Connected)
TVData.setText(getString(R.string.InfoNotConnected));
}
}
@Override
protected void onPause() {
super.onPause();
mHandler.removeCallbacks(null);
killme = true;
}
private void displayData() {
String t = new String();
if (app.mw.BaroPresent == 1)
t += "BARO ";
if (app.mw.GPSPresent == 1)
t += "GPS ";
if (app.mw.SonarPresent == 1)
t += "SONAR ";
if (app.mw.MagPresent == 1)
t += "MAG ";
if (app.mw.AccPresent == 1)
t += "ACC";
TVMWInfo.setText("MW Version:" + String.valueOf(app.mw.version) + "\n" + "MultiType:" + app.mw.MultiTypeName[app.mw.multiType] + "\n" + "CycleTime:" + String.valueOf(app.mw.cycleTime) + "\n" + "i2cError:" + String.valueOf(app.mw.i2cError) + "\n" + t + "\n MSP_ver:" + String.valueOf(app.mw.MSPversion));
TVData.setText("");
log("gx", app.mw.gx);
log("gy", app.mw.gy);
log("gz", app.mw.gz);
log("ax", app.mw.ax);
log("ay", app.mw.ay);
log("az", app.mw.az);
log("magx", app.mw.magx);
log("magy", app.mw.magy);
log("magz", app.mw.magz);
log("alt", app.mw.alt);
log("vario", app.mw.vario);
log("head", app.mw.head);
log("angx", app.mw.angx);
log("angy", app.mw.angy);
log("bytevbat", app.mw.bytevbat);
log("pMeterSum", app.mw.pMeterSum);
// log("nunchukPresent", app.mw.nunchukPresent);
log("AccPresent", app.mw.AccPresent);
log("BaroPresent", app.mw.BaroPresent);
log("MagnetoPresent", app.mw.MagPresent);
log("GPSPresent", app.mw.GPSPresent);
log("SonarPresent", app.mw.SonarPresent);
log("present", app.mw.SensorPresent);
log("mode", app.mw.mode);
// log("levelMode", app.mw.levelMode);
log("byteThrottle_EXPO", app.mw.byteThrottle_EXPO);
log("byteThrottle_MID", app.mw.byteThrottle_MID);
log("GPS_fix", app.mw.GPS_fix);
log("GPS_numSat", app.mw.GPS_numSat);
log("GPS_update", app.mw.GPS_update);
log("GPS_directionToHome", app.mw.GPS_directionToHome);
log("GPS_distanceToHome", app.mw.GPS_distanceToHome);
log("GPS_altitude", app.mw.GPS_altitude);
log("GPS_speed", app.mw.GPS_speed);
log("GPS_latitude", app.mw.GPS_latitude);
log("GPS_longitude", app.mw.GPS_longitude);
log("GPS_ground_course", app.mw.GPS_ground_course);
log("rcThrottle", app.mw.rcThrottle);
log("rcYaw", app.mw.rcYaw);
log("rcPitch", app.mw.rcPitch);
log("rcRoll", app.mw.rcRoll);
log("rcAUX1", app.mw.rcAUX1);
log("rcAUX2", app.mw.rcAUX2);
log("rcAUX3", app.mw.rcAUX3);
log("rcAUX4", app.mw.rcAUX4);
log("debug1", app.mw.debug1);
log("debug2", app.mw.debug2);
log("debug3", app.mw.debug3);
log("debug4", app.mw.debug4);
log("MSP_DEBUGMSG", app.mw.DebugMSG);
for (int i = 0; i < app.mw.mot.length; i++) {
log("Motor" + String.valueOf(i + 1), app.mw.mot[i]);
}
for (int i = 0; i < app.mw.PIDITEMS; i++) {
log("P=" + String.valueOf(app.mw.byteP[i]) + " I=" + String.valueOf(app.mw.byteI[i]) + " D", app.mw.byteD[i]);
}
log("confSetting", app.mw.confSetting);
log("multiCapability", app.mw.multiCapability);
log("rssi", app.mw.rssi);
log("declination", app.mw.mag_decliniation);
for (String s : app.mw.buttonCheckboxLabel) {
log("buttonCheckboxLabel", s);
}
int Si = 0;
for (ServoConfClass s : app.mw.ServoConf) {
log("Servo" + String.valueOf(Si) + "MIN", s.Min);
log("Servo" + String.valueOf(Si) + "MID", s.MidPoint);
log("Servo" + String.valueOf(Si) + "MAX", s.Max);
log("Servo" + String.valueOf(Si) + "Rate", s.Rate);
Si++;
}
log("---", 0);
log("EZ-Gui Protocol", app.mw.EZGUIProtocol);
String app_ver = "";
int app_ver_code = 0;
try {
app_ver = getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
app_ver_code = getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;
} catch (NameNotFoundException e1) {
e1.printStackTrace();
}
log("App version", getString(R.string.app_name) + " " + app_ver + "." + String.valueOf(app_ver_code));
log("versionMisMatch", app.mw.versionMisMatch);
// log("1G", app.mw._1G);
log("CHECKBOXITEMS", app.mw.CHECKBOXITEMS);
log("PIDITEMS", app.mw.PIDITEMS);
log("timer1", app.mw.timer1);
log("timer2", app.mw.timer2);
log("dataFlow", app.mw.DataFlow);
log("bt.ConnectionLost", String.valueOf(app.mw.communication.ConnectionLost));
log("bt.ReconnectTry", String.valueOf(app.mw.communication.ReconnectTry));
log("AppStartCounter", String.valueOf(app.AppStartCounter));
log("DonationButtonPressed", String.valueOf(app.DonateButtonPressed));
log("Andorid version", String.valueOf(Build.VERSION.SDK_INT));
log("CommunicationTypeMW", app.CommunicationTypeMW);
log("comm Connected", String.valueOf(app.commMW.Connected));
log("commFrsky Connected", String.valueOf(app.commFrsky.Connected));
log("DeviceID", Sec.GetDeviceID(getApplicationContext()));
}
private void log(String co, int wartosc) {
TVData.append(co + "=" + String.valueOf(wartosc) + "\n");
}
private void log(String co, float wartosc) {
TVData.append(co + "=" + String.valueOf(wartosc) + "\n");
}
private void log(String co, String wartosc) {
TVData.append(co + "=" + (wartosc) + "\n");
}
void ShareIt() {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = TVMWInfo.getText().toString() + "\n\n" + TVData.getText().toString();
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "MultiWii Raw Data");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
public void SendOnClick(View v) {
ShareIt();
}
public void EnableDebugOnClick(View v) {
app.D = true;
// for testing
if (app.D) {
Toast.makeText(getApplicationContext(), "Debug version", Toast.LENGTH_LONG).show();
app.Say("Debug version");
app.mw.GPS_longitude = 24414160;
app.mw.GPS_latitude = 488300660;
app.mw.Waypoints[0].Lat = 488300660;
app.mw.Waypoints[0].Lon = 24414160;
}
}
}