Subversion Repositories Projects

Rev

Rev 135 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

/**************************************
 *
 * WatchDog for MK-Connection
 *                      
 * Author:        Marcus -LiGi- Bueschleb
 *
 * see README for further Infos
 *
 *
 **************************************/


public class MKWatchDog
    implements Runnable,DUBwiseDefinitions
{

    MKCommunicator mk=null;

    int debug_data_count_buff=-123;
    int lcd_data_count_buff=-123;


    public MKWatchDog(MKCommunicator _mk)
    {

        mk=_mk;
        new Thread( this ).start(); // fire up main Thread
    }

    int lcd_timeout=0; // detect if we lost packets

    public int act_paramset=0;
    int conn_check_timeout=0;

    public void run()
    {
        // get all params
        int act_debug_name=0;

        while(true)
            {

                try { Thread.sleep(100); } // 3000
                catch (Exception e)  {   }
               
                if (mk.connected&&(!mk.force_disconnect))
                    {

                        if (debug_data_count_buff==mk.debug_data_count)
                            {
                                mk.debug.log("timeout:" +conn_check_timeout );         
                                conn_check_timeout++;
                                if  (conn_check_timeout==100)
                                    {
                                        mk.debug.log("disconnecting");         
                                        mk.close_connections(false);
                                        conn_check_timeout=0;
                                    }
                                debug_data_count_buff=mk.debug_data_count;
                               
                            }
                        else
                            conn_check_timeout=0;


                        if ( mk.version.major==-1 )
                            {
                                try { Thread.sleep(150); }
                                catch (Exception e)  {   }
                                mk.get_version();
                            }
                        else  if ((act_paramset<5)&&(mk.root.canvas.user_intent==USER_INTENT_PARAMS) &&(! mk.root.canvas.ufo_prober.is_navi()))
                            {
                                mk.get_params(act_paramset+1);
                               
                                try { Thread.sleep(350); }
                                catch (Exception e)  {   }
                               
                                if(mk.params.field[act_paramset]!=null)
                                    act_paramset++;
                            }
                        else if (( act_debug_name<32)&&(mk.root.canvas.user_intent==USER_INTENT_RAWDEBUG))
                            {
                                mk.get_debug_name(act_debug_name);
                               
                                try { Thread.sleep(150); }
                                catch (Exception e)  {   }
                               

                                if (mk.debug_data.got_name[act_debug_name]) act_debug_name++;
                            }
                        /*else  if ((mk.root.canvas.user_intent==USER_INTENT_RAWDEBUG) || (mk.root.canvas.user_intent==USER_INTENT_GRAPH) )
                                    {
                                        mk.trigger_debug();
                                        try { Thread.sleep(100); }
                                        catch (Exception e)  {   }
                                    }
                        */
 

               
           



                        /*


                        if (debug_data_count_buff==mk.debug_data_count)
                            {
                                //                              mk.close_connections(false);
                            }

                        */


                        /*if (mk.version.major==-1)
                            mk.get_version();
                        else
                        */
 
                        /*for ( int cnt=0;cnt<5;cnt++)
                            if (mk.params.field[cnt]==null)
                                {
                                    mk.get_params(cnt+1);
                                    break;
                                    }*/

                        /*
                        for (int c=0;c<32;c++)
                            if (!mk.debug_data.got_name[c])
                                {
                                    mk.get_debug_name(c);
                                    break;
                                }
                        */


                        else
                            {
                                if ((lcd_data_count_buff!=mk.lcd_data_count)||(mk.lcd_data_count==0)||(lcd_timeout==23))
                                    {
                                        lcd_timeout=0;
                                        lcd_data_count_buff=mk.lcd_data_count;
                                        mk.LCD.trigger_LCD();
                                        try { Thread.sleep(50); }
                                        catch (Exception e)  {   }
                                        //debug_data_count_buff=mk.debug_data_count;
                               
                                    }
                                else
                                    {
                                        lcd_timeout++;
                                    }
                            }
                       

                       
                    }
               

            }
    }

   
}