godot_ant/ant/src/ant/channel/heart_rate_channel.cpp

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