feat: fully working face detection
ref: N25B-397
This commit is contained in:
@@ -4,6 +4,7 @@ from robot_interface.endpoints.receiver_base import ReceiverBase
|
||||
from robot_interface.state import state
|
||||
|
||||
from robot_interface.core.config import settings
|
||||
from robot_interface.endpoints.face_detector import FaceDetectionSender
|
||||
|
||||
|
||||
class MainReceiver(ReceiverBase):
|
||||
@@ -36,6 +37,29 @@ class MainReceiver(ReceiverBase):
|
||||
:rtype: dict[str, str | list[dict]]
|
||||
"""
|
||||
return {"endpoint": "ping", "data": message.get("data")}
|
||||
|
||||
@staticmethod
|
||||
def _handle_face(message):
|
||||
"""
|
||||
Handles sending face data to the cb
|
||||
Sends if it sees a face or not
|
||||
|
||||
:param message: face data.
|
||||
:type message: int
|
||||
|
||||
:return: A response to CB containing the amount of faces
|
||||
:rtype: int
|
||||
"""
|
||||
# Poll the FaceDetectionSender status
|
||||
face_sender = next(
|
||||
(s for s in state.sockets if isinstance(s, FaceDetectionSender)),
|
||||
None
|
||||
)
|
||||
if face_sender:
|
||||
return {"endpoint": "face", "data": face_sender.face_detected}
|
||||
else:
|
||||
return {"endpoint": "face", "data": False}
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _handle_port_negotiation(message):
|
||||
@@ -86,6 +110,8 @@ class MainReceiver(ReceiverBase):
|
||||
"""
|
||||
if message["endpoint"] == "ping":
|
||||
return self._handle_ping(message)
|
||||
elif message["endpoint"] == "face":
|
||||
return self._handle_face(message)
|
||||
elif message["endpoint"].startswith("negotiate"):
|
||||
return self._handle_negotiation(message)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user