summaryrefslogtreecommitdiff
path: root/PluginCommandInterfaceDbus/src
diff options
context:
space:
mode:
Diffstat (limited to 'PluginCommandInterfaceDbus/src')
-rw-r--r--PluginCommandInterfaceDbus/src/CAmCommandSenderDbus.cpp83
-rw-r--r--PluginCommandInterfaceDbus/src/CAmDbusMessageHandler.cpp83
-rw-r--r--PluginCommandInterfaceDbus/src/IAmCommandReceiverShadow.cpp85
3 files changed, 249 insertions, 2 deletions
diff --git a/PluginCommandInterfaceDbus/src/CAmCommandSenderDbus.cpp b/PluginCommandInterfaceDbus/src/CAmCommandSenderDbus.cpp
index 05b829b..3705c0d 100644
--- a/PluginCommandInterfaceDbus/src/CAmCommandSenderDbus.cpp
+++ b/PluginCommandInterfaceDbus/src/CAmCommandSenderDbus.cpp
@@ -82,14 +82,14 @@ void CAmCommandSenderDbus::setCommandReady(const uint16_t handle)
//todo:implement handle handling
log(&commandDbus, DLT_LOG_INFO, "cbCommunicationReady called");
mReady = true;
- mpIAmCommandReceive->confirmCommandReady(handle);
+ mpIAmCommandReceive->confirmCommandReady(handle,E_OK);
}
void CAmCommandSenderDbus::setCommandRundown(const uint16_t handle)
{
log(&commandDbus, DLT_LOG_INFO, "cbCommunicationRundown called");
mReady = false;
- mpIAmCommandReceive->confirmCommandRundown(handle);
+ mpIAmCommandReceive->confirmCommandRundown(handle,E_OK);
/**
* todo: implement DbusCommandSender::cbCommunicationRundown()
*/
@@ -320,3 +320,82 @@ void CAmCommandSenderDbus::getInterfaceVersion(std::string & version) const
version = CommandSendVersion;
}
+void am::CAmCommandSenderDbus::cbSinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties)
+{
+ log(&commandDbus, DLT_LOG_INFO, "cbSinkUpdated called, sinkID", sinkID);
+
+ if (mReady)
+ {
+ mCAmDbusMessageHandler.initSignal(std::string(MY_NODE), std::string("SinkUpdated"));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sinkID));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sinkClassID));
+ mCAmDbusMessageHandler.append(listMainSoundProperties);
+ mCAmDbusMessageHandler.sendMessage();
+ }
+}
+
+void am::CAmCommandSenderDbus::cbSourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties)
+{
+ log(&commandDbus, DLT_LOG_INFO, "cbSourceUpdated called, sourceID", sourceID);
+
+ if (mReady)
+ {
+ mCAmDbusMessageHandler.initSignal(std::string(MY_NODE), std::string("SinkUpdated"));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sourceID));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sourceClassID));
+ mCAmDbusMessageHandler.append(listMainSoundProperties);
+ mCAmDbusMessageHandler.sendMessage();
+ }
+}
+
+void am::CAmCommandSenderDbus::cbSinkNotification(const am_sinkID_t sinkID, const am_NotificationPayload_s notification)
+{
+ log(&commandDbus, DLT_LOG_INFO, "cbSinkNotification called, sinkID", sinkID);
+
+ if (mReady)
+ {
+ mCAmDbusMessageHandler.initSignal(std::string(MY_NODE), std::string("SinkNotification"));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sinkID));
+ mCAmDbusMessageHandler.append(notification);
+ mCAmDbusMessageHandler.sendMessage();
+ }
+}
+
+void am::CAmCommandSenderDbus::cbSourceNotification(const am_sourceID_t sourceID, const am_NotificationPayload_s notification)
+{
+ log(&commandDbus, DLT_LOG_INFO, "cbSourceNotification called, sourceID", sourceID);
+
+ if (mReady)
+ {
+ mCAmDbusMessageHandler.initSignal(std::string(MY_NODE), std::string("SourceNotification"));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sourceID));
+ mCAmDbusMessageHandler.append(notification);
+ mCAmDbusMessageHandler.sendMessage();
+ }
+}
+
+void am::CAmCommandSenderDbus::cbSinkMainNotificationConfigurationChanged(const am_sinkID_t sinkID, const am_NotificationConfiguration_s mainNotificationConfiguration)
+{
+ log(&commandDbus, DLT_LOG_INFO, "cbSinkMainNotificationConfigurationChanged called, sinkID", sinkID);
+
+ if (mReady)
+ {
+ mCAmDbusMessageHandler.initSignal(std::string(MY_NODE), std::string("SinkMainNotificationConfigurationChanged"));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sinkID));
+ mCAmDbusMessageHandler.append(mainNotificationConfiguration);
+ mCAmDbusMessageHandler.sendMessage();
+ }
+}
+
+void am::CAmCommandSenderDbus::cbSourceMainNotificationConfigurationChanged(const am_sourceID_t sourceID, const am_NotificationConfiguration_s mainNotificationConfiguration)
+{
+ log(&commandDbus, DLT_LOG_INFO, "cbSourceMainNotificationConfigurationChanged called, sourceID", sourceID);
+
+ if (mReady)
+ {
+ mCAmDbusMessageHandler.initSignal(std::string(MY_NODE), std::string("SinkMainNotificationConfigurationChanged"));
+ mCAmDbusMessageHandler.append(static_cast<dbus_uint16_t>(sourceID));
+ mCAmDbusMessageHandler.append(mainNotificationConfiguration);
+ mCAmDbusMessageHandler.sendMessage();
+ }
+}
diff --git a/PluginCommandInterfaceDbus/src/CAmDbusMessageHandler.cpp b/PluginCommandInterfaceDbus/src/CAmDbusMessageHandler.cpp
index f7cf4d6..55169b2 100644
--- a/PluginCommandInterfaceDbus/src/CAmDbusMessageHandler.cpp
+++ b/PluginCommandInterfaceDbus/src/CAmDbusMessageHandler.cpp
@@ -622,4 +622,87 @@ void CAmDbusMessageHandler::append(const std::vector<am::am_SystemProperty_s> &
mErrorMsg = "Cannot create reply!";
}
}
+
+void CAmDbusMessageHandler::getNotificationConfiguration(dbus_int16_t& notificationType, dbus_int16_t& notificationStatus, dbus_int16_t& notificationParameter)
+{
+ DBusMessageIter arrayIter;
+ if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
+ {
+ log(&commandDbus, DLT_LOG_ERROR, "DBusMessageHandler::getProperty DBUS handler argument is no array!");
+ mErrorName = std::string(DBUS_ERROR_INVALID_ARGS);
+ mErrorMsg = "DBus argument is no array";
+ }
+ else
+ {
+ dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
+ dbus_message_iter_get_basic(&arrayIter, &notificationType);
+ dbus_message_iter_next(&arrayIter);
+ dbus_message_iter_get_basic(&arrayIter, &notificationStatus);
+ dbus_message_iter_next(&arrayIter);
+ dbus_message_iter_get_basic(&arrayIter, &notificationParameter);
+ dbus_message_iter_next(&mDBusMessageIter);
+ }
+}
+
+void CAmDbusMessageHandler::append(const std::vector<am::am_NotificationConfiguration_s>& listNotifications)
+{
+ DBusMessageIter arrayIter;
+ DBusMessageIter structIter;
+ std::vector<am::am_NotificationConfiguration_s>::const_iterator listIterator = listNotifications.begin();
+ dbus_bool_t success = true;
+
+ success = success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_ARRAY, "(nnn)", &arrayIter);
+ for (; listIterator < listNotifications.end(); ++listIterator)
+ {
+ success = success && dbus_message_iter_open_container(&arrayIter, DBUS_TYPE_STRUCT, NULL, &structIter);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->notificationType);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->notificationStatus);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &listIterator->notificationParameter);
+ success = success && dbus_message_iter_close_container(&arrayIter, &structIter);
+ }
+ success = success && dbus_message_iter_close_container(&mDBusMessageIter, &arrayIter);
+
+ if (!success)
+ {
+ log(&commandDbus, DLT_LOG_ERROR, "DBusMessageHandler::append Cannot allocate DBus message!");
+ mErrorName = std::string(DBUS_ERROR_NO_MEMORY);
+ mErrorMsg = "Cannot create reply!";
+ }
+}
+
+void CAmDbusMessageHandler::append(const am::am_NotificationPayload_s& notificationPayload)
+{
+ DBusMessageIter structIter;
+ dbus_bool_t success = true;
+ success = success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &notificationPayload.notificationType);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &notificationPayload.notificationValue);
+ success = success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
+
+ if (!success)
+ {
+ log(&commandDbus, DLT_LOG_ERROR, "DBusMessageHandler::append Cannot allocate DBus message!");
+ mErrorName = std::string(DBUS_ERROR_NO_MEMORY);
+ mErrorMsg = "Cannot create reply!";
+ }
+}
+
+void CAmDbusMessageHandler::append(const am::am_NotificationConfiguration_s& notificationConfiguration)
+{
+ DBusMessageIter structIter;
+ dbus_bool_t success = true;
+ success = success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &notificationConfiguration.notificationType);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &notificationConfiguration.notificationStatus);
+ success = success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &notificationConfiguration.notificationParameter);
+ success = success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
+
+ if (!success)
+ {
+ log(&commandDbus, DLT_LOG_ERROR, "DBusMessageHandler::append Cannot allocate DBus message!");
+ mErrorName = std::string(DBUS_ERROR_NO_MEMORY);
+ mErrorMsg = "Cannot create reply!";
+ }
+}
+
}
diff --git a/PluginCommandInterfaceDbus/src/IAmCommandReceiverShadow.cpp b/PluginCommandInterfaceDbus/src/IAmCommandReceiverShadow.cpp
index 7322b99..42a669d 100644
--- a/PluginCommandInterfaceDbus/src/IAmCommandReceiverShadow.cpp
+++ b/PluginCommandInterfaceDbus/src/IAmCommandReceiverShadow.cpp
@@ -416,6 +416,87 @@ void IAmCommandReceiverShadow::setCommandReceiver(IAmCommandReceive*& receiver)
mpCAmDbusWrapper->registerCallback(&gObjectPathVTable, path, this);
}
+void am::IAmCommandReceiverShadow::getListSinkMainNotificationConfigurations(DBusConnection* conn, DBusMessage* msg)
+{
+ log(&commandDbus, DLT_LOG_INFO, "CommandReceiverShadow::getListSinkMainNotificationConfigurations called");
+
+ (void) conn;
+ assert(mpIAmCommandReceive!=NULL);
+
+ mDBUSMessageHandler.initReceive(msg);
+ am_sinkID_t sinkID = static_cast<am_sinkID_t>(mDBUSMessageHandler.getUInt());
+ std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
+ am_Error_e returnCode = mpIAmCommandReceive->getListSinkMainNotificationConfigurations(sinkID,listNotificationConfigurations);
+ mDBUSMessageHandler.initReply(msg);
+ mDBUSMessageHandler.append((dbus_int16_t) returnCode);
+ mDBUSMessageHandler.append(listNotificationConfigurations);
+ mDBUSMessageHandler.sendMessage();
+}
+
+void am::IAmCommandReceiverShadow::getListSourceMainNotificationConfigurations(DBusConnection* conn, DBusMessage* msg)
+{
+ log(&commandDbus, DLT_LOG_INFO, "CommandReceiverShadow::getListSourceMainNotificationConfigurations called");
+
+ (void) conn;
+ assert(mpIAmCommandReceive!=NULL);
+
+ mDBUSMessageHandler.initReceive(msg);
+ am_sourceID_t sourceID = static_cast<am_sourceID_t>(mDBUSMessageHandler.getUInt());
+ std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
+ am_Error_e returnCode = mpIAmCommandReceive->getListSourceMainNotificationConfigurations(sourceID,listNotificationConfigurations);
+ mDBUSMessageHandler.initReply(msg);
+ mDBUSMessageHandler.append((dbus_int16_t) returnCode);
+ mDBUSMessageHandler.append(listNotificationConfigurations);
+ mDBUSMessageHandler.sendMessage();
+
+}
+
+void am::IAmCommandReceiverShadow::setSinkMainNotificationConfiguration(DBusConnection* conn, DBusMessage* msg)
+{
+ log(&commandDbus, DLT_LOG_INFO, "CommandReceiverShadow::setSinkMainNotificationConfiguration called");
+
+ (void) conn;
+ assert(mpIAmCommandReceive!=NULL);
+
+ mDBUSMessageHandler.initReceive(msg);
+ am_sinkID_t sinkID = (am_sinkID_t) mDBUSMessageHandler.getUInt();
+ dbus_int16_t type = 0;
+ dbus_int16_t status = 0;
+ dbus_int16_t parameter = 0;
+ mDBUSMessageHandler.getNotificationConfiguration(type, status, parameter);
+ am_NotificationConfiguration_s mainNotificationConfiguration;
+ mainNotificationConfiguration.notificationType = static_cast<am_NotificationType_e> (type);
+ mainNotificationConfiguration.notificationStatus = static_cast<am_NotificationStatus_e> (status);
+ mainNotificationConfiguration.notificationParameter = static_cast<int16_t>(parameter);
+ am_Error_e returnCode = mpIAmCommandReceive->setSinkMainNotificationConfiguration(sinkID,mainNotificationConfiguration);
+ mDBUSMessageHandler.initReply(msg);
+ mDBUSMessageHandler.append((dbus_int16_t) returnCode);
+ mDBUSMessageHandler.sendMessage();
+}
+
+void am::IAmCommandReceiverShadow::setSourceMainNotificationConfiguration(DBusConnection* conn, DBusMessage* msg)
+{
+ log(&commandDbus, DLT_LOG_INFO, "CommandReceiverShadow::setSourceMainNotificationConfiguration called");
+
+ (void) conn;
+ assert(mpIAmCommandReceive!=NULL);
+
+ mDBUSMessageHandler.initReceive(msg);
+ am_sourceID_t sourceID = (am_sourceID_t) mDBUSMessageHandler.getUInt();
+ dbus_int16_t type = 0;
+ dbus_int16_t status = 0;
+ dbus_int16_t parameter = 0;
+ mDBUSMessageHandler.getNotificationConfiguration(type, status, parameter);
+ am_NotificationConfiguration_s mainNotificationConfiguration;
+ mainNotificationConfiguration.notificationType = static_cast<am_NotificationType_e> (type);
+ mainNotificationConfiguration.notificationStatus = static_cast<am_NotificationStatus_e> (status);
+ mainNotificationConfiguration.notificationParameter = static_cast<int16_t>(parameter);
+ am_Error_e returnCode = mpIAmCommandReceive->setSourceMainNotificationConfiguration(sourceID,mainNotificationConfiguration);
+ mDBUSMessageHandler.initReply(msg);
+ mDBUSMessageHandler.append((dbus_int16_t) returnCode);
+ mDBUSMessageHandler.sendMessage();
+}
+
IAmCommandReceiverShadow::functionMap_t IAmCommandReceiverShadow::createMap()
{
functionMap_t m;
@@ -436,6 +517,10 @@ IAmCommandReceiverShadow::functionMap_t IAmCommandReceiverShadow::createMap()
m["GetListSystemProperties"] = &IAmCommandReceiverShadow::getListSystemProperties;
m["GetTimingInformation"] = &IAmCommandReceiverShadow::getTimingInformation;
m["SetSystemProperty"] = &IAmCommandReceiverShadow::setSystemProperty;
+ m["getListSinkMainNotificationConfigurations"] = &IAmCommandReceiverShadow::getListSinkMainNotificationConfigurations;
+ m["getListSourceMainNotificationConfigurations"] = &IAmCommandReceiverShadow::getListSourceMainNotificationConfigurations;
+ m["setSinkMainNotificationConfiguration"] = &IAmCommandReceiverShadow::setSinkMainNotificationConfiguration;
+ m["setSourceMainNotificationConfiguration"] = & IAmCommandReceiverShadow::setSourceMainNotificationConfiguration;
return (m);
}