2 * Copyright (C) 2011, BMW AG
4 * GeniviAudioMananger DbusPlugin
6 * \file DBusMessageHandler.cpp
8 * \date 20-Oct-2011 3:42:04 PM
9 * \author Christian Mueller (christian.ei.mueller@bmw.de)
12 * GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)
13 * Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de
15 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.
16 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.
17 * You should have received a copy of the GNU Lesser General Public License, version 2.1, along with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>.
18 * Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may also be applicable to programs even in cases in which the program is not a library in the technical sense.
19 * Linking AudioManager statically or dynamically with other modules is making a combined work based on AudioManager. You may license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to license your linked modules under the GNU Lesser General Public License, version 2.1, you may use the program under the following exception.
20 * As a special exception, the copyright holders of AudioManager give you permission to combine AudioManager with software programs or libraries that are released under any license unless such a combination is not permitted by the license of such a software program or library. You may copy and distribute such a system following the terms of the GNU Lesser General Public License, version 2.1, including this special exception, for AudioManager and the licenses of the other code concerned.
21 * Note that people who make modified versions of AudioManager are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, version 2.1, gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.
23 * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
26 #include "DBusMessageHandler.h"
27 #include "DBusCommandSender.h"
35 DLT_IMPORT_CONTEXT(DLT_CONTEXT)
37 DBusMessageHandler::DBusMessageHandler()
44 mReveiveMessage(NULL),
47 DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBUSMessageHandler constructed"));
50 DBusMessageHandler::~DBusMessageHandler()
52 DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBUSMessageHandler destructed"));
55 void DBusMessageHandler::initReceive(DBusMessage* msg)
59 if (!dbus_message_iter_init(msg, &mDBusMessageIter))
61 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::initReceive DBus Message has no arguments!"));
62 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
63 mErrorMsg="DBUS Message has no arguments!";
67 void DBusMessageHandler::initReply(DBusMessage* msg)
70 mDbusMessage = dbus_message_new_method_return(msg);
71 if (mDbusMessage==NULL) {
72 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::initReply Cannot allocate DBus message!"));
73 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
74 mErrorMsg="Cannot create reply!";
76 dbus_message_iter_init_append(mDbusMessage, &mDBusMessageIter);
79 void DBusMessageHandler::initSignal(std::string path, std::string signalName)
81 assert(!path.empty());
82 assert(!signalName.empty());
83 std::string completePath=std::string(DBUS_SERVICE_OBJECT_PATH)+"/"+path;
84 mDbusMessage=dbus_message_new_signal(completePath.c_str(),DBUS_SERVICE_PREFIX,signalName.c_str());
86 if (mDbusMessage == NULL)
88 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::initSignal Cannot allocate DBus message!"));
90 dbus_message_iter_init_append(mDbusMessage, &mDBusMessageIter);
93 void DBusMessageHandler::sendMessage()
95 assert(mDBusConnection!=NULL);
96 if(mReveiveMessage!=0)
98 mSerial=dbus_message_get_serial(mReveiveMessage);
104 if (!mErrorName.empty()) {
105 mDbusMessage = dbus_message_new_error(mReveiveMessage, mErrorName.c_str(), mErrorMsg.c_str());
107 if (!dbus_connection_send(mDBusConnection, mDbusMessage, &mSerial))
109 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::sendMessage cannot send message!"));
111 dbus_connection_flush(mDBusConnection);
112 dbus_message_unref(mDbusMessage);
116 char* DBusMessageHandler::getString()
120 if (DBUS_TYPE_STRING != dbus_message_iter_get_arg_type(&mDBusMessageIter))
122 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getString DBUS handler argument is no String!"));
123 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
124 mErrorMsg="DBus argument is no string";
128 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
129 dbus_message_iter_next(&mDBusMessageIter);
134 dbus_bool_t DBusMessageHandler::getBool()
136 dbus_bool_t boolparam=false;
138 if (DBUS_TYPE_BOOLEAN != dbus_message_iter_get_arg_type(&mDBusMessageIter))
140 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getBool DBUS handler argument is no bool!"));
141 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
142 mErrorMsg="DBus argument is no bool";
146 dbus_message_iter_get_basic(&mDBusMessageIter, &boolparam);
147 dbus_message_iter_next(&mDBusMessageIter);
152 char DBusMessageHandler::getByte()
156 if (DBUS_TYPE_BYTE != dbus_message_iter_get_arg_type(&mDBusMessageIter))
158 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getByte DBUS handler argument is no byte!"));
159 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
160 mErrorMsg="DBus argument is no byte";
164 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
165 dbus_message_iter_next(&mDBusMessageIter);
170 dbus_uint16_t DBusMessageHandler::getUInt()
174 #ifdef GLIB_DBUS_TYPES_TOLERANT
175 if (DBUS_TYPE_UINT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter) && DBUS_TYPE_UINT32 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
177 if (DBUS_TYPE_UINT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
180 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getUInt DBUS handler argument is no uint16_t!"));
181 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
182 mErrorMsg="DBus argument is no uint16_t";
186 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
187 dbus_message_iter_next(&mDBusMessageIter);
192 dbus_int16_t DBusMessageHandler::getInt()
196 #ifdef GLIB_DBUS_TYPES_TOLERANT
197 if (DBUS_TYPE_INT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter) && DBUS_TYPE_INT32 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
199 if (DBUS_TYPE_INT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
202 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getInt DBUS handler argument is no int16_t!"));
203 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
204 mErrorMsg="DBus argument is no int16_t";
208 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
209 dbus_message_iter_next(&mDBusMessageIter);
214 double DBusMessageHandler::getDouble()
217 if (DBUS_TYPE_DOUBLE != dbus_message_iter_get_arg_type(&mDBusMessageIter))
219 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getDouble DBUS handler argument is no double!"));
220 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
221 mErrorMsg="DBus argument is no double";
225 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
226 dbus_message_iter_next(&mDBusMessageIter);
231 void DBusMessageHandler::getProperty(dbus_int16_t & type, dbus_int16_t & value)
233 DBusMessageIter arrayIter;
234 if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
236 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getProperty DBUS handler argument is no array!"));
237 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
238 mErrorMsg="DBus argument is no array";
242 dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
243 dbus_message_iter_get_basic(&arrayIter, &type);
244 dbus_message_iter_next(&arrayIter);
245 dbus_message_iter_get_basic(&arrayIter, &value);
246 dbus_message_iter_next(&mDBusMessageIter);
250 void DBusMessageHandler::append(bool toAppend)
252 dbus_bool_t mybool=toAppend;
253 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_BOOLEAN, &mybool))
255 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
256 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
257 mErrorMsg="Cannot create reply!";
262 void DBusMessageHandler::append(double toAppend)
264 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_DOUBLE, &toAppend))
266 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
267 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
268 mErrorMsg="Cannot create reply!";
272 void DBusMessageHandler::append(char toAppend)
274 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_BYTE, &toAppend))
276 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
277 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
278 mErrorMsg="Cannot create reply!";
283 void DBusMessageHandler::append(dbus_int16_t toAppend)
285 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_INT16, &toAppend))
287 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
288 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
289 mErrorMsg="Cannot create reply!";
293 void DBusMessageHandler::append(dbus_uint16_t toAppend)
295 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_UINT16, &toAppend))
297 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
298 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
299 mErrorMsg="Cannot create reply!";
303 void DBusMessageHandler::setDBusConnection(DBusConnection *& connection)
305 assert(connection!=NULL);
306 mDBusConnection=connection;
309 void DBusMessageHandler::append(const am::am_SinkType_s& sinkType)
311 DBusMessageIter structIter;
312 DBusMessageIter structAvailIter;
313 dbus_bool_t success=true;
314 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
315 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sinkType.sinkID);
316 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sinkType.name);
318 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &structAvailIter);
319 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availability);
320 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availabilityReason);
321 success=success && dbus_message_iter_close_container(&structIter, &structAvailIter);
323 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.volume);
324 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.muteState);
325 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sinkType.sinkClassID);
326 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
330 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
331 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
332 mErrorMsg="Cannot create reply!";
336 void DBusMessageHandler::append(const am::am_SourceType_s & sourceType)
338 DBusMessageIter structIter;
339 DBusMessageIter structAvailIter;
340 dbus_bool_t success=true;
341 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
342 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceID);
343 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sourceType.name);
345 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &structAvailIter);
346 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availability);
347 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availabilityReason);
348 success=success && dbus_message_iter_close_container(&structIter, &structAvailIter);
350 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceClassID);
351 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
355 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
356 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
357 mErrorMsg="Cannot create reply!";
361 void DBusMessageHandler::append(const am::am_MainSoundProperty_s mainSoundProperty)
363 DBusMessageIter structIter;
364 dbus_bool_t success=true;
365 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
366 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.type);
367 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.value);
368 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
372 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
373 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
374 mErrorMsg="Cannot create reply!";
378 void DBusMessageHandler::append(const am::am_Availability_s & availability)
380 DBusMessageIter structAvailIter;
381 dbus_bool_t success=true;
382 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT,NULL, &structAvailIter);
383 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availability);
384 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availabilityReason);
385 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
389 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
390 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
391 mErrorMsg="Cannot create reply!";
395 void DBusMessageHandler::append(const am::am_SystemProperty_s & SystemProperty)
397 DBusMessageIter structIter;
398 dbus_bool_t success=true;
399 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
400 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.type);
401 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.value);
402 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
406 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
407 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
408 mErrorMsg="Cannot create reply!";
412 void DBusMessageHandler::append(const std::vector<am::am_MainConnectionType_s>& listMainConnections)
414 DBusMessageIter arrayIter;
415 DBusMessageIter structIter;
416 std::vector<am::am_MainConnectionType_s>::const_iterator listIterator=listMainConnections.begin();
417 dbus_bool_t success=true;
419 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qqqnn)", &arrayIter);
420 for(;listIterator<listMainConnections.end();++listIterator)
422 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
423 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->mainConnectionID);
424 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceID);
425 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkID);
426 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->delay);
427 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->connectionState);
428 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
430 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
434 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
435 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
436 mErrorMsg="Cannot create reply!";
440 void DBusMessageHandler::append(const std::vector<am::am_SinkType_s> & listMainSinks)
442 DBusMessageIter arrayIter;
443 DBusMessageIter structIter;
444 DBusMessageIter availIter;
445 std::vector<am::am_SinkType_s>::const_iterator listIterator=listMainSinks.begin();
446 dbus_bool_t success=true;
448 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qs(nn)nnq)", &arrayIter);
449 for(;listIterator<listMainSinks.end();++listIterator)
451 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
452 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkID);
453 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
454 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &availIter);
455 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availability);
456 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availabilityReason);
457 success=success && dbus_message_iter_close_container(&structIter, &availIter);
458 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->volume);
459 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->muteState);
460 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkClassID);
461 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
463 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
467 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
468 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
469 mErrorMsg="Cannot create reply!";
475 void DBusMessageHandler::append(const std::vector<am::am_SourceType_s> & listMainSources)
477 DBusMessageIter arrayIter;
478 DBusMessageIter structIter;
479 DBusMessageIter availIter;
480 std::vector<am::am_SourceType_s>::const_iterator listIterator=listMainSources.begin();
481 dbus_bool_t success=true;
483 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qs(nn)q)", &arrayIter);
484 for(;listIterator<listMainSources.end();++listIterator)
486 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
487 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceID);
488 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
489 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &availIter);
490 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availability);
491 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availabilityReason);
492 success=success && dbus_message_iter_close_container(&structIter, &availIter);
493 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceClassID);
494 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
496 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
500 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
501 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
502 mErrorMsg="Cannot create reply!";
506 void DBusMessageHandler::append(const std::vector<am::am_MainSoundProperty_s> & listMainSoundProperties)
508 DBusMessageIter arrayIter;
509 DBusMessageIter structIter;
510 std::vector<am::am_MainSoundProperty_s>::const_iterator listIterator=listMainSoundProperties.begin();
511 dbus_bool_t success=true;
513 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(nn)", &arrayIter);
514 for(;listIterator<listMainSoundProperties.end();++listIterator)
516 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
517 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->type);
518 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->value);
519 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
521 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
525 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
526 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
527 mErrorMsg="Cannot create reply!";
531 void DBusMessageHandler::append(const std::vector<am::am_SourceClass_s> & listSourceClasses)
533 DBusMessageIter arrayIter;
534 DBusMessageIter structIter;
535 DBusMessageIter propIter;
536 DBusMessageIter innerIter;
537 std::vector<am::am_SourceClass_s>::const_iterator listIterator=listSourceClasses.begin();
538 dbus_bool_t success=true;
540 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qsa(nn))", &arrayIter);
541 for(;listIterator<listSourceClasses.end();++listIterator)
543 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
544 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceClassID);
545 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
546 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_ARRAY, "(nn)", &innerIter);
548 std::vector<am::am_ClassProperty_s>::const_iterator listInnerIterator=listIterator->listClassProperties.begin();
549 for(;listInnerIterator<listIterator->listClassProperties.end();++listInnerIterator)
551 success=success && dbus_message_iter_open_container(&innerIter, DBUS_TYPE_STRUCT, NULL, &propIter);
552 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->classProperty);
553 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->value);
554 success=success && dbus_message_iter_close_container(&innerIter, &propIter);
556 success=success && dbus_message_iter_close_container(&structIter, &innerIter);
557 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
559 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
563 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
564 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
565 mErrorMsg="Cannot create reply!";
569 void DBusMessageHandler::append(const std::vector<am::am_SinkClass_s> & listSinkClasses)
571 DBusMessageIter arrayIter;
572 DBusMessageIter structIter;
573 DBusMessageIter propIter;
574 DBusMessageIter innerIter;
575 std::vector<am::am_SinkClass_s>::const_iterator listIterator=listSinkClasses.begin();
576 dbus_bool_t success=true;
578 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qsa(nn))", &arrayIter);
579 for(;listIterator<listSinkClasses.end();++listIterator)
581 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
582 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkClassID);
583 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
584 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_ARRAY, "(nn)", &innerIter);
586 std::vector<am::am_ClassProperty_s>::const_iterator listInnerIterator=listIterator->listClassProperties.begin();
587 for(;listInnerIterator<listIterator->listClassProperties.end();++listInnerIterator)
589 success=success && dbus_message_iter_open_container(&innerIter, DBUS_TYPE_STRUCT, NULL, &propIter);
590 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->classProperty);
591 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->value);
592 success=success && dbus_message_iter_close_container(&innerIter, &propIter);
594 success=success && dbus_message_iter_close_container(&structIter, &innerIter);
595 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
597 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
601 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
602 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
603 mErrorMsg="Cannot create reply!";
607 void DBusMessageHandler::append(const std::vector<am::am_SystemProperty_s> & listSystemProperties)
609 DBusMessageIter arrayIter;
610 DBusMessageIter structIter;
611 std::vector<am::am_SystemProperty_s>::const_iterator listIterator=listSystemProperties.begin();
612 dbus_bool_t success=true;
614 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(nn)", &arrayIter);
615 for(;listIterator<listSystemProperties.end();++listIterator)
617 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
618 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->type);
619 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->value);
620 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
622 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
626 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
627 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
628 mErrorMsg="Cannot create reply!";