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
25 #include "DBusMessageHandler.h"
26 #include "DBusCommandSender.h"
27 #include "DBusConfiguration.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 if (DBUS_TYPE_UINT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
176 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getUInt DBUS handler argument is no uint16_t!"));
177 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
178 mErrorMsg="DBus argument is no uint16_t";
182 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
183 dbus_message_iter_next(&mDBusMessageIter);
188 dbus_int16_t DBusMessageHandler::getInt()
192 if (DBUS_TYPE_INT16 != dbus_message_iter_get_arg_type(&mDBusMessageIter))
194 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getInt DBUS handler argument is no int16_t!"));
195 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
196 mErrorMsg="DBus argument is no int16_t";
200 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
201 dbus_message_iter_next(&mDBusMessageIter);
206 double DBusMessageHandler::getDouble()
209 if (DBUS_TYPE_DOUBLE != dbus_message_iter_get_arg_type(&mDBusMessageIter))
211 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getDouble DBUS handler argument is no double!"));
212 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
213 mErrorMsg="DBus argument is no double";
217 dbus_message_iter_get_basic(&mDBusMessageIter, ¶m);
218 dbus_message_iter_next(&mDBusMessageIter);
223 void DBusMessageHandler::getProperty(dbus_int16_t & type, dbus_int16_t & value)
225 DBusMessageIter arrayIter;
226 if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
228 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::getProperty DBUS handler argument is no array!"));
229 mErrorName=std::string(DBUS_ERROR_INVALID_ARGS);
230 mErrorMsg="DBus argument is no array";
234 dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
235 dbus_message_iter_get_basic(&arrayIter, &type);
236 dbus_message_iter_next(&arrayIter);
237 dbus_message_iter_get_basic(&arrayIter, &value);
238 dbus_message_iter_next(&mDBusMessageIter);
242 void DBusMessageHandler::append(bool toAppend)
244 dbus_bool_t mybool=toAppend;
245 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_BOOLEAN, &mybool))
247 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
248 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
249 mErrorMsg="Cannot create reply!";
254 void DBusMessageHandler::append(double toAppend)
256 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_DOUBLE, &toAppend))
258 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
259 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
260 mErrorMsg="Cannot create reply!";
264 void DBusMessageHandler::append(char toAppend)
266 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_BYTE, &toAppend))
268 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
269 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
270 mErrorMsg="Cannot create reply!";
275 void DBusMessageHandler::append(dbus_int16_t toAppend)
277 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_INT16, &toAppend))
279 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
280 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
281 mErrorMsg="Cannot create reply!";
285 void DBusMessageHandler::append(dbus_uint16_t toAppend)
287 if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_UINT16, &toAppend))
289 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
290 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
291 mErrorMsg="Cannot create reply!";
295 void DBusMessageHandler::setDBusConnection(DBusConnection *& connection)
297 assert(connection!=NULL);
298 mDBusConnection=connection;
301 void DBusMessageHandler::append(const am::am_SinkType_s& sinkType)
303 DBusMessageIter structIter;
304 DBusMessageIter structAvailIter;
305 dbus_bool_t success=true;
306 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
307 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sinkType.sinkID);
308 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sinkType.name);
310 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &structAvailIter);
311 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availability);
312 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availabilityReason);
313 success=success && dbus_message_iter_close_container(&structIter, &structAvailIter);
315 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.volume);
316 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.muteState);
317 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sinkType.sinkClassID);
318 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
322 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
323 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
324 mErrorMsg="Cannot create reply!";
328 void DBusMessageHandler::append(const am::am_SourceType_s & sourceType)
330 DBusMessageIter structIter;
331 DBusMessageIter structAvailIter;
332 dbus_bool_t success=true;
333 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
334 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceID);
335 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sourceType.name);
337 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &structAvailIter);
338 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availability);
339 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availabilityReason);
340 success=success && dbus_message_iter_close_container(&structIter, &structAvailIter);
342 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceClassID);
343 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
347 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
348 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
349 mErrorMsg="Cannot create reply!";
353 void DBusMessageHandler::append(const am::am_MainSoundProperty_s mainSoundProperty)
355 DBusMessageIter structIter;
356 dbus_bool_t success=true;
357 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
358 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.type);
359 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.value);
360 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
364 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
365 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
366 mErrorMsg="Cannot create reply!";
370 void DBusMessageHandler::append(const am::am_Availability_s & availability)
372 DBusMessageIter structAvailIter;
373 dbus_bool_t success=true;
374 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT,NULL, &structAvailIter);
375 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availability);
376 success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availabilityReason);
377 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
381 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
382 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
383 mErrorMsg="Cannot create reply!";
387 void DBusMessageHandler::append(const am::am_SystemProperty_s & SystemProperty)
389 DBusMessageIter structIter;
390 dbus_bool_t success=true;
391 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
392 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.type);
393 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.value);
394 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
398 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
399 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
400 mErrorMsg="Cannot create reply!";
404 void DBusMessageHandler::append(const std::vector<am::am_MainConnectionType_s>& listMainConnections)
406 DBusMessageIter arrayIter;
407 DBusMessageIter structIter;
408 std::vector<am::am_MainConnectionType_s>::const_iterator listIterator=listMainConnections.begin();
409 dbus_bool_t success=true;
411 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qqqnn)", &arrayIter);
412 for(;listIterator<listMainConnections.end();++listIterator)
414 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
415 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->mainConnectionID);
416 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceID);
417 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkID);
418 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->delay);
419 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->connectionState);
420 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
422 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
426 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
427 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
428 mErrorMsg="Cannot create reply!";
432 void DBusMessageHandler::append(const std::vector<am::am_SinkType_s> & listMainSinks)
434 DBusMessageIter arrayIter;
435 DBusMessageIter structIter;
436 DBusMessageIter availIter;
437 std::vector<am::am_SinkType_s>::const_iterator listIterator=listMainSinks.begin();
438 dbus_bool_t success=true;
440 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qs(nn)nnq)", &arrayIter);
441 for(;listIterator<listMainSinks.end();++listIterator)
443 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
444 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkID);
445 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
446 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &availIter);
447 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availability);
448 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availabilityReason);
449 success=success && dbus_message_iter_close_container(&structIter, &availIter);
450 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->volume);
451 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->muteState);
452 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkClassID);
453 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
455 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
459 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
460 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
461 mErrorMsg="Cannot create reply!";
467 void DBusMessageHandler::append(const std::vector<am::am_SourceType_s> & listMainSources)
469 DBusMessageIter arrayIter;
470 DBusMessageIter structIter;
471 DBusMessageIter availIter;
472 std::vector<am::am_SourceType_s>::const_iterator listIterator=listMainSources.begin();
473 dbus_bool_t success=true;
475 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qs(nn)q)", &arrayIter);
476 for(;listIterator<listMainSources.end();++listIterator)
478 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
479 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceID);
480 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
481 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &availIter);
482 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availability);
483 success=success && dbus_message_iter_append_basic(&availIter, DBUS_TYPE_INT16, &listIterator->availability.availabilityReason);
484 success=success && dbus_message_iter_close_container(&structIter, &availIter);
485 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceClassID);
486 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
488 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
492 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
493 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
494 mErrorMsg="Cannot create reply!";
498 void DBusMessageHandler::append(const std::vector<am::am_MainSoundProperty_s> & listMainSoundProperties)
500 DBusMessageIter arrayIter;
501 DBusMessageIter structIter;
502 std::vector<am::am_MainSoundProperty_s>::const_iterator listIterator=listMainSoundProperties.begin();
503 dbus_bool_t success=true;
505 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(nn)", &arrayIter);
506 for(;listIterator<listMainSoundProperties.end();++listIterator)
508 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
509 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->type);
510 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->value);
511 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
513 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
517 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
518 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
519 mErrorMsg="Cannot create reply!";
523 void DBusMessageHandler::append(const std::vector<am::am_SourceClass_s> & listSourceClasses)
525 DBusMessageIter arrayIter;
526 DBusMessageIter structIter;
527 DBusMessageIter propIter;
528 DBusMessageIter innerIter;
529 std::vector<am::am_SourceClass_s>::const_iterator listIterator=listSourceClasses.begin();
530 dbus_bool_t success=true;
532 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qsa(nn))", &arrayIter);
533 for(;listIterator<listSourceClasses.end();++listIterator)
535 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
536 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sourceClassID);
537 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
538 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_ARRAY, "(nn)", &innerIter);
540 std::vector<am::am_ClassProperty_s>::const_iterator listInnerIterator=listIterator->listClassProperties.begin();
541 for(;listInnerIterator<listIterator->listClassProperties.end();++listInnerIterator)
543 success=success && dbus_message_iter_open_container(&innerIter, DBUS_TYPE_STRUCT, NULL, &propIter);
544 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->classProperty);
545 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->value);
546 success=success && dbus_message_iter_close_container(&innerIter, &propIter);
548 success=success && dbus_message_iter_close_container(&structIter, &innerIter);
549 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
551 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
555 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
556 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
557 mErrorMsg="Cannot create reply!";
561 void DBusMessageHandler::append(const std::vector<am::am_SinkClass_s> & listSinkClasses)
563 DBusMessageIter arrayIter;
564 DBusMessageIter structIter;
565 DBusMessageIter propIter;
566 DBusMessageIter innerIter;
567 std::vector<am::am_SinkClass_s>::const_iterator listIterator=listSinkClasses.begin();
568 dbus_bool_t success=true;
570 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(qsa(nn))", &arrayIter);
571 for(;listIterator<listSinkClasses.end();++listIterator)
573 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
574 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &listIterator->sinkClassID);
575 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &listIterator->name);
576 success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_ARRAY, "(nn)", &innerIter);
578 std::vector<am::am_ClassProperty_s>::const_iterator listInnerIterator=listIterator->listClassProperties.begin();
579 for(;listInnerIterator<listIterator->listClassProperties.end();++listInnerIterator)
581 success=success && dbus_message_iter_open_container(&innerIter, DBUS_TYPE_STRUCT, NULL, &propIter);
582 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->classProperty);
583 success=success && dbus_message_iter_append_basic(&propIter, DBUS_TYPE_INT16, &listInnerIterator->value);
584 success=success && dbus_message_iter_close_container(&innerIter, &propIter);
586 success=success && dbus_message_iter_close_container(&structIter, &innerIter);
587 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
589 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
593 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
594 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
595 mErrorMsg="Cannot create reply!";
599 void DBusMessageHandler::append(const std::vector<am::am_SystemProperty_s> & listSystemProperties)
601 DBusMessageIter arrayIter;
602 DBusMessageIter structIter;
603 std::vector<am::am_SystemProperty_s>::const_iterator listIterator=listSystemProperties.begin();
604 dbus_bool_t success=true;
606 success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(nn)", &arrayIter);
607 for(;listIterator<listSystemProperties.end();++listIterator)
609 success=success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
610 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->type);
611 success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->value);
612 success=success && dbus_message_iter_close_container(&arrayIter, &structIter);
614 success=success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
618 DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::append Cannot allocate DBus message!"));
619 mErrorName=std::string(DBUS_ERROR_NO_MEMORY);
620 mErrorMsg="Cannot create reply!";