From db1fbe0a300e018b37f9142f448f088aeec6a7cd Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sun, 28 Jul 2024 10:54:26 +0800 Subject: [PATCH] DBus: rename ffDBusGetValue to ffDBusGetString; add ffDBusGetUint16 --- src/common/dbus.c | 26 +++++++++++++++++++---- src/common/dbus.h | 3 ++- src/detection/bluetooth/bluetooth_linux.c | 6 +++--- src/detection/media/media_linux.c | 8 +++---- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/common/dbus.c b/src/common/dbus.c index f5b40aee2..1715a5088 100644 --- a/src/common/dbus.c +++ b/src/common/dbus.c @@ -56,7 +56,7 @@ const char* ffDBusLoadData(DBusBusType busType, FFDBusData* data) return NULL; } -bool ffDBusGetValue(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result) +bool ffDBusGetString(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result) { int argType = dbus->lib->ffdbus_message_iter_get_arg_type(iter); @@ -79,7 +79,7 @@ bool ffDBusGetValue(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result) dbus->lib->ffdbus_message_iter_recurse(iter, &subIter); if(argType == DBUS_TYPE_VARIANT) - return ffDBusGetValue(dbus, &subIter, result); + return ffDBusGetString(dbus, &subIter, result); //At this point we have an array @@ -87,7 +87,7 @@ bool ffDBusGetValue(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result) while(true) { - if(ffDBusGetValue(dbus, &subIter, result)) + if(ffDBusGetString(dbus, &subIter, result)) { foundAValue = true; ffStrbufAppendS(result, ", "); @@ -140,6 +140,24 @@ bool ffDBusGetByte(FFDBusData* dbus, DBusMessageIter* iter, uint8_t* result) return ffDBusGetByte(dbus, &subIter, result); } +bool ffDBusGetUint16(FFDBusData* dbus, DBusMessageIter* iter, uint16_t* result) +{ + int argType = dbus->lib->ffdbus_message_iter_get_arg_type(iter); + + if(argType == DBUS_TYPE_UINT16) + { + dbus->lib->ffdbus_message_iter_get_basic(iter, result); + return true; + } + + if(argType != DBUS_TYPE_VARIANT) + return false; + + DBusMessageIter subIter; + dbus->lib->ffdbus_message_iter_recurse(iter, &subIter); + return ffDBusGetUint16(dbus, &subIter, result); +} + DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* method) { DBusMessage* message = dbus->lib->ffdbus_message_new_method_call(busName, objectPath, interface, method); @@ -194,7 +212,7 @@ bool ffDBusGetPropertyString(FFDBusData* dbus, const char* busName, const char* return false; } - bool ret = ffDBusGetValue(dbus, &rootIterator, result); + bool ret = ffDBusGetString(dbus, &rootIterator, result); dbus->lib->ffdbus_message_unref(reply); diff --git a/src/common/dbus.h b/src/common/dbus.h index a327884d4..bf6a5cc98 100644 --- a/src/common/dbus.h +++ b/src/common/dbus.h @@ -43,9 +43,10 @@ typedef struct FFDBusData } FFDBusData; const char* ffDBusLoadData(DBusBusType busType, FFDBusData* data); //Returns an error message or NULL on success -bool ffDBusGetValue(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result); +bool ffDBusGetString(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result); bool ffDBusGetBool(FFDBusData* dbus, DBusMessageIter* iter, bool* result); bool ffDBusGetByte(FFDBusData* dbus, DBusMessageIter* iter, uint8_t* result); +bool ffDBusGetUint16(FFDBusData* dbus, DBusMessageIter* iter, uint16_t* result); DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* method); DBusMessage* ffDBusGetProperty(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property); bool ffDBusGetPropertyString(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property, FFstrbuf* result); diff --git a/src/detection/bluetooth/bluetooth_linux.c b/src/detection/bluetooth/bluetooth_linux.c index 1ed712c90..0ac664d7a 100644 --- a/src/detection/bluetooth/bluetooth_linux.c +++ b/src/detection/bluetooth/bluetooth_linux.c @@ -61,11 +61,11 @@ static void detectBluetoothValue(FFDBusData* dbus, DBusMessageIter* iter, FFBlue dbus->lib->ffdbus_message_iter_next(&dictIter); if(ffStrEquals(deviceProperty, "Address")) - ffDBusGetValue(dbus, &dictIter, &device->address); + ffDBusGetString(dbus, &dictIter, &device->address); else if(ffStrEquals(deviceProperty, "Name")) - ffDBusGetValue(dbus, &dictIter, &device->name); + ffDBusGetString(dbus, &dictIter, &device->name); else if(ffStrEquals(deviceProperty, "Icon")) - ffDBusGetValue(dbus, &dictIter, &device->type); + ffDBusGetString(dbus, &dictIter, &device->type); else if(ffStrEquals(deviceProperty, "Percentage")) ffDBusGetByte(dbus, &dictIter, &device->battery); else if(ffStrEquals(deviceProperty, "Connected")) diff --git a/src/detection/media/media_linux.c b/src/detection/media/media_linux.c index 5dd673338..7d40927d7 100644 --- a/src/detection/media/media_linux.c +++ b/src/detection/media/media_linux.c @@ -61,13 +61,13 @@ static bool getBusProperties(FFDBusData* data, const char* busName, FFMediaResul data->lib->ffdbus_message_iter_next(&dictIterator); if(ffStrEquals(key, "xesam:title")) - ffDBusGetValue(data, &dictIterator, &result->song); + ffDBusGetString(data, &dictIterator, &result->song); else if(ffStrEquals(key, "xesam:album")) - ffDBusGetValue(data, &dictIterator, &result->album); + ffDBusGetString(data, &dictIterator, &result->album); else if(ffStrEquals(key, "xesam:artist")) - ffDBusGetValue(data, &dictIterator, &result->artist); + ffDBusGetString(data, &dictIterator, &result->artist); else if(ffStrEquals(key, "xesam:url")) - ffDBusGetValue(data, &dictIterator, &result->url); + ffDBusGetString(data, &dictIterator, &result->url); if(result->song.length > 0 && result->artist.length > 0 && result->album.length > 0 && result->url.length > 0) break;