in agdk/game_controller/common/demo_scene.cpp [624:702]
void DemoScene::RenderPanel_InfoTab(const int32_t controllerIndex,
const Paddleboat_Controller_Data &controllerData,
const Paddleboat_Controller_Info &controllerInfo) {
// Render vendorId/deviceId in green if they matched with a controller map entry,
// white if using the generic controller map profile.
ImVec4 deviceColor = ((controllerInfo.controllerFlags &
PADDLEBOAT_CONTROLLER_FLAG_GENERIC_PROFILE) != 0)
? TEXTCOLOR_WHITE : TEXTCOLOR_GREEN;
ImGui::TextColored(deviceColor, "Contr. Num.: %d - VendorId: 0x%x - ProductId: 0x%x",
controllerInfo.controllerNumber, controllerInfo.vendorId,
controllerInfo.productId);
const uint32_t layout = controllerInfo.controllerFlags & PADDLEBOAT_CONTROLLER_LAYOUT_MASK;
switch (layout) {
case PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD:
ImGui::Text("Standard layout");
break;
case PADDLEBOAT_CONTROLLER_LAYOUT_SHAPES:
ImGui::Text("Shapes layout");
break;
case PADDLEBOAT_CONTROLLER_LAYOUT_REVERSE:
ImGui::Text("Reversed layout");
break;
case PADDLEBOAT_CONTROLLER_LAYOUT_ARCADE_STICK:
ImGui::Text("Arcade layout");
break;
default:
ImGui::Text("Unknown layout");
break;
}
ImGui::Text("Left Flat X/Y %f, %f\nFuzz X/Y: %f, %f",
controllerInfo.leftStickPrecision.stickFlatX,
controllerInfo.leftStickPrecision.stickFlatY,
controllerInfo.leftStickPrecision.stickFuzzX,
controllerInfo.leftStickPrecision.stickFuzzY);
ImGui::Text("Right Flat X/Y %f, %f\nFuzz X/Y: %f, %f",
controllerInfo.rightStickPrecision.stickFlatX,
controllerInfo.rightStickPrecision.stickFlatY,
controllerInfo.rightStickPrecision.stickFuzzX,
controllerInfo.rightStickPrecision.stickFuzzY);
uint64_t dataTimestampDelta = controllerData.timestamp - mPreviousControllerDataTimestamp;
// Convert to milliseconds and cast to 32 bits
int32_t dataDeltaMS = static_cast<int32_t>((dataTimestampDelta / 1000));
ImGui::Text("Controller data delta timestamp (ms): %d", dataDeltaMS);
// Convert to milliseconds and cast to 32 bits
int32_t dataMouseDeltaMS = static_cast<int32_t>((mMouseDataTimestampDelta / 1000));
ImGui::Text("Mouse data delta timestamp (ms): %d", dataMouseDeltaMS);
ImGui::Text("Last Keycode: %d ", Paddleboat_getLastKeycode());
ImGui::SameLine();
if ((controllerInfo.controllerFlags & PADDLEBOAT_CONTROLLER_FLAG_BATTERY) != 0) {
const char *batteryStatusString = "Unknown";
switch (controllerData.battery.batteryStatus) {
case PADDLEBOAT_CONTROLLER_BATTERY_UNKNOWN:
break;
case PADDLEBOAT_CONTROLLER_BATTERY_CHARGING:
batteryStatusString = "Charging";
break;
case PADDLEBOAT_CONTROLLER_BATTERY_DISCHARGING:
batteryStatusString = "Discharging";
break;
case PADDLEBOAT_CONTROLLER_BATTERY_NOT_CHARGING:
batteryStatusString = "Not charging";
break;
case PADDLEBOAT_CONTROLLER_BATTERY_FULL:
batteryStatusString = "Full";
break;
}
ImGui::Text("Battery %.1f%%, %s",
controllerData.battery.batteryLevel * 100.0f, batteryStatusString);
} else {
ImGui::Text("No battery status available");
}
}