Add dbus interface for audio streaming
[platform/core/uifw/stt.git] / server / sttd_dbus_server.c
index 5ce8a9a..9dc9c9e 100644 (file)
@@ -662,6 +662,56 @@ int sttd_dbus_server_is_recognition_type_supported(DBusConnection* conn, DBusMes
        return 0;
 }
 
+int sttd_dbus_server_get_audio_format(DBusConnection* conn, DBusMessage* msg)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       unsigned int uid = STT_INVALID_UID;
+       dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &uid, DBUS_TYPE_INVALID);
+
+       SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT get audio format");
+
+       stte_audio_type_e type = STTE_AUDIO_TYPE_PCM_S16_LE;
+       int rate = -1;
+       int num_of_channels = -1;
+       int ret = STTD_ERROR_OPERATION_FAILED;
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt get audio format : get arguments error (%s)", err.message);
+               dbus_error_free(&err);
+               ret = STTD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt get audio format : uid(%u)", uid);
+               ret = sttd_server_get_audio_format(uid, &type, &rate, &num_of_channels);
+       }
+
+       DBusMessage* reply = dbus_message_new_method_return(msg);
+       if (NULL != reply) {
+               /* Append result and language */
+               dbus_message_append_args(reply,
+                       DBUS_TYPE_INT32, &ret,
+                       DBUS_TYPE_INT32, &type,
+                       DBUS_TYPE_INT32, &rate,
+                       DBUS_TYPE_INT32, &num_of_channels,
+                       DBUS_TYPE_INVALID);
+
+               if (0 == ret) {
+                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), type(%d), rate(%d), number of channels(%d)",
+                                ret, type, rate, num_of_channels);
+               } else {
+                       SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
+               }
+
+               __sttd_dbus_server_dbus_connection_send(conn, reply);
+       } else {
+               SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
+       }
+
+       SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
+       return STTD_ERROR_NONE;
+}
+
+
 int sttd_dbus_server_set_start_sound(DBusConnection* conn, DBusMessage* msg)
 {
        DBusError err;
@@ -854,6 +904,130 @@ int sttd_dbus_server_stop(DBusConnection* conn, DBusMessage* msg)
        return 0;
 }
 
+int sttd_dbus_server_start_audio_streaming(DBusConnection* conn, DBusMessage* msg)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       unsigned int uid = STT_INVALID_UID;
+       char* language = NULL;
+       char* type = NULL;
+       char* appid = NULL;
+       int silence = 0;
+       char* credential = NULL;
+       char* audio_id = NULL;
+
+       dbus_message_get_args(msg, &err,
+                                                 DBUS_TYPE_UINT32, &uid,
+                                                 DBUS_TYPE_STRING, &language,
+                                                 DBUS_TYPE_STRING, &type,
+                                                 DBUS_TYPE_INT32, &silence,
+                                                 DBUS_TYPE_STRING, &appid,
+                                                 DBUS_TYPE_STRING, &credential,
+                                                 DBUS_TYPE_STRING, &audio_id,
+                                                 DBUS_TYPE_INVALID);
+
+       SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Start audio streaming. UID(%u)", uid);
+
+       int ret = STTD_ERROR_OPERATION_FAILED;
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt start audio streaming : get arguments error (%s)", err.message);
+               dbus_error_free(&err);
+               ret = STTD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTD,
+                        "[IN] stt start audio streaming : uid(%u), lang(%s), type(%s), silence(%d) appid(%s) credential(%s) audio_id(%s)",
+                        uid, language, type, silence, appid, credential, audio_id);
+               ret = sttd_server_start_audio_streaming(uid, language, type, silence, appid, credential, audio_id);
+       }
+
+       if (STTD_ERROR_NONE == ret) {
+               SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] stt start audio streaming");
+       } else {
+               SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
+               if (STTD_ERROR_NONE != sttdc_send_error_signal(uid, ret, "[ERROR] Fail to start")) {
+                       SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Fail to send error signal");
+               }
+       }
+
+       SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
+       return STTD_ERROR_NONE;
+}
+
+int sttd_dbus_server_send_audio_streaming(DBusConnection* conn, DBusMessage* msg)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       unsigned int uid = STT_INVALID_UID;
+       char* data = NULL;
+       size_t data_size = 0;
+
+       dbus_message_get_args(msg, &err,
+                                                 DBUS_TYPE_UINT32, &uid,
+                                                 DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE,
+                                                 &data, &data_size,
+                                                 DBUS_TYPE_INVALID);
+
+       SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Send audio streaming");
+
+       int ret = STTD_ERROR_OPERATION_FAILED;
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt send audio streaming : get arguments error (%s)", err.message);
+               dbus_error_free(&err);
+               ret = STTD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt send audio streaming : uid(%u)", uid);
+               ret = sttd_server_send_audio_streaming(uid, data, data_size);
+       }
+
+       if (STTD_ERROR_NONE == ret) {
+               SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] stt send audio streaming");
+       } else {
+               SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
+               if (STTD_ERROR_NONE != sttdc_send_error_signal(uid, ret, "[ERROR] Fail to send audio streaming")) {
+                       SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Fail to send error signal");
+               }
+       }
+
+       SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
+       return STTD_ERROR_NONE;
+}
+
+int sttd_dbus_server_stop_audio_streaming(DBusConnection* conn, DBusMessage* msg)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       unsigned int uid = STT_INVALID_UID;
+
+       dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &uid, DBUS_TYPE_INVALID);
+
+       SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Stop audio streaming");
+
+       int ret = STTD_ERROR_OPERATION_FAILED;
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt stop audio streaming : get arguments error (%s)", err.message);
+               dbus_error_free(&err);
+               ret = STTD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt stop audio streaming: uid(%u)", uid);
+               ret = sttd_server_stop_audio_streaming(uid);
+       }
+
+       if (STTD_ERROR_NONE == ret) {
+               SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] stt stop audio streaming");
+       } else {
+               SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
+               if (STTD_ERROR_NONE != sttdc_send_error_signal(uid, ret, "[ERROR] Fail to stop audio streaming")) {
+                       SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Fail to send error signal");
+               }
+       }
+
+       SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
+       return STTD_ERROR_NONE;
+}
+
 int sttd_dbus_server_cancel(DBusConnection* conn, DBusMessage* msg)
 {
        DBusError err;