updated board from olimex c5

This commit is contained in:
2026-06-11 00:44:19 +03:00
parent 5340f88ffe
commit 916e35b22b
6 changed files with 257 additions and 27 deletions
+17 -16
View File
@@ -10,6 +10,7 @@ from app.drivers.registry import registry
from flask import current_app
_NFC_DRIVER_ID = "olimex_esp32_c6_evb_pn532"
_NFC_DRIVER_IDS = {"olimex_esp32_c6_evb_pn532", "olimex_esp32_c5_evb"}
boards_bp = Blueprint("boards", __name__)
@@ -290,9 +291,9 @@ def edit_labels(board_id: int):
@login_required
def nfc_management(board_id: int):
board = db.get_or_404(Board, board_id)
if board.board_type != _NFC_DRIVER_ID:
if board.board_type not in _NFC_DRIVER_IDS:
abort(404)
driver = registry.get(_NFC_DRIVER_ID)
driver = registry.get(board.board_type)
nfc_status = driver.get_nfc_status(board) if driver else None
return render_template(
"boards/nfc.html",
@@ -305,9 +306,9 @@ def nfc_management(board_id: int):
@login_required
def nfc_status_json(board_id: int):
board = db.get_or_404(Board, board_id)
if board.board_type != _NFC_DRIVER_ID:
if board.board_type not in _NFC_DRIVER_IDS:
abort(404)
driver = registry.get(_NFC_DRIVER_ID)
driver = registry.get(board.board_type)
data = driver.get_nfc_status(board) if driver else None
if data is None:
return jsonify({"error": "Board unreachable"}), 502
@@ -320,22 +321,22 @@ def nfc_config_save(board_id: int):
if not current_user.is_admin():
abort(403)
board = db.get_or_404(Board, board_id)
if board.board_type != _NFC_DRIVER_ID:
if board.board_type not in _NFC_DRIVER_IDS:
abort(404)
driver = registry.get(_NFC_DRIVER_ID)
driver = registry.get(board.board_type)
if not driver:
flash("NFC driver not available.", "danger")
return redirect(url_for("boards.nfc_management", board_id=board_id))
auth_uid = request.form.get("auth_uid", "").strip().upper()
relay_num = int(request.form.get("relay_num", 1))
pulse_ms = int(request.form.get("pulse_ms", 3000))
pulse_ms = int(request.form.get("pulse_ms", 0))
if relay_num < 1 or relay_num > 4:
flash("Relay number must be 14.", "danger")
if relay_num < 1 or relay_num > board.num_relays:
flash(f"Relay number must be 1{board.num_relays}.", "danger")
return redirect(url_for("boards.nfc_management", board_id=board_id))
if pulse_ms < 100 or pulse_ms > 60000:
flash("Absence timeout must be between 100 and 60 000 ms.", "danger")
if pulse_ms < 0 or pulse_ms > 60000:
flash("Release delay must be between 0 and 60 000 ms.", "danger")
return redirect(url_for("boards.nfc_management", board_id=board_id))
ok = driver.set_nfc_config(board, auth_uid=auth_uid, relay_num=relay_num, pulse_ms=pulse_ms)
@@ -354,9 +355,9 @@ def nfc_enroll(board_id: int):
if not current_user.is_admin():
abort(403)
board = db.get_or_404(Board, board_id)
if board.board_type != _NFC_DRIVER_ID:
if board.board_type not in _NFC_DRIVER_IDS:
abort(404)
driver = registry.get(_NFC_DRIVER_ID)
driver = registry.get(board.board_type)
if not driver:
flash("NFC driver not available.", "danger")
return redirect(url_for("boards.nfc_management", board_id=board_id))
@@ -372,7 +373,7 @@ def nfc_enroll(board_id: int):
return redirect(url_for("boards.nfc_management", board_id=board_id))
relay_num = int(request.form.get("relay_num", status.get("relay_num", 1)))
pulse_ms = int(request.form.get("pulse_ms", status.get("pulse_ms", 3000)))
pulse_ms = int(request.form.get("pulse_ms", status.get("pulse_ms", 0)))
ok = driver.set_nfc_config(board, auth_uid=uid, relay_num=relay_num, pulse_ms=pulse_ms)
if ok:
@@ -389,9 +390,9 @@ def nfc_enable(board_id: int):
if not current_user.is_admin():
abort(403)
board = db.get_or_404(Board, board_id)
if board.board_type != _NFC_DRIVER_ID:
if board.board_type not in _NFC_DRIVER_IDS:
abort(404)
driver = registry.get(_NFC_DRIVER_ID)
driver = registry.get(board.board_type)
if not driver:
flash("NFC driver not available.", "danger")
return redirect(url_for("boards.nfc_management", board_id=board_id))