mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-10-31 04:57:25 +01:00 
			
		
		
		
	station: add debug method GetNetworks
This gets all networks but includes individual entries for each BSS.
This commit is contained in:
		
							parent
							
								
									9ae4b959a2
								
							
						
					
					
						commit
						8091d5a53d
					
				| @ -4573,6 +4573,90 @@ static struct l_dbus_message *station_property_set_autoconnect( | ||||
| 	return l_dbus_message_new_method_return(message); | ||||
| } | ||||
| 
 | ||||
| static void station_append_byte_array(struct l_dbus_message_builder *builder, | ||||
| 					const char *name, | ||||
| 					const uint8_t *bytes, size_t len) | ||||
| { | ||||
| 	size_t i; | ||||
| 
 | ||||
| 	l_dbus_message_builder_enter_dict(builder, "sv"); | ||||
| 	l_dbus_message_builder_append_basic(builder, 's', name); | ||||
| 	l_dbus_message_builder_enter_variant(builder, "ay"); | ||||
| 	l_dbus_message_builder_enter_array(builder, "y"); | ||||
| 
 | ||||
| 	for (i = 0; i < len; i++) | ||||
| 		l_dbus_message_builder_append_basic(builder, 'y', &bytes[i]); | ||||
| 
 | ||||
| 	l_dbus_message_builder_leave_array(builder); | ||||
| 	l_dbus_message_builder_leave_variant(builder); | ||||
| 	l_dbus_message_builder_leave_dict(builder); | ||||
| } | ||||
| 
 | ||||
| static void station_append_bss_list(struct l_dbus_message_builder *builder, | ||||
| 					const struct l_queue_entry *entry) | ||||
| { | ||||
| 	for (; entry; entry = entry->next) { | ||||
| 		struct scan_bss *bss = entry->data; | ||||
| 		int32_t rssi = bss->signal_strength / 100; | ||||
| 
 | ||||
| 		l_dbus_message_builder_enter_array(builder, "{sv}"); | ||||
| 
 | ||||
| 		dbus_append_dict_basic(builder, "Frequency", 'u', | ||||
| 						&bss->frequency); | ||||
| 		dbus_append_dict_basic(builder, "RSSI", 'i', | ||||
| 						&rssi); | ||||
| 		dbus_append_dict_basic(builder, "Rank", 'q', &bss->rank); | ||||
| 
 | ||||
| 		dbus_append_dict_basic(builder, "Address", 's', | ||||
| 					util_address_to_string(bss->addr)); | ||||
| 
 | ||||
| 		station_append_byte_array(builder, "MDE", bss->mde, 3); | ||||
| 
 | ||||
| 		l_dbus_message_builder_leave_array(builder); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static struct l_dbus_message *station_debug_get_networks(struct l_dbus *dbus, | ||||
| 						struct l_dbus_message *message, | ||||
| 						void *user_data) | ||||
| { | ||||
| 	struct station *station = user_data; | ||||
| 	struct l_dbus_message *reply = | ||||
| 				l_dbus_message_new_method_return(message); | ||||
| 	struct l_dbus_message_builder *builder = | ||||
| 				l_dbus_message_builder_new(reply); | ||||
| 	const struct l_queue_entry *entry; | ||||
| 
 | ||||
| 	l_dbus_message_builder_enter_array(builder, "{oaa{sv}}"); | ||||
| 
 | ||||
| 	if (l_queue_isempty(station->networks_sorted)) | ||||
| 		goto done; | ||||
| 
 | ||||
| 	for (entry = l_queue_get_entries(station->networks_sorted); entry; | ||||
| 							entry = entry->next) { | ||||
| 		const struct network *network = entry->data; | ||||
| 
 | ||||
| 		l_dbus_message_builder_enter_dict(builder, "oaa{sv}"); | ||||
| 		l_dbus_message_builder_append_basic(builder, 'o', | ||||
| 						network_get_path(network)); | ||||
| 		l_dbus_message_builder_enter_array(builder, "a{sv}"); | ||||
| 
 | ||||
| 		station_append_bss_list(builder, | ||||
| 					network_bss_list_get_entries(network)); | ||||
| 
 | ||||
| 		l_dbus_message_builder_leave_array(builder); | ||||
| 		l_dbus_message_builder_leave_dict(builder); | ||||
| 	} | ||||
| 
 | ||||
| done: | ||||
| 	l_dbus_message_builder_leave_array(builder); | ||||
| 
 | ||||
| 	l_dbus_message_builder_finalize(builder); | ||||
| 	l_dbus_message_builder_destroy(builder); | ||||
| 
 | ||||
| 	return reply; | ||||
| } | ||||
| 
 | ||||
| static void station_setup_debug_interface( | ||||
| 					struct l_dbus_interface *interface) | ||||
| { | ||||
| @ -4585,6 +4669,9 @@ static void station_setup_debug_interface( | ||||
| 	l_dbus_interface_method(interface, "Scan", 0, | ||||
| 					station_debug_scan, "", "aq", | ||||
| 					"frequencies"); | ||||
| 	l_dbus_interface_method(interface, "GetNetworks", 0, | ||||
| 				station_debug_get_networks, "a{oaa{sv}}", "", | ||||
| 				"networks"); | ||||
| 
 | ||||
| 	l_dbus_interface_signal(interface, "Event", 0, "sav", "name", "data"); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 James Prestwood
						James Prestwood