+static int
+mbim_home_provider_response(void *buffer, size_t len)
+{
+ struct mbim_basic_connect_home_provider_r *state = (struct mbim_basic_connect_home_provider_r *) buffer;
+ struct mbimprovider *provider;
+ char *provider_id, *provider_name;
+
+ if (len < sizeof(struct mbim_basic_connect_home_provider_r)) {
+ fprintf(stderr, "message not long enough\n");
+ return -1;
+ }
+
+ provider = &state->provider;
+ provider_id = mbim_get_string(&provider->providerid, buffer);
+ provider_name = mbim_get_string(&provider->providername, buffer);
+
+ printf(" provider_id: %s\n", provider_id);
+ printf(" provider_name: %s\n", provider_name);
+ printf(" cellularclass: %04X - %s\n", le32toh(provider->cellularclass),
+ mbim_enum_string(mbim_cellular_class_values, le32toh(provider->cellularclass)));
+ printf(" rssi: %04X\n", le32toh(provider->rssi));
+ printf(" errorrate: %04X\n", le32toh(provider->errorrate));
+
+ return 0;
+}
+