int main()

in BusTools/I2cTestTool/main.cpp [366:421]


int main (Platform::Array<Platform::String^>^ args)
{
    unsigned int optind = 1;
    if (optind >= args->Length) {
        std::wcerr << L"Missing required command line parameter SlaveAddress\n\n";
        PrintUsage(args->get(0)->Data());
        return 1;
    }

    {
        PCWSTR arg = args->get(optind)->Data();
        if (!_wcsicmp(arg, L"-h") || !_wcsicmp(arg, L"/h") ||
            !_wcsicmp(arg, L"-?") || !_wcsicmp(arg, L"/?")) {

            PrintUsage(args->get(0)->Data());
            return 0;
        }

        if (!_wcsicmp(arg, L"-l") || !_wcsicmp(arg, L"-list")) {
            ListI2cControllers();
            return 0;
        }
    }

    int slaveAddress;
    {
        String^ arg = args->get(optind++);
        wchar_t *endptr;
        slaveAddress = int(wcstoul(arg->Data(), &endptr, 0));
        if (endptr != arg->End()) {
            std::wcerr << L"Expecting integer: " << arg->Data() << L"\n";
            std::wcerr << L"Type '" << args->get(0)->Data() << " -h' for usage\n";
            return 1;
        }
    }

    String^ friendlyName;
    if (optind < args->Length) {
        friendlyName = args->get(optind++);
    }

    try {
        auto device = MakeDevice(slaveAddress, friendlyName);

        std::wcout << L"  Type 'help' for a list of commands\n";
        ShowPrompt(device);
    } catch (const wexception& ex) {
        std::wcerr << L"Error: " << ex.wwhat() << L"\n";
        return 1;
    } catch (Platform::Exception^ ex) {
        std::wcerr << L"Error: " << ex->Message->Data() << L"\n";
        return 1;
    }

    return 0;
}