diff --git a/src/signage/src/signage/autoware_diagnostic.py b/src/signage/src/signage/autoware_diagnostic.py new file mode 100644 index 0000000..ee8650a --- /dev/null +++ b/src/signage/src/signage/autoware_diagnostic.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020 Tier IV, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# ======================================================================== +# This code is used to public the diagnostic to autoware and let autoware +# to decide the hazard level +# ======================================================================== + +import diagnostic_updater + +class AutowareDiagnostic(): + def init_updater(self, node, name, update_function, hardware_id): + updater = diagnostic_updater.Updater(node, 1) + updater.setHardwareID(hardware_id) + updater.add(name, update_function) + return updater diff --git a/src/signage/src/signage/heartbeat.py b/src/signage/src/signage/heartbeat.py new file mode 100644 index 0000000..7c83269 --- /dev/null +++ b/src/signage/src/signage/heartbeat.py @@ -0,0 +1,20 @@ +# !/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from signage.autoware_diagnostic import AutowareDiagnostic +from diagnostic_msgs.msg import DiagnosticStatus + +class Heartbeat: + def __init__(self, node): + self._node = node + + self._diagnostic_updater = AutowareDiagnostic().init_updater( + self._node, + "/system/signage_connection : signage heartbeat", + self.handle_heartbeat_diagnostics, + "none", + ) + + def handle_heartbeat_diagnostics(self, stat): + stat.summary(DiagnosticStatus.OK, "signage is working") + return stat \ No newline at end of file diff --git a/src/signage/src/signage/signage.py b/src/signage/src/signage/signage.py index 146e666..71f427a 100644 --- a/src/signage/src/signage/signage.py +++ b/src/signage/src/signage/signage.py @@ -7,6 +7,7 @@ import rclpy from rclpy.node import Node +from signage.heartbeat import Heartbeat from signage.view_controller import ViewControllerProperty from signage.announce_controller import AnnounceControllerProperty from signage.autoware_interface import AutowareInterface @@ -25,6 +26,8 @@ def main(args=None): app = QApplication(sys.argv) engine = QQmlApplicationEngine() + heartbeat = Heartbeat(node) + autoware_interface = AutowareInterface(node) autoware_interface = AutowareInterface(node) parameter_interface = ParameterInterface(node) ros_service_interface = RosServiceInterface(node, parameter_interface)