From bfca0ff9bcacfce30b9210919186e4ab99a06738 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Fri, 9 Nov 2012 21:43:43 -0800 Subject: [PATCH] ACM: added ap_state.pde --- ArduCopter/AP_State.pde | 149 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 ArduCopter/AP_State.pde diff --git a/ArduCopter/AP_State.pde b/ArduCopter/AP_State.pde new file mode 100644 index 0000000000..9088b4c811 --- /dev/null +++ b/ArduCopter/AP_State.pde @@ -0,0 +1,149 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + +void set_home_is_set(bool b) +{ + ap.home_is_set = b; + + if(b) Log_Write_Event(DATA_SET_HOME); +} + +// --------------------------------------------- +void set_armed(bool b) +{ + ap.armed = b; + if(b){ + Log_Write_Event(DATA_ARMED); + + }else{ + Log_Write_Event(DATA_DISARMED); + } +} + +// --------------------------------------------- +void set_auto_armed(bool b) +{ + ap.auto_armed = b; + if(b){ + Log_Write_Event(DATA_AUTO_ARMED); + } +} + +// --------------------------------------------- +void set_simple_mode(bool b) +{ + if(ap.simple_mode != b){ + if(b){ + Log_Write_Event(DATA_SET_SIMPLE_ON); + }else{ + Log_Write_Event(DATA_SET_SIMPLE_OFF); + } + } + ap.simple_mode = b; +} + +// --------------------------------------------- +static void set_failsafe(bool mode) +{ + // only act on changes + // ------------------- + if(ap.failsafe != mode) { + + // store the value so we don't trip the gate twice + // ----------------------------------------------- + //failsafe = mode; + ap.failsafe = mode; + + if (ap.failsafe == false) { + // We've regained radio contact + // ---------------------------- + failsafe_off_event(); + Log_Write_Event(DATA_FAILSAFE_OFF); + + }else{ + // We've lost radio contact + // ------------------------ + failsafe_on_event(); + Log_Write_Event(DATA_FAILSAFE_ON); + } + } +} + + +// --------------------------------------------- +void set_low_battery(bool b) +{ + if(ap.low_battery != b && true == b){ + Log_Write_Event(DATA_LOW_BATTERY); + } + ap.low_battery = b; +} + +// --------------------------------------------- +void set_takeoff_complete(bool b) +{ + if(b){ + Log_Write_Event(DATA_TAKEOFF); + } + ap.takeoff_complete = b; +} + +// --------------------------------------------- +void set_land_complete(bool b) +{ + if(b){ + Log_Write_Event(DATA_LAND_COMPLETE); + } + ap.land_complete = b; +} + +// --------------------------------------------- +void set_rtl_reached_alt(bool b) +{ + if(b){ + Log_Write_Event(DATA_RTL_REACHED_ALT); + } + ap.rtl_reached_alt = b; +} + +// --------------------------------------------- + +void set_alt_change(uint8_t flag){ + alt_change_flag = flag; + + if(flag == REACHED_ALT){ + Log_Write_Event(DATA_REACHED_ALT); + + }else if(flag == ASCENDING){ + Log_Write_Event(DATA_ASCENDING); + + }else if(flag == DESCENDING){ + Log_Write_Event(DATA_DESCENDING); + } +} + +void set_compass_healthy(bool b) +{ + if(ap.compass_status != b){ + if(false == b){ + Log_Write_Event(DATA_LOST_COMPASS); + } + } + ap.compass_status = b; +} + +void set_gps_healthy(bool b) +{ + if(ap.gps_status != b){ + if(false == b){ + Log_Write_Event(DATA_LOST_GPS); + } + } + ap.gps_status = b; +} + +void dump_state() +{ + Serial.printf("st: %u\n",ap.value); + //Serial.printf("%u\n", *(uint16_t*)&ap); +}