33 lines
1.1 KiB
C++
33 lines
1.1 KiB
C++
#include "heart_rate_channel.hpp"
|
|
|
|
namespace ant {
|
|
|
|
void HeartRateChannel::_bind_methods() {
|
|
ADD_SIGNAL(godot::MethodInfo(
|
|
"heart_rate_updated",
|
|
godot::PropertyInfo(godot::Variant::INT, "heart_rate")));
|
|
}
|
|
|
|
HeartRateChannel::HeartRateChannel() {
|
|
channel_config_.type = ChannelTypes::kRX;
|
|
channel_config_.transmission_type = 0;
|
|
channel_config_.device_type = DeviceTypes::kHeartRate;
|
|
channel_config_.channel_period = ChannelPeriods::kHeartRate;
|
|
}
|
|
void HeartRateChannel::OnBroadcastData(godot::Ref<BroadcastPayload> data) {
|
|
if (state_ != ChannelState::kConnected) {
|
|
printf("Received first broadcast data!\n");
|
|
SetChannelState(ChannelState::kConnected);
|
|
emit_signal("connected");
|
|
msg::common::RequestChannelID msg(channel_);
|
|
SendBuffered(msg);
|
|
}
|
|
// mask out the toggle bit. only the first 7 bits declare the page number
|
|
uint8_t page_number = data->raw_data[0] & (~0x80);
|
|
bool page_toggled = data->raw_data[0] & 0x80;
|
|
uint8_t heart_rate = data->raw_data[7];
|
|
emit_signal("heart_rate_updated", heart_rate);
|
|
printf("Heart Rate: %hu\n", heart_rate);
|
|
}
|
|
|
|
} // namespace ant
|