Files
huoyi_deploy/third_party/gamepad/example/example_skydroid.cpp
T
2026-10-22 09:23:54 +08:00

96 lines
3.0 KiB
C++

/**
* @file example_skydroid.cpp
* @brief
* @author DeepRobotics
* @version 1.0
* @date 2024-03-27
*
* @copyright Copyright (c) 2024 DeepRobotics
*
*/
#include <iostream>
#include "gamepad.h"
#include "skydroid_gamepad.h"
#include "gamepad_keys.h"
#include "fmt/format.h"
#include "fmt/core.h"
#include "fmt/chrono.h"
void InitialSkydroidKeys(SkydroidGamepad& is){
is.button_status_.clear();
std::string pressed = fmt::format("\x1b[32m{:^20}\x1b[0m", "pressed");
std::string released = fmt::format("\x1b[37m{:^20}\x1b[0m", "released");
is.button_status_.push_back(released);
is.button_status_.push_back(pressed);
}
/**
* @brief Overloaded output stream operator for SkydroidGamepad.
*
* Allows printing RetroidGamepad information to an output stream.
*
* @param o The output stream.
* @param is The SkydroidGamepad object.
* @return Reference to the output stream.
*/
std::ostream& operator<<(std::ostream& o, SkydroidGamepad& is){
SkydroidKeys keys = is.GetKeys();
o << "\033c";
std::string s = fmt::format(
"┌{0:─^{1}}┐\n"
"│{2: ^{1}}│\n"
"└{0:─^{1}}┘\n", "", 86 ,"Joystick Device: Skydorid(X30)");
o<<s ;
s = fmt::format(
"┌{2:─^{1}}┐┌{3:─^{1}}┐┌{4:─^{1}}┐┌{5:─^{1}}┐\n"
"│{6: ^{1}}││{7: ^{1}}││{8: ^{1}}││{9: ^{1}}│\n"
"└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘\n",
"", 20, "A", "B", "C", "D",
is.button_status_[keys.A], is.button_status_[keys.B], is.button_status_[keys.C], is.button_status_[keys.D]);
o<<s ;
s = fmt::format(
"┌{2:─^{1}}┐┌{3:─^{1}}┐┌{4:─^{1}}┐┌{5:─^{1}}┐\n"
"│{6: ^{1}}││{7: ^{1}}││{8: ^{1}}││{9: ^{1}}│\n"
"└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘\n",
"", 20, "E", "F", "Reserved", "Right",
is.button_status_[keys.E], is.button_status_[keys.F], is.button_status_[keys.reserved], is.button_status_[keys.right]);
o<<s ;
s = fmt::format(
"┌{2:─^{1}}┐┌{3:─^{1}}┐┌{4:─^{1}}┐┌{5:─^{1}}┐\n"
"│{6: ^{1}}││{7: ^{1}}││{8: ^{1}}││{9: ^{1}}│\n"
"└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘\n",
"", 20, "SW1", "SW2", "SW3", "SW4",
keys.sw1, keys.sw2, keys.sw3, keys.sw4);
o<<s ;
s = fmt::format(
"┌{2:─^{1}}┐┌{3:─^{1}}┐┌{4:─^{1}}┐┌{5:─^{1}}┐\n"
"│{6: ^{1}}││{7: ^{1}}││{8: ^{1}}││{9: ^{1}}│\n"
"└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘└{0:─^{1}}┘\n",
"", 20, "left_axis_x", "left_axis_y", "right_axis_x", "right_axis_y",
keys.left_axis_x, keys.left_axis_y, keys.right_axis_x, keys.right_axis_y);
o<<s ;
return o;
}
int main(int argc, char* argv[]) {
SkydroidGamepad rc(12121);
InitialSkydroidKeys(rc);
rc.StartDataThread();
rc.updateCallback_ = [&](int32_t count){
std::cout << rc << std::endl;
};
for(int i = 0; i < 100000; i ++){
std::this_thread::sleep_for(std::chrono::seconds(1));
}
return 0;
}