void ListPwmControllers()

in BusTools/PwmTestTool/main.cpp [36:80]


void ListPwmControllers ()
{
    using namespace Windows::Devices::Enumeration;
    using namespace Platform::Collections;

    std::wcout << L"Finding PwmControllers\n";

    String^ friendlyNameProperty = L"System.Devices.SchematicName";
    auto properties = ref new Vector<String^>();
    properties->Append(friendlyNameProperty);

    auto dis = concurrency::create_task(DeviceInformation::FindAllAsync(
        PwmController::GetDeviceSelector(), properties)).get();
    if (dis->Size < 1) {
        std::wcout << L"There are no pwm controllers on this system.\n";
        return;
    }

    std::wcout << L"Found " << dis->Size << L" PwmControllers\n";

    std::wcout << L"  SchematicName Id pincount minFrequency maxFrequency\n";
    for (const auto& di : dis) {
        String^ id = di->Id;
        String^ friendlyName = L"<null>";

        auto prop = di->Properties->Lookup(friendlyNameProperty);
        if (prop != nullptr) {
            friendlyName = prop->ToString();
        }

        std::wcout << L"  " << friendlyName->Data() << L" " << id->Data() << L" ";

        auto device = concurrency::create_task(PwmController::FromIdAsync(
            id)).get();

        if (!device) {
            std::wostringstream msg;
            std::wcout << L"Pwm controller " << id->Data() <<
                L" is in use.\n";
            continue;
        }

        std::wcout << device->PinCount << L" " << device->MinFrequency << L" " << device->MaxFrequency << L"\n";
    }
}