diff --git a/Server/app_routes/misc.py b/Server/app_routes/misc.py index 6263612..c445da4 100644 --- a/Server/app_routes/misc.py +++ b/Server/app_routes/misc.py @@ -1,6 +1,7 @@ from flask import Blueprint, request, jsonify from web_server_models import set_delay_manually, get_delay_manually, copters from server import Client +from time import time misc_api = Blueprint('misc_api', __name__, template_folder='templates') @@ -39,7 +40,8 @@ def flip_selected(): ip = request.args.get("ip") for copter in copters: if copter.ip == ip: - copter.client.send_message("flip") + if takeoff_checks(copter): + copter.client.send_message("flip") return jsonify({'m': 'ok'}) @@ -48,7 +50,8 @@ def takeoff_selected(): ip = request.args.get("ip") for copter in copters: if copter.ip == ip: - copter.client.send_message("takeoff") + if takeoff_checks(copter): + copter.client.send_message("takeoff") return jsonify({'m': 'ok'}) @@ -68,3 +71,67 @@ def resume_selected(): if copter.ip == ip: copter.client.send_message("resume") return jsonify({'m': 'ok'}) + + +def all_checks(copter): + copter.refresh() + checks = [check_anim(copter.anim_id), + check_bat_p(((float(copter.batt_voltage) - 3.2) / (4.2 - 3.2)) * 100), + check_bat_v(copter.cell_voltage), + check_selfcheck(copter.selfcheck), + check_time_delta(round(float(copter.time) - time(), 3))] + return not (False in checks) + + +def takeoff_checks(copter): + copter.refresh() + checks = [check_bat_p(((float(copter.batt_voltage) - 3.2) / (4.2 - 3.2)) * 100), + check_bat_v(copter.cell_voltage), + check_selfcheck(copter.selfcheck)] + return not (False in checks) + + +def check_anim(item): + if not item: + return None + if str(item) == 'No animation': + return False + else: + return True + + +def check_bat_v(item): + if not item: + return None + if float(item) > 3.2: # todo config + return True + else: + return False + + +def check_bat_p(item): + if not item: + return None + if float(item) > 30: # todo config + return True + else: + return False + # return True #For testing + + +def check_selfcheck(item): + if not item: + return None + if item == "OK": + return True + else: + return False + + +def check_time_delta(item): + if not item: + return None + if abs(float(item)) < 1: + return True + else: + return False diff --git a/Server/app_routes/selfcheck.py b/Server/app_routes/selfcheck.py index 0be72db..bee341f 100644 --- a/Server/app_routes/selfcheck.py +++ b/Server/app_routes/selfcheck.py @@ -1,7 +1,6 @@ from flask import Blueprint, request, jsonify from web_server_models import copters, WebCopter from server import Client -from time import time selfcheck_api = Blueprint('selfcheck_api', __name__, template_folder='templates') @@ -97,67 +96,3 @@ def calibrate_level_selected(): if copter.ip == ip: copter.client.send_message("calibrate_level") return jsonify({'m': 'ok'}) - - -def all_checks(copter): - copter.refresh() - checks = [check_anim(copter.anim_id), - check_bat_p(((float(copter.batt_voltage) - 3.2) / (4.2 - 3.2)) * 100), - check_bat_v(copter.cell_voltage), - check_selfcheck(copter.selfcheck), - check_time_delta(round(float(copter.time) - time(), 3))] - return not (False in checks) - - -def takeoff_checks(copter): - copter.refresh() - checks = [check_bat_p(((float(copter.batt_voltage) - 3.2) / (4.2 - 3.2)) * 100), - check_bat_v(copter.cell_voltage), - check_selfcheck(copter.selfcheck)] - return not (False in checks) - - -def check_anim(item): - if not item: - return None - if str(item) == 'No animation': - return False - else: - return True - - -def check_bat_v(item): - if not item: - return None - if float(item) > 3.2: # todo config - return True - else: - return False - - -def check_bat_p(item): - if not item: - return None - if float(item) > 30: # todo config - return True - else: - return False - # return True #For testing - - -def check_selfcheck(item): - if not item: - return None - if item == "OK": - return True - else: - return False - - -def check_time_delta(item): - if not item: - return None - if abs(float(item)) < 1: - return True - else: - return False diff --git a/Server/web_server.py b/Server/web_server.py index da89676..023af0e 100644 --- a/Server/web_server.py +++ b/Server/web_server.py @@ -1,9 +1,9 @@ from server import Server from web_server_models import copters, get_delay_manually -from flask import Flask, render_template, jsonify, request +from flask import Flask, render_template, jsonify from app_routes.selfcheck import selfcheck_api, refresh_copters from app_routes.file_sender import file_sender_api -from app_routes.misc import misc_api +from app_routes.misc import misc_api, all_checks app = Flask(__name__, static_url_path='/static') app.register_blueprint(selfcheck_api) @@ -21,7 +21,8 @@ def home(): @app.route('/start_animation', methods=['GET', 'POST']) def resume_selected(): for copter in copters: - server.send_starttime(copter.client, get_delay_manually()) + if all_checks(copter): + server.send_starttime(copter.client, get_delay_manually()) return jsonify({'m': 'ok'}) diff --git a/Server/web_server_models.py b/Server/web_server_models.py index e1e19c6..960d22f 100644 --- a/Server/web_server_models.py +++ b/Server/web_server_models.py @@ -1,6 +1,3 @@ -from server import Client -from time import time - copters = [] delay = 0