godot_ant/demo/ant_device.gd
2025-04-09 22:48:12 +02:00

92 lines
3 KiB
GDScript

extends ANTDevice
@onready var hr_label = $"../PanelContainer/hr_container/VBoxContainer/value_label"
@onready var toruqe_cnt_label = $"../PanelContainer/pwr_container/VBoxContainer/HBoxContainer2/torque_cnt_value"
@onready var power_cnt_label = $"../PanelContainer/pwr_container/VBoxContainer/HBoxContainer/power_cnt_value"
@onready var operating_time_label = $"../PanelContainer/pwr_container/VBoxContainer/operating_time_label"
@onready var voltage_label = $"../PanelContainer/pwr_container/VBoxContainer/voltage_label"
@onready var power_label = $"../PanelContainer/pwr_container/VBoxContainer/power_label"
var torque_counter: int = 0
var power_counter: int = 0
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _on_broadcast_data_received(channel: int, msg_ref: Object) -> void:
var children = get_children()
for child in children:
if child is Channel:
var chan: Channel = child as Channel
print("Dispatching broadcast data to %s" % chan.name)
chan.on_broadcast_data(msg_ref)
func _set_channel_numbers():
var i: int = 1
var children = get_children()
for child in children:
if child is Channel:
var chan: Channel = child as Channel
chan.channel = i
i += 1
func _on_channel_response_received(channel: int, msg_ref: Object) -> void:
var children = get_children()
for child in children:
if child is Channel:
var chan: Channel = child as Channel
if chan.channel == channel:
print("Dispatching channel_response data to %s" % chan.name)
chan.on_channel_response(msg_ref)
func _on_device_number_received(channel: int, device_number: int) -> void:
var children = get_children()
for child in children:
if child is Channel:
var chan: Channel = child as Channel
if chan.channel == channel:
print("Dispatching device_number data to %s" % chan.name)
chan.device_number = device_number
func _on_heart_rate_channel_heart_rate_updated(heart_rate: int) -> void:
hr_label.text = "%d" % heart_rate
func _on_connect_button_pressed() -> void:
$HeartRateChannel.start_searching()
func _on_power_channel_battery_status_received(operating_time: int, status: String, voltage: float) -> void:
var hours = int(operating_time / 3600)
var minutes = int((operating_time % 3600) / 60)
var seconds = operating_time % 60
operating_time_label.text = "%02d:%02d:%02d" % [hours, minutes, seconds]
func _on_power_channel_crank_torque_received(power: float, torque: float, cadence: int) -> void:
torque_counter += 1
toruqe_cnt_label.text = "%d" % torque_counter
func _on_power_channel_power_received(power: float, cadence: int) -> void:
power_counter += 1
power_cnt_label.text = "%d" % power_counter
power_label.text = "%d" % (int(power))
func _on_power_connect_button_pressed() -> void:
$PowerChannel.start_searching()
func _on_power_channel_search_timed_out() -> void:
$PowerChannel.start_searching()