Skip to content

Commit 8822653

Browse files
committed
DBus: adds function ffDBusGetInt
1 parent 75ff054 commit 8822653

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

src/common/dbus.c

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,54 @@ bool ffDBusGetUint(FFDBusData* dbus, DBusMessageIter* iter, uint32_t* result)
162162
return ffDBusGetUint(dbus, &subIter, result);
163163
}
164164

165+
bool ffDBusGetInt(FFDBusData* dbus, DBusMessageIter* iter, int32_t* result)
166+
{
167+
int argType = dbus->lib->ffdbus_message_iter_get_arg_type(iter);
168+
169+
if(argType == DBUS_TYPE_INT16)
170+
{
171+
int16_t value = 0;
172+
dbus->lib->ffdbus_message_iter_get_basic(iter, &value);
173+
*result = value;
174+
return true;
175+
}
176+
177+
if(argType == DBUS_TYPE_INT32)
178+
{
179+
dbus->lib->ffdbus_message_iter_get_basic(iter, result);
180+
return true;
181+
}
182+
183+
if(argType == DBUS_TYPE_BYTE)
184+
{
185+
uint8_t value = 0;
186+
dbus->lib->ffdbus_message_iter_get_basic(iter, &value);
187+
*result = value;
188+
return true;
189+
}
190+
191+
if(argType == DBUS_TYPE_UINT16)
192+
{
193+
uint16_t value = 0;
194+
dbus->lib->ffdbus_message_iter_get_basic(iter, &value);
195+
*result = (int16_t) value;
196+
return true;
197+
}
198+
199+
if(argType == DBUS_TYPE_UINT32)
200+
{
201+
dbus->lib->ffdbus_message_iter_get_basic(iter, result);
202+
return true;
203+
}
204+
205+
if(argType != DBUS_TYPE_VARIANT)
206+
return false;
207+
208+
DBusMessageIter subIter;
209+
dbus->lib->ffdbus_message_iter_recurse(iter, &subIter);
210+
return ffDBusGetInt(dbus, &subIter, result);
211+
}
212+
165213
DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* method, const char* arg1, const char* arg2)
166214
{
167215
DBusMessage* message = dbus->lib->ffdbus_message_new_method_call(busName, objectPath, interface, method);

src/common/dbus.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ bool ffDBusGetUint(FFDBusData* dbus, DBusMessageIter* iter, uint32_t* result);
3434
DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* method, const char* arg1, const char* arg2);
3535
DBusMessage* ffDBusGetProperty(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property);
3636
bool ffDBusGetPropertyString(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property, FFstrbuf* result);
37+
bool ffDBusGetInt(FFDBusData* dbus, DBusMessageIter* iter, int32_t* result);
3738
bool ffDBusGetPropertyUint(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property, uint32_t* result);
3839

3940
static inline DBusMessage* ffDBusGetAllProperties(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface)

0 commit comments

Comments
 (0)