/*
* Robot control console. Copyright (C) 2010 Darrell Taylor & Eric Hokanson
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser 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 Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.allthingsgeek.celljoust;
import com.allthingsgeek.celljoust.R;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.GestureDetector;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.ToggleButton;
/**
* Activity to help configure the ServoBot program
*/
public class ServoConfigActivity extends Activity implements OnSeekBarChangeListener
{
// public static SensorManager sensorManager;
SeekBar lPulseBar;
EditText serverUrl;
EditText robotId;
SeekBar lPulseBar2;
SeekBar rPulseBar;
SeekBar rPulseBar2;
SeekBar lrOffset;
TextView rPulseText;
TextView rPulseText2;
TextView lPulseText;
TextView lPulseText2;
TextView lrOffsetText;
ToggleButton soundToggleButton;
PulseGenerator noise;
Thread noiseThread;
GestureDetector nGestures;
Movement mover;
/*
* (non-Javadoc)
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.servos);
SharedPreferences settings = getSharedPreferences(MainActivity.PREFS_NAME, 0);
noise = PulseGenerator.getInstance();
mover = Movement.getInstance();
lPulseBar = (SeekBar) findViewById(R.id.LeftServo);
lPulseBar.setProgress( ( noise.getPulsePercent(0) - 25 ) * 2);
lPulseBar.setOnSeekBarChangeListener(this);
lPulseText = (TextView) findViewById(R.id.LeftServoValue);
lPulseText.setText("Servo 1(L Wheel) = " + noise.getPulsePercent(0) + "% (" + noise.getPulseSamples(0) + " samples)");
lPulseBar2 = (SeekBar) findViewById(R.id.LeftServo2);
lPulseBar2.setProgress( ( noise.getPulsePercent(1) - 25 ) * 2);
lPulseBar2.setOnSeekBarChangeListener(this);
lPulseText2 = (TextView) findViewById(R.id.LeftServoValue2);
lPulseText2.setText("Servo 2(L Arm) = " + noise.getPulsePercent(1) + "% (" + noise.getPulseSamples(1) + " samples)");
rPulseBar = (SeekBar) findViewById(R.id.RightServo);
rPulseBar.setProgress( ( noise.getPulsePercent(2) - 25 ) * 2);
rPulseBar.setOnSeekBarChangeListener(this);
rPulseText = (TextView) findViewById(R.id.RightServoValue);
rPulseText.setText("Servo 3(R Wheel) = " + noise.getPulsePercent(2) + "% (" + noise.getPulseSamples(2) + " samples)");
rPulseBar2 = (SeekBar) findViewById(R.id.RightServo2);
rPulseBar2.setProgress( ( noise.getPulsePercent(3) - 25 ) * 2);
rPulseBar2.setOnSeekBarChangeListener(this);
rPulseText2 = (TextView) findViewById(R.id.RightServoValue2);
rPulseText2.setText("Servo 4(R Arm) = " + noise.getPulsePercent(3) + "% (" + noise.getPulseSamples(3) + " samples)");
lrOffset = (SeekBar) findViewById(R.id.LROffset);
lrOffset.setProgress(50 + mover.getOffset() * 2);
lrOffset.setOnSeekBarChangeListener(this);
lrOffsetText = (TextView) findViewById(R.id.WheelOffestValue);
lrOffsetText.setText("Left vs Right Offset = " + mover.getOffset());
// soundToggleButton = (ToggleButton) findViewById(R.id.ToggleSound);
// soundToggleButton.setChecked(!noise.isPaused());
noise.pause(false);
}
/*
* (non-Javadoc)
*
* @see android.app.Activity#onStop()
*/
@Override
protected void onStop()
{
super.onStop();
SharedPreferences settings = getSharedPreferences(MainActivity.PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("servo1Percent", noise.getPulsePercent(0));
editor.putInt("servo2Percent", noise.getPulsePercent(1));
editor.putInt("servo3Percent", noise.getPulsePercent(2));
editor.putInt("servo4Percent", noise.getPulsePercent(3));
editor.putInt("wheelOffset", mover.getOffset());
// Commit the edits!
editor.commit();
noise.pause(true);
finish();
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
if (seekBar.getId() == lPulseBar.getId())
{
noise.setOffsetPulsePercent(progress / 2 + 25, 0);
lPulseText.setText("Servo 1(L Wheel) = " + noise.getPulsePercent(0) + "% (" + noise.getPulseSamples(0) + " samples)");
}
if (seekBar.getId() == lPulseBar2.getId())
{
noise.setOffsetPulsePercent(progress / 2 + 25, 1);
lPulseText2.setText("Servo 2(L Arm) = " + noise.getPulsePercent(1) + "% (" + noise.getPulseSamples(1) + " samples)");
}
if (seekBar.getId() == rPulseBar.getId())
{
noise.setOffsetPulsePercent(progress / 2 + 25, 2);
rPulseText.setText("Servo 3(R Wheel) = " + noise.getPulsePercent(2) + "% (" + noise.getPulseSamples(2) + " samples)");
}
if (seekBar.getId() == rPulseBar2.getId())
{
noise.setOffsetPulsePercent(progress / 2 + 25, 3);
rPulseText2.setText("Servo 4(R Arm) = " + noise.getPulsePercent(3) + "% (" + noise.getPulseSamples(3) + " samples)");
}
if (seekBar.getId() == lrOffset.getId())
{
mover.setOffset( ( progress / 2 + 25 ) - 50);
lrOffsetText.setText("Left vs Right Offset = " + mover.getOffset());
}
}
public void onStartTrackingTouch(SeekBar seekBar)
{
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar)
{
// TODO Auto-generated method stub
}
}