mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
fmtlib uses consteval format string processing, which makes it more efficient than std::snprintf(). snprintf()s in libuv, mpack, processstarter, and wpigui were left alone. processstarter uses stdlib only, and wpigui only depends on imgui. fmt::format_to_n() is analogous to std::format_to_n() (https://en.cppreference.com/w/cpp/utility/format/format_to_n) wpi::format_to_n_c_str() is a wrapper which adds the trailing NUL.
42 lines
1.1 KiB
C++
42 lines
1.1 KiB
C++
// Copyright (c) FIRST and other WPILib contributors.
|
|
// Open Source Software; you can modify and/or share it under the terms of
|
|
// the WPILib BSD license file in the root directory of this project.
|
|
|
|
#include "glass/hardware/AnalogGyro.h"
|
|
|
|
#include <wpi/StringExtras.h>
|
|
|
|
#include "glass/DataSource.h"
|
|
#include "glass/other/DeviceTree.h"
|
|
|
|
using namespace glass;
|
|
|
|
void glass::DisplayAnalogGyroDevice(AnalogGyroModel* model, int index) {
|
|
char name[32];
|
|
wpi::format_to_n_c_str(name, sizeof(name), "AnalogGyro[{}]", index);
|
|
|
|
if (BeginDevice(name)) {
|
|
// angle
|
|
if (auto angleData = model->GetAngleData()) {
|
|
double value = angleData->GetValue();
|
|
if (DeviceDouble("Angle", false, &value, angleData)) {
|
|
model->SetAngle(value);
|
|
}
|
|
}
|
|
|
|
// rate
|
|
if (auto rateData = model->GetRateData()) {
|
|
double value = rateData->GetValue();
|
|
if (DeviceDouble("Rate", false, &value, rateData)) {
|
|
model->SetRate(value);
|
|
}
|
|
}
|
|
EndDevice();
|
|
}
|
|
}
|
|
|
|
void glass::DisplayAnalogGyrosDevice(AnalogGyrosModel* model) {
|
|
model->ForEachAnalogGyro(
|
|
[&](AnalogGyroModel& gyro, int i) { DisplayAnalogGyroDevice(&gyro, i); });
|
|
}
|