package org.droidplanner.android.view.checklist; import android.content.Context; import com.o3dr.android.client.Drone; import com.o3dr.android.client.apis.VehicleApi; import com.o3dr.services.android.lib.drone.attribute.AttributeType; import com.o3dr.services.android.lib.drone.property.Battery; import com.o3dr.services.android.lib.drone.property.Gps; import com.o3dr.services.android.lib.drone.property.State; import org.droidplanner.android.DroidPlannerApp; public class CheckListSysLink { private Context context; private Drone drone; public CheckListSysLink(Context context, Drone drone) { this.context = context; this.drone = drone; } public void getSystemData(CheckListItem mListItem, String mSysTag) { if (mSysTag == null) return; Battery batt = drone.getAttribute(AttributeType.BATTERY); if (batt != null) { if (mSysTag.equalsIgnoreCase("SYS_BATTREM_LVL")) { mListItem.setSys_value(batt.getBatteryRemain()); } else if (mSysTag.equalsIgnoreCase("SYS_BATTVOL_LVL")) { mListItem.setSys_value(batt.getBatteryVoltage()); } else if (mSysTag.equalsIgnoreCase("SYS_BATTCUR_LVL")) { mListItem.setSys_value(batt.getBatteryCurrent()); } } Gps gps = drone.getAttribute(AttributeType.GPS); if (gps != null) { if (mSysTag.equalsIgnoreCase("SYS_GPS3D_LVL")) { mListItem.setSys_value(gps.getSatellitesCount()); } } State state = drone.getAttribute(AttributeType.STATE); if (state != null) { if (mSysTag.equalsIgnoreCase("SYS_ARM_STATE")) { mListItem.setSys_activated(state.isArmed()); } else if (mSysTag.equalsIgnoreCase("SYS_FAILSAFE_STATE")) { mListItem.setSys_activated(state.isWarning()); } } if (mSysTag.equalsIgnoreCase("SYS_CONNECTION_STATE")) { mListItem.setSys_activated(drone.isConnected()); } } public void setSystemData(CheckListItem checkListItem) { if (checkListItem.getSys_tag() == null) return; if (checkListItem.getSys_tag().equalsIgnoreCase("SYS_CONNECTION_STATE")) { doSysConnect(checkListItem); } else if (checkListItem.getSys_tag().equalsIgnoreCase("SYS_ARM_STATE")) { doSysArm(checkListItem); } } private void doSysArm(CheckListItem checkListItem) { final State droneState = drone.getAttribute(AttributeType.STATE); if (droneState.isConnected()) { if (checkListItem.isSys_activated() && !droneState.isArmed()) { VehicleApi.getApi(drone).arm(true); } else { VehicleApi.getApi(drone).arm(false); } } } private void doSysConnect(CheckListItem checkListItem) { boolean activated = checkListItem.isSys_activated(); boolean connected = drone.isConnected(); if (activated != connected) { if (connected) DroidPlannerApp.disconnectFromDrone(context); else DroidPlannerApp.connectToDrone(context); } } }