]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Report guard interval and dual carrier modulation
authorDavid Ruth <druth@chromium.org>
Wed, 19 Jul 2023 17:29:15 +0000 (17:29 +0000)
committerJouni Malinen <j@w1.fi>
Sat, 28 Oct 2023 15:35:08 +0000 (18:35 +0300)
Propagate guard interval as a double value and dual carrier modulation
as a boolean over D-Bus.

Signed-off-by: David Ruth <druth@chromium.org>
wpa_supplicant/dbus/dbus_dict_helpers.c
wpa_supplicant/dbus/dbus_dict_helpers.h
wpa_supplicant/dbus/dbus_new_helpers.c

index 0e47534504c4c1a228b13234261cc86d30432607..fdf7b1258030199afa58a8a0ca2adb291080e848 100644 (file)
@@ -361,6 +361,27 @@ dbus_bool_t wpa_dbus_dict_append_byte_array(DBusMessageIter *iter_dict,
 }
 
 
+/**
+ * Add a double entry to the dict.
+ *
+ * @param iter_dict A valid DBusMessageIter returned from
+ *    wpa_dbus_dict_open_write()
+ * @param key The key of the dict item
+ * @param value The double value
+ * @return TRUE on success, FALSE on failure
+ *
+ */
+dbus_bool_t wpa_dbus_dict_append_double(DBusMessageIter *iter_dict,
+                                       const char *key,
+                                       const double value)
+{
+       if (!key)
+               return FALSE;
+       return _wpa_dbus_add_dict_entry_basic(iter_dict, key, DBUS_TYPE_DOUBLE,
+                                             &value);
+}
+
+
 /**
  * Begin an array entry in the dict
  *
index 44685ea4afc249f19289f9a7e1e6a908d79fc085..cc9e26fa9b06197c7fec57f56ae9e685c5f9742a 100644 (file)
@@ -59,6 +59,10 @@ dbus_bool_t wpa_dbus_dict_append_byte_array(DBusMessageIter *iter_dict,
                                            const char *value,
                                            const dbus_uint32_t value_len);
 
+dbus_bool_t wpa_dbus_dict_append_double(DBusMessageIter *iter_dict,
+                                       const char *key,
+                                       const double value);
+
 /* Manual construction and addition of array elements */
 dbus_bool_t wpa_dbus_dict_begin_array(DBusMessageIter *iter_dict,
                                      const char *key, const char *type,
index 06f74ad3d211f841ff97912ad78071921bf01aa4..7fb06699186507693b4b8938c0871290d580e450 100644 (file)
@@ -1026,6 +1026,23 @@ DBusMessage * wpas_dbus_reply_new_from_error(DBusMessage *message,
 }
 
 
+static double guard_interval_to_double(enum guard_interval value)
+{
+       switch (value) {
+       case GUARD_INTERVAL_0_4:
+               return 0.4;
+       case GUARD_INTERVAL_0_8:
+               return 0.8;
+       case GUARD_INTERVAL_1_6:
+               return 1.6;
+       case GUARD_INTERVAL_3_2:
+               return 3.2;
+       default:
+               return 0;
+       }
+}
+
+
 /**
  * wpas_dbus_new_from_signal_information - Adds a wpa_signal_info
  * to a DBusMessage.
@@ -1149,6 +1166,20 @@ int wpas_dbus_new_from_signal_information(DBusMessageIter *iter,
            (si->data.avg_ack_signal &&
             !wpa_dbus_dict_append_int32(&iter_dict, "avg-ack-rssi",
                                         si->data.avg_ack_signal)) ||
+           (si->data.rx_guard_interval &&
+            !wpa_dbus_dict_append_double(
+                    &iter_dict, "rx-guard-interval",
+                    guard_interval_to_double(si->data.rx_guard_interval))) ||
+           (si->data.tx_guard_interval &&
+            !wpa_dbus_dict_append_double(
+                    &iter_dict, "tx-guard-interval",
+                    guard_interval_to_double(si->data.tx_guard_interval))) ||
+           ((si->data.flags & STA_DRV_DATA_RX_HE_DCM) &&
+            !wpa_dbus_dict_append_bool(&iter_dict, "rx-dcm",
+                                       si->data.rx_dcm)) ||
+           ((si->data.flags & STA_DRV_DATA_TX_HE_DCM) &&
+            !wpa_dbus_dict_append_bool(&iter_dict, "tx-dcm",
+                                       si->data.tx_dcm)) ||
            !wpa_dbus_dict_close_write(&variant_iter, &iter_dict) ||
            !dbus_message_iter_close_container(iter, &variant_iter))
                return -ENOMEM;