Implement ideviceinfo in cpp

This commit is contained in:
Jackson Coxson
2025-08-14 18:07:56 -06:00
parent f152f18f8e
commit c607909beb
5 changed files with 55 additions and 2 deletions

View File

@@ -15,16 +15,19 @@ int main() {
if (!u) {
std::cerr << "failed to connect to usbmuxd";
std::cerr << e.message;
return 1;
}
auto devices = u->get_devices(e);
if (!devices) {
std::cerr << "failed to get devices from usbmuxd";
std::cerr << e.message;
return 1;
}
if (devices->empty()) {
std::cerr << "no devices connected";
std::cerr << e.message;
return 1;
}
auto& dev = (*devices)[0];
@@ -55,7 +58,14 @@ int main() {
return 1;
}
auto values = client->get_value("", "", e);
auto pf = prov->get_pairing_file(e);
if (!pf) {
std::cerr << "failed to get pairing file: " << e.message << "\n";
return 1;
}
client->start_session(*pf, e);
auto values = client->get_value(NULL, NULL, e);
if (!values) {
std::cerr << "get values failed: " << e.message << "\n";
return 1;

View File

@@ -37,6 +37,8 @@ class Provider {
Provider(const Provider&) = delete;
Provider& operator=(const Provider&) = delete;
std::optional<PairingFile> get_pairing_file(FfiError& err);
IdeviceProviderHandle* raw() const noexcept { return handle_.get(); }
static Provider adopt(IdeviceProviderHandle* h) noexcept { return Provider(h); }
IdeviceProviderHandle* release() noexcept { return handle_.release(); }

View File

@@ -49,4 +49,15 @@ std::optional<Provider> Provider::usbmuxd_new(UsbmuxdAddr&& addr,
return Provider::adopt(out);
}
std::optional<PairingFile> Provider::get_pairing_file(FfiError& err) {
IdevicePairingFile* out = nullptr;
if (IdeviceFfiError* e = idevice_provider_get_pairing_file(handle_.get(), &out)) {
err = FfiError(e);
return std::nullopt;
}
return PairingFile(out);
}
} // namespace IdeviceFFI