@@ -162,6 +162,54 @@ bool ffDBusGetUint(FFDBusData* dbus, DBusMessageIter* iter, uint32_t* result)
162
162
return ffDBusGetUint (dbus , & subIter , result );
163
163
}
164
164
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
+
165
213
DBusMessage * ffDBusGetMethodReply (FFDBusData * dbus , const char * busName , const char * objectPath , const char * interface , const char * method , const char * arg1 , const char * arg2 )
166
214
{
167
215
DBusMessage * message = dbus -> lib -> ffdbus_message_new_method_call (busName , objectPath , interface , method );
0 commit comments