+package com.example.sycapp;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.Environment;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.text.format.Time;
+import android.text.method.ScrollingMovementMethod;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.EditText;
+import android.widget.Switch;
+import android.widget.TextView;
+import android.widget.Toast;
+import android.hardware.usb.*;
+
+public class MainActivity extends Activity {
+
+ //private String fileNameExt = "logFile.txt";
+ //private String fileName = "logFile";
+ private FileOutputStream fout;
+ private FileInputStream fin;
+
+ // for serial
+ private SerialIO serial;
+ private SerialIO serial0;
+ private SerialIO serial1;
+ private SerialIO serial2;
+ private SerialIO serial3;
+ private SerialIO serial4;
+ private SerialIO serial5;
+ private Timer timer;
+ private final int interval = 100;
+ private final int xvlTimeUp = 2500;
+ private long currentSeconds;
+
+ // for xively
+ private XivelyUL xively;
+
+ // TODO: need to be deleted
+ private EventGen evtGen;
+
+ private FileLogger fileLog;
+
+
+ // view related
+ private Switch logSW;
+ private Switch xvlSW;
+ private Switch evtSW;
+ private Button startBttn;
+ private Button logBttn;
+ private Button xvlBttn;
+ private Button evtBttn;
+ private EditText fileText;
+ private EditText xvlFeed;
+ private EditText xvlKey;
+ private EditText evtTrInt;
+ private EditText newName;
+ private TextView stream1;
+ private TextView stream2;
+ private TextView diffStr;
+
+ private boolean logEnable;
+
+ private View xvlView;
+ private View evtView;
+ private View logView;
+
+
+ //Display
+ private final int LINENUM = 30;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ Util.debug("Program Start!!");
+
+ LayoutInflater viewGen = LayoutInflater.from(this);
+ //LayoutInflater viewGen = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ this.xvlView = viewGen.inflate(R.layout.xively_cfg_layout, null, false);
+ this.evtView = viewGen.inflate(R.layout.one_alert_layout, null, false);
+ this.logView = viewGen.inflate(R.layout.one_alert_layout, null, false);
+
+ this.timer = new Timer();
+
+ // initial layout
+ this.logSW = (Switch) findViewById(R.id.logSwitch);
+ this.xvlSW = (Switch) findViewById(R.id.xvlSwitch);
+ this.evtSW = (Switch) findViewById(R.id.evtSwitch);
+ this.logBttn = (Button) findViewById(R.id.fileBttn);
+ this.xvlBttn = (Button) findViewById(R.id.xvlBttn);
+ this.evtBttn = (Button) findViewById(R.id.evtBttn);
+ this.startBttn=(Button) findViewById(R.id.startBttn);
+ this.stream1 = (TextView) findViewById(R.id.dataStream1);
+ this.stream2 = (TextView) findViewById(R.id.dataStream2);
+ this.fileText= (EditText) findViewById(R.id.fileText);
+ this.xvlFeed = (EditText) xvlView.findViewById(R.id.xvlFeed);
+ this.xvlKey = (EditText) xvlView.findViewById(R.id.xvlKey);
+ this.evtTrInt= (EditText) evtView.findViewById(R.id.oneLineEdit);
+ this.newName = (EditText) logView.findViewById(R.id.oneLineEdit);
+
+ this.logSW.setOnCheckedChangeListener(new SwitchChangedListener());
+ this.xvlSW.setOnCheckedChangeListener(new SwitchChangedListener());
+ this.evtSW.setOnCheckedChangeListener(new SwitchChangedListener());
+ this.startBttn.setOnClickListener(new ButtonClickListener());
+ this.logBttn .setOnClickListener(new ButtonClickListener());
+ this.xvlBttn .setOnClickListener(new ButtonClickListener());
+ this.evtBttn .setOnClickListener(new ButtonClickListener());
+
+ /*logSW .setEnabled(false);
+ xvlSW .setEnabled(false);
+ evtSW .setEnabled(false);
+ logBttn.setEnabled(false);
+ xvlBttn.setEnabled(false);
+ evtBttn.setEnabled(false);*/
+
+
+
+
+
+
+ //try {fout = openFileOutput(fileName, Context.MODE_PRIVATE);
+ // fin = openFileInput (fileName);}
+ //catch(Exception e) {Util.debug("[M#1]"+e.toString());}
+ this.serial = new SerialIO(fout);
+ //this.serial0= new SerialIO("/dev/ttyO0");
+ this.serial1= new SerialIO("/dev/ttyO1", 1);
+ this.serial2= new SerialIO("/dev/ttyO2", 2);
+ //this.serial3= new SerialIO("/dev/ttyO3");
+ this.xively = new XivelyUL();
+ this.evtGen = new EventGen();
+ this.fileLog= new FileLogger();
+
+ //logEnable = true;
+ xively.setEnable(false);
+ evtGen.SetEnable(false);
+ fileLog.setEnable(false);
+
+
+ //stream1.setMovementMethod(new ScrollingMovementMethod().getInstance());
+ timer.scheduleAtFixedRate(new MainCycle(), 0, interval);
+
+
+ /*stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");
+ stream1.append("aa\n");
+ stream1.append("bb\n");
+ stream1.append("cc\n");
+ stream1.append("dd\n");
+ stream1.append("ee\n");*/
+
+
+
+ /*String longText = "aaaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbb\ncccccccccccccccccccc\n"+
+ "dddddddddddddddddddddd\neeeeeeeeeeeeeeeeeeee\nffffffffffffffffffff\n"+
+ "gggggggggggggggggggggg\nhhhhhhhhhhhhhhhhhhhh\niiiiiiiiiiiiiiiiiiii\n"+
+ "jjjjjjjjjjjjjjjjjjjjjj\nkkkkkkkkkkkkkkkkkkkk\nllllllllllllllllllll\n"+
+ "mmmmmmmmmmmmmmmmmmmmmm\nnnnnnnnnnnnnnnnnnnnn\noooooooooooooooooooo\n"+
+ "pppppppppppppppppppppp\nqqqqqqqqqqqqqqqqqqqq\nrrrrrrrrrrrrrrrrrrrr\n";*/
+
+ //stream2.setText(longText);
+ }
+
+ /*private int lineEnd(TextView text){
+ int lineEnd = -1;
+ if (text.getLineCount()< LINENUM)return -1;
+ String s = text.getText().toString();
+ if (s.length()==0)return -1;
+ while (lineEnd<s.length()&&s.charAt(lineEnd)!='\n'){
+ lineEnd++;
+ }
+ if(lineEnd>=s.length())return -1;
+ return lineEnd+1;
+ }*/
+ /*private void cutLines(TextView text){
+ String s = text.getText().toString();
+ if (s.length()==0)return;
+ while (text.getLineCount()> LINENUM){
+ int lineEnd = 0;
+ while (lineEnd<s.length()&&s.charAt(lineEnd)!='\n'){
+ lineEnd++;
+ }
+ if(lineEnd>=s.length())return;
+ text.getEditableText().delete(0, lineEnd+1);
+ }
+ }*/
+
+ /*private void cutLines(TextView text){
+ String content = text.getText().toString();
+ int totalLen = text.getLineCount();
+ int _nCnt = 0;
+ if(totalLen<LINENUM){
+ return;
+ }else if(totalLen <2*LINENUM){
+ //Approach 1
+ int i;
+ for(i=0; i<content.length(); i++){
+ if(content.charAt(i)=='i'){
+ _nCnt++;
+ if(_nCnt == LINENUM){
+ break;
+ }
+ }
+ }
+ if(i==content.length())return;
+ text.getEditableText().delete(0, i+1);
+ }else{
+ //Approach 2
+ int i;
+ if (totalLen<=LINENUM)return;
+ for(i=content.length(); i>0; i--){
+ if(content.charAt(i)=='\n'){
+ _nCnt++;
+ if((_nCnt+LINENUM-1)>=totalLen){
+ break;
+ }
+ }
+ }
+ if(i<0)return;
+ text.getEditableText().delete(0, i+1);
+ }
+ }*/
+
+ private void cutLines(TextView text){
+ String content = text.getText().toString();
+ int totalLine = text.getLineCount();
+ if (totalLine>LINENUM+1){
+ text.getEditableText().delete(0, 25*(totalLine-1-LINENUM));
+ }
+ }
+
+
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+ private void initTimeStamp(){
+ long currentTimeM = System.currentTimeMillis();
+ SerialData initiator = new SerialData();
+ initiator.initMessage((short)0x00FF, (short)1, currentTimeM, (long)(currentTimeM+1000), (long)100);
+ serial1.send(initiator.initToBytes());
+ initiator.initMessage((short)0x80FF, (short)2, currentTimeM, (long)(currentTimeM+1000), (long)100);
+ serial2.send(initiator.initToBytes());
+ int i;
+ i=0;
+ }
+
+ //--------------------------------------------------------------------
+ // Log Data Related
+
+ private class SwitchChangedListener implements OnCheckedChangeListener{
+
+ @Override
+ public void onCheckedChanged(CompoundButton sw, boolean checked) {
+ // TODO Auto-generated method stub
+ switch(sw.getId()){
+ case R.id.logSwitch: logEnable = !checked; break;
+ case R.id.xvlSwitch: xively.setEnable(checked); break;
+ case R.id.evtSwitch: evtGen.SetEnable(checked); break;
+ }
+ }
+ }
+
+ private class ButtonClickListener implements OnClickListener{
+
+ @Override
+ public void onClick(View v) {
+ switch(v.getId()){
+ case R.id.startBttn:
+ //for(int i=0; i<100;i++){
+ initTimeStamp();
+ //}
+ logSW .setEnabled(true);
+ xvlSW .setEnabled(true);
+ evtSW .setEnabled(true);
+ logBttn.setEnabled(true);
+ xvlBttn.setEnabled(true);
+ evtBttn.setEnabled(true);
+ break;
+ case R.id.fileBttn:
+ AlertDialog.Builder fileDialog = new AlertDialog.Builder(MainActivity.this);
+ fileDialog.setTitle("New File Name");
+ fileDialog.setView(logView);
+ fileDialog.setPositiveButton("Save", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ String newFileName = newName.getText().toString();
+ if (newFileName==""){
+ toast("Fail:Empty File Name");
+ }else{
+ toast("File Setting Succeed");
+ //fileNameExt = newFileName+".txt";
+ fileLog.setNewFile(newFileName+".txt");
+ toast("New File Name Available");
+ }
+ dismiss(logView);
+ dialog.dismiss();
+ }
+ });
+ fileDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dismiss(logView);
+ dialog.dismiss();
+ }
+ });
+ fileDialog.create().show();
+ break;
+
+ /*try{
+ String newFileName = fileText.getText().toString();
+ if(newFileName==""){
+ Toast.makeText(getApplicationContext(), "Fail:Empty File Name", Toast.LENGTH_LONG).show();
+ return;
+ }
+ fileNameExt = fileText.getText().toString()+".txt";
+ Toast.makeText(getApplicationContext(), "Change Success!!", Toast.LENGTH_LONG).show();
+ //fileNameExt = "newFile.txt";
+ Util.debug("[M#8]FileName Changed to:"+fileNameExt);
+ }catch (Exception e){
+ Util.debug("[M#0]"+e.toString());
+ }
+
+ break;*/
+ case R.id.xvlBttn:
+ Util.debug("[M#10]I'm clicked");
+ AlertDialog.Builder xvlDialog = new AlertDialog.Builder(MainActivity.this);
+ xvlDialog.setTitle("Xively Configuration");
+ xvlDialog.setView(xvlView);
+ xvlDialog.setPositiveButton("Save", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ toast("Xively Feed/Key Set");
+ String newXvlFeed = xvlFeed.getText().toString();
+ String newXvlKey = xvlKey.getText().toString();
+ if (newXvlFeed!="") xively.setFeedID(newXvlFeed);
+ if (newXvlKey !="") xively.setApiKey(newXvlKey);
+ xively.createChannel("mbed1");
+ xively.createChannel("mbed2");
+ dismiss(xvlView);
+ dialog.dismiss();
+ }
+ });
+ xvlDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int arg1) {
+ dismiss(xvlView);
+ dialog.dismiss();
+ }
+ });
+ xvlDialog.setNeutralButton("Reset", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which){
+ toast("Xively Reset Succeed!");
+ xively.resetFeedID();
+ xively.resetApiKey();
+ dismiss(xvlView);
+ dialog.dismiss();
+ }
+ });
+ xvlDialog.create().show();
+ break;
+ case R.id.evtBttn:
+ AlertDialog.Builder evtDialog = new AlertDialog.Builder(MainActivity.this);
+ evtDialog.setTitle("Event Trigger Interval(ms)");
+ evtDialog.setView(evtView);
+ evtDialog.setPositiveButton("Save", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ String newIntervalS = evtTrInt.getText().toString();
+ if(newIntervalS.length()>0) {
+ int interval = Integer.parseInt(evtTrInt.getText().toString());
+ if (interval<10||interval>10000){
+ toast("Fail:In valid Interval");
+ }else{
+ toast("Setting Succeed!");
+ evtGen.setInterval(interval);
+ SerialData cmd = evtGen.genTriggerCmd(1);
+ serial1.send(cmd.initToBytes());
+ cmd = evtGen.genTriggerCmd(2);
+ serial2.send(cmd.initToBytes());
+ }
+ }
+ dismiss(evtView);
+ dialog.dismiss();
+ }
+ });
+ evtDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dismiss(evtView);
+ dialog.dismiss();
+ }
+ });
+ evtDialog.create().show();
+ break;
+
+ }
+ }
+ }
+
+ private void toast(String s){
+ Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
+ }
+
+ private void dismiss(View view){
+ ViewGroup vg = (ViewGroup) view.getParent();
+ vg.removeView(view);
+ }
+
+ /*private void writeExternal(Vector<SerialData> sData){
+ try{
+ File myFile = new File(Environment
+ .getExternalStorageDirectory(), fileNameExt);
+ //if (!myFile.exists())
+ //myFile.createNewFile();
+ FileOutputStream fex;
+ fex = new FileOutputStream(myFile,true);
+ for (int i = 0; i < sData.size(); i++){
+ SerialData data = sData.get(i);
+ fex.write(("[Node "+Integer.toString(data.devID)+"] ["+Integer.toString(data.msgSeq)+"] "+data.timeStamp()+"\n").getBytes()) ;
+ }
+ fex.flush();
+ fex.close();
+ }catch(Exception e){
+ Util.debug("M#7"+e.toString());
+ }
+ }*/
+
+ /*private void writeData(Vector<SerialData> sData){
+ if (sData==null){
+ return;
+ }
+ try{
+ OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput(fileName, Context.MODE_APPEND));
+
+ for(int i=0; i<sData.size(); i++){
+ SerialData data = sData.get(i);
+ //fout = (data.devId==1)?fout1:fout2;
+ outputStreamWriter.write("[Node "+Integer.toString(data.devID)+"] "+data.timeStamp()+"\n");
+ }
+ outputStreamWriter.close();
+ }catch(Exception e){
+ Util.debug("[M#5]"+e.toString());
+ }
+ }*/
+
+ /*private String readData() {
+
+ String ret = "";
+
+ try {
+ InputStream inputStream = openFileInput(fileName);
+
+ if ( inputStream != null ) {
+ InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ String receiveString = "";
+ StringBuilder stringBuilder = new StringBuilder();
+
+ while ( (receiveString = bufferedReader.readLine()) != null ) {
+ stringBuilder.append(receiveString);
+ }
+
+ inputStream.close();
+ ret = stringBuilder.toString();
+ }
+ }
+ catch (FileNotFoundException e) {
+ Util.debug("File not found: " + e.toString());
+ } catch (IOException e) {
+ Util.debug("Can not read file: " + e.toString());
+ }
+ return ret;
+ }*/
+
+ // Serial 1 for the moment
+ private void packToView(Vector<SerialData> data){
+ for(int i=0; i<data.size(); i++){
+ SerialData d = data.get(i);
+ if(d.portId==1){
+ stream1.append(d.devID+": "+d.timeDisplay()+"\n");
+ }else{
+ stream2.append(d.devID+": "+d.timeDisplay()+"\n");
+ }
+ }
+ }
+
+ private void simpleCal(Vector<SerialData> v1, Vector<SerialData> v2){
+ SerialData d1;
+ SerialData d2;
+ int i=0;
+ int j=0;
+ while(i<v1.size()&& j<v2.size()){
+ d1 = v1.get(i);
+ d2 = v1.get(j);
+ //if(abs(d1.))
+ }
+ }
+
+ private void timeDiff(int wrS1, int wrN1, int wrS2, int wrN2){
+ /*long t1 = (long)(((long)(wrS1)*(long)(1000))+((long)(wrN1)/(long)(1000000)));
+ long t2 = (long)(((long)(wrS2)*(long)(1000))+((long)(wrN2)/(long)(1000000)));
+ String tt1 = new SimpleDateFormat("yyyy-MM-dd", Locale.US).
+ format(new Date(currentTimeM)).toString()*/
+ }
+
+ private int cnt=0;
+ private int xvlCnt;
+ private int dspCnt;
+ private int did_temp = 1;
+ private class MainCycle extends TimerTask{
+
+ @Override
+ public void run() {
+
+ cnt++;
+ dspCnt++;
+ xvlCnt++;
+
+ // for debugger
+ if(cnt>=1000/interval){
+ cnt = 0;
+ Util.debug("check for alive");
+ }
+
+
+ //Serial
+ Vector<SerialData> data = serial1.checkPort();
+ Vector<SerialData> data2 = serial2.checkPort();
+ data.addAll(data2);
+
+ //Fot test: data generator:
+ /*SerialData sd = new SerialData();
+ did_temp = (did_temp==1)?2:1;
+ sd.evtMessage((short)did_temp, (short)0, System.currentTimeMillis(), (long)0);
+ Vector<SerialData> data= new Vector<SerialData>();
+ data.add(sd);*/
+
+
+
+ //Xively
+ new XivelyPack().execute(data); //always pack data
+ if (xvlCnt>=2500/interval){
+ xvlCnt = 0;
+ new XivelyUpload().execute(); //upload when it is time
+ }
+
+ //File Log
+ new LogToFile().execute(data);
+
+
+ //Display
+ final Vector<SerialData> dataToDisplay = data;
+ runOnUiThread(new Runnable(){
+ @Override
+ public void run() {
+ packToView(dataToDisplay);
+ if(dspCnt>=1000/interval){
+ dspCnt = 0;
+ cutLines(stream1);
+ cutLines(stream2);
+ }
+ }
+
+ });
+
+
+
+
+
+ /*Vector<SerialData> data = serial.checkPort();
+ new XivelyPack().execute(data);
+
+ xvlCnt++;
+ if(xvlCnt == (xvlTimeUp/interval)){
+ new XivelyUpload().execute();
+ }
+
+ new LogToFile().execute(data);*/
+
+
+
+
+
+
+
+ //Original WorkFlow
+ /*Vector<SerialData> data = serial.checkPort();
+ xively.packSerialData(data);
+
+ xvlCnt++;
+ if(xvlCnt == (xvlTimeUp/interval)){
+ xively.uploadData();
+ }*/
+
+ //fileLog.writeExternal(data);
+ //if(logEnable){ writeExternal(data);Util.debug("[M#9]Recording");}
+ //else {Util.debug("[M#9]Not writing because of the permit");}
+ //writeData(data);
+ //Util.debug("[Read Result]"+readData());
+ //Util.debug("[Read Result] "+Integer.toString(data.size()));
+
+ //xively.packSerialData(data);
+
+ //test for logThread
+ /*SerialData sd = new SerialData();
+ sd.evtMessage((short)0, (short)0, System.currentTimeMillis(), (long)0);
+ Vector<SerialData> v= new Vector<SerialData>();
+ v.add(sd);*/
+ //xively.uploadData();
+ }
+ }
+
+ int seq = 0;
+ private void test(){
+ SerialData evtData = new SerialData();
+ evtData.evtMessage((short)1, (short)0, System.currentTimeMillis(), 0);
+ serial.send(evtData.evtToBytes());
+ /*SerialData syncData = new SerialData();
+ syncData.evtMessage((short)1, (short)0, System.currentTimeMillis(), 0);
+ //syncData.syncMessage(seq++, System.currentTimeMillis());*/
+ //syncData.syncMessage(seq++, System.currentTimeMillis());
+ }
+
+ private class LogToFile extends AsyncTask<Vector,Void,Void>{
+ @Override
+ @SuppressWarnings("unchecked")
+ protected Void doInBackground(Vector... dataVctArray) {
+ fileLog.writeExternal(dataVctArray[0]);
+ return null;
+ }
+ }
+
+ private class XivelyPack extends AsyncTask<Vector,Void,Void>{
+ @Override
+ @SuppressWarnings("unchecked")
+ protected Void doInBackground(Vector... dataVctArray) {
+ xively.packSerialData(dataVctArray[0]);
+ return null;
+ }
+
+ }
+
+ private class XivelyUpload extends AsyncTask<Void, Void, Void>{
+
+ @Override
+ protected Void doInBackground(Void... voids) {
+ xively.uploadData();
+ return null;
+ }
+ }
+}