0,0 → 1,235 |
/************************************** |
* |
* WatchDog for MK-Connection |
* |
* Author: Marcus -LiGi- Bueschleb |
* |
* see README for further Infos |
* |
* |
|
**************************************/ |
package org.ligi.ufo; |
|
public class MKWatchDog |
implements Runnable,DUBwiseDefinitions |
{ |
MKCommunicator mk=null; |
|
int debug_data_count_buff=-123; |
|
public MKWatchDog(MKCommunicator _mk) |
{ |
|
mk=_mk; |
new Thread( this ).start(); // fire up main Thread |
} |
|
|
public int act_paramset=0; |
int conn_check_timeout=0; |
|
|
public byte resend_timeout=0; |
int last_count=0; |
|
|
//#ifdef android |
// public final static int BASE_SLEEP=50; |
//#else |
public final static int BASE_SLEEP=40; |
//#endif |
|
public void run() |
{ |
mk.log("starting Watchdog"); |
// get all params |
int act_debug_name=0; |
int sleeper=BASE_SLEEP; |
while(true) |
{ |
try { |
Thread.sleep(sleeper); |
sleeper=BASE_SLEEP; |
if (mk.connected&&(!mk.force_disconnect)) |
{ |
|
mk.log("watchdog pre main loop"); |
/* if (mk.root.canvas.init_bootloader) |
{ |
mk.jump_bootloader(); |
mk.root.canvas.init_bootloader=false; |
} |
else */if ( mk.version.major==-1 ) |
mk.get_version(); |
else if (mk.ufo_prober.is_navi()&&(mk.error_str==null)) |
mk.get_error_str(); |
|
else if (mk.ufo_prober.is_mk()&&(mk.params.last_parsed_paramset==-1)) |
{ |
mk.get_params(0xFF-1); |
sleeper+=150; |
act_paramset=0; // warning - if dropped problem |
} |
else switch (mk.user_intent) |
{ |
case USER_INTENT_PARAMS: |
|
if ((act_paramset<5)) |
{ |
|
if (resend_timeout==0) { |
mk.get_params(act_paramset); |
resend_timeout=50; |
} |
|
if(mk.params.field[act_paramset]!=null) |
{ |
mk.get_params(++act_paramset); |
resend_timeout=50; |
} |
else |
resend_timeout--; |
/* |
// act_paramset++; |
else |
mk.get_params(act_paramset); |
|
sleeper+=1200; |
*/ |
} |
break; |
case USER_INTENT_RAWDEBUG: |
if (act_debug_name<32) |
{ |
|
if (resend_timeout==0) { |
mk.get_debug_name(act_debug_name); |
resend_timeout=50; |
} |
|
|
//sleeper+=100; |
if (mk.debug_data.got_name[act_debug_name]) |
{ |
mk.get_debug_name(++act_debug_name); |
resend_timeout=50; |
} |
else |
resend_timeout--; |
|
} |
|
break; |
|
case USER_INTENT_RCDATA: |
mk.trigger_rcdata(); |
sleeper+=250; |
break; |
|
case USER_INTENT_LCD: |
if (resend_timeout==0) |
{ |
mk.LCD.trigger_LCD(); |
resend_timeout=50; |
} |
|
if ( last_count!=mk.stats.lcd_data_count) |
{ |
mk.LCD.trigger_LCD(); |
resend_timeout=50; |
} |
else |
resend_timeout--; |
|
//sleeper +=250; |
break; |
|
default: |
// mk.log("uncactched intent " +mk.root.canvas.user_intent ); |
break; |
} |
|
// if ((!mk.ufo_prober.is_incompatible())) |
{ |
|
mk.log("watchdog after main loop"); |
if (debug_data_count_buff==mk.stats.debug_data_count) |
{ |
mk.log("timeout:" +conn_check_timeout ); |
conn_check_timeout++; |
if (conn_check_timeout==100) |
{ |
mk.log("disconnecting"); |
mk.close_connections(false); |
conn_check_timeout=0; |
} |
debug_data_count_buff=mk.stats.debug_data_count; |
} |
else |
conn_check_timeout=0; |
|
|
|
/*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; |
} |
*/ |
|
|
} |
|
} |
|
|
} // 3000 |
catch (Exception e) { |
mk.log("err in watchdog:"); |
mk.log(e.toString()); |
|
} |
} |
|
|
// mk.log("watchdog quit"); |
} |
|
|
} |