1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
if (dbus_message_iter_init(reply, &rootIter) && //point iterator to reply message
DBUS_TYPE_ARRAY == dbus_message_iter_get_arg_type(&rootIter)) //get the type of message that iter points to
{
debug_print("Type Array.\n");
DBusMessageIter arrayElementIter;
dbus_message_iter_recurse(&rootIter, &arrayElementIter); //assign new iterator to first element of array
debug_print("-->Descending into Array (recursing).\n");
while(!adapterFound){
if (DBUS_TYPE_DICT_ENTRY == dbus_message_iter_get_arg_type(&arrayElementIter))
{
debug_print(" Type Dict_Entry.\n");
DBusMessageIter dictEntryIter;
dbus_message_iter_recurse(&arrayElementIter,&dictEntryIter ); //assign new iterator to first element of
debug_print(" -->Descending into Dict_Entry (recursing).\n");
if (DBUS_TYPE_OBJECT_PATH == dbus_message_iter_get_arg_type(&dictEntryIter))
{
debug_print(" Type DBUS_TYPE_OBJECT_PATH.\n");
dbus_message_iter_get_basic(&dictEntryIter, &adapter_path);
if(device && strstr(adapter_path,device))
{
adapterFound = TRUE;
debug_print(" Adapter %s FOUND!\n",device);
}
}
dbus_message_iter_next(&dictEntryIter);
if (DBUS_TYPE_ARRAY == dbus_message_iter_get_arg_type(&dictEntryIter))
{
debug_print(" Type DBUS_TYPE_ARRAY.\n");
DBusMessageIter innerArrayIter;
dbus_message_iter_recurse(&dictEntryIter, &innerArrayIter);
dbus_message_iter_next(&innerArrayIter);
debug_print(" -->Descending into Array (recursing).\n");
if (DBUS_TYPE_DICT_ENTRY == dbus_message_iter_get_arg_type(&innerArrayIter))
{
debug_print(" Type Dict_Entry.\n");
DBusMessageIter innerDictEntryIter;
dbus_message_iter_recurse(&innerArrayIter,&innerDictEntryIter ); //assign new iterator to first element of
debug_print(" -->Descending into Dict_Entry (recursing).\n");
if (DBUS_TYPE_STRING == dbus_message_iter_get_arg_type(&innerDictEntryIter))
{
debug_print(" Type DBUS_TYPE_STRING.\n");
char *dbusObject;
dbus_message_iter_get_basic(&innerDictEntryIter, &dbusObject);
debug_print(" This is an object of type:%s.\n", dbusObject);
if(strncmp(dbusObject,adapterString,strCmpLimit))
debug_print(" Not an adapter.\n");
else{
if(!device)
{
debug_print(" No adapter given, so using first available: %s\n", adapter_path);
adapterFound = TRUE;
}
debug_print(" Adapter.\n");
}
}
debug_print(" <--Ascending from Dict_Entry.\n");
}
debug_print(" <--Ascending from Array (top layer).\n");
//dbus_message_iter_get_basic(&dictEntryIter, &adapter_path);
}
debug_print(" <--Ascending from Dict_Entry.\n");
}
debug_print("<--Ascending from Array (top layer).\n");
if(!dbus_message_iter_has_next(&arrayElementIter)) break; //check to see if end of array
else dbus_message_iter_next(&arrayElementIter);
}//while loop end --used to traverse array
} //end if - outer arrray
else return 0;
|