Subversion Repositories FlightCtrl

Rev

Blame | Last modification | View Log | RSS feed

/*********************************************************************************************************************************
 *                                                                                                                                *
 * minimal canvas to test Abstraction layer on various Phones                                                                     *
 *                                                                                                                                *
 * Author:        Marcus -LiGi- Bueschleb                                                                                         *
 * Project-Start: 9/2007                                                                                                          *
 * Mailto:        ligi@smart4mobile.de                                                                                            *
 * Licence:       Creative Commons / Non Commercial                                                                               *
 * Big Up:        Holger&Ingo                                                                                                     *
 *********************************************************************************************************************************/


import javax.microedition.lcdui.*;

public class MKMiniCanvas
        extends Canvas
        implements Runnable
{

 
   
    int vibrating=0;

    //BTAbstractor bt;
   
    BTSearcher bt_scanner;
    MKCommunicator mk=null;
    MKStatistics mk_stat=null;

    // data Section

    public String err="";


    public MKMiniCanvas()
        {

            bt_scanner = new BTSearcher();
//////////////////////////////////////////////////////////////////////////////mk = new MKCommunicator("btspp://000BCE016B5B:1");
           
            new Thread(this).start();
        }



    /********************************************************** Thread ***********************************************************/
    // ticking runnable Section
    public void run()
    {

        while(true)
            {
                long loopStartTime = System.currentTimeMillis();
                long sleeptime=0;
                // ticked thing
               
                com.nokia.mid.ui.DeviceControl.setLights(0,100);
                //bt.tick();
                // every state has sth to do in tick section
             

//                System.gc();
                repaint();
                serviceRepaints();
       
                       
                sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime);
               
               
                if (sleeptime<0)
                        sleeptime=100; // everyone has fi sleep
               
                try { Thread.sleep(sleeptime); }
                catch (Exception e)
                    {
                         err="Problem Sleeping ";
                    }

            }
    }

     

       

    // drawing section
    public void paint(Graphics g) {
        g.setColor(0xFFFFFF);
        g.fillRect(0,0,this.getWidth(),this.getHeight());
        g.setColor(0x000000);
       
        if (mk==null)
            {
        if (bt_scanner.searching)
            g.drawString("scanning for BT-Devices",0,0,Graphics.TOP | Graphics.LEFT);
        else
            {
            g.drawString("Press key 0-"+(bt_scanner.remote_device_count-1) + " to continue" ,0,0,Graphics.TOP | Graphics.LEFT);
            for (int i=0;i<bt_scanner.remote_device_count;i++)
            g.drawString("#"+i+">" + bt_scanner.remote_device_name[i]+"("+bt_scanner.remote_device_mac[i]+")",0,15+15*i,Graphics.TOP | Graphics.LEFT);
           
            }
            }
        else // MK is connected
            {
                int y_off=0;
                int spacer=15;
                g.drawString("#"+mk.data_count + "from:" + mk.mk_url,0,y_off,Graphics.TOP | Graphics.LEFT);
                y_off+=spacer;
                g.drawString("v"+mk.version_major+"."+mk.version_minor,0,y_off,Graphics.TOP | Graphics.LEFT);
                y_off+=spacer;

                try {
                g.drawString("motor1:"+mk.debug_data.analog[12],0,y_off,Graphics.TOP | Graphics.LEFT);
                y_off+=spacer;
                g.drawString("motor2:"+mk.debug_data.analog[13],0,y_off,Graphics.TOP | Graphics.LEFT);
                y_off+=spacer;
                g.drawString("motor3:"+mk.debug_data.analog[14],0,y_off,Graphics.TOP | Graphics.LEFT);
                y_off+=spacer;
                g.drawString("motor4:"+mk.debug_data.analog[15],0,y_off,Graphics.TOP | Graphics.LEFT);
                y_off+=spacer;
               
                }
                catch (Exception e) { }
                if (mk.connected)
                    {
                        g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
                        y_off+=spacer;
                        g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
                    }

            }
           
    }

    /*********************************************** input Section **********************************************/
    // keys
    public void keyPressed(int keyCode)
    {
       
        if ((mk==null)&&(keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM0+bt_scanner.remote_device_count))
        {
            mk = new MKCommunicator("btspp://"+bt_scanner.remote_device_mac[keyCode-this.KEY_NUM0] + ":1");
            mk_stat= new MKStatistics(mk);
        }
            return;
    }

 






}