2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using System.Runtime.InteropServices;
20 using Tizen.Uix.TtsEngine;
21 using static Tizen.Uix.TtsEngine.Engine;
24 /// Partial Interop Class
26 internal static partial class Interop
29 /// TtsEngine Interop Class
31 internal static class TtsEngine
33 internal static string LogTag = "Tizen.Uix.TtsEngine";
35 private const int ErrorTts = -0x02F10000;
39 None = Tizen.Internals.Errors.ErrorCode.None, /**< Successful */
40 OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory, /**< Out of Memory */
41 IoError = Tizen.Internals.Errors.ErrorCode.IoError, /**< I/O error */
42 InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter, /**< Invalid parameter */
43 NetworkDown = Tizen.Internals.Errors.ErrorCode.Networkdown, /**< Network down(Out of network) */
44 PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied, /**< Permission denied */
45 InvalidState = ErrorTts | 0x01, /**< Invalid state */
46 InvalidVoice = ErrorTts | 0x02, /**< Invalid voice */
47 OperationFailed = ErrorTts | 0x04, /**< Operation failed */
48 NotSupportedFeature = ErrorTts | 0x06, /**< Not supported feature of current engine */
49 NotSupported = Tizen.Internals.Errors.ErrorCode.NotSupported, /**< Device or resource busy */
52 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
53 internal delegate Error InitializeCb();
55 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
56 internal delegate Error DeinitializeCb();
58 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
59 internal delegate Error ForEachSupportedVoicesCb(SupportedVoice cb, IntPtr userData);
61 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
62 internal delegate Error IsValidVoiceCb(string language, int type, out bool isValid);
64 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
65 internal delegate Error SetPitchCb(int pitch);
67 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
68 internal delegate Error LoadVoiceCb(string langauge, int type);
70 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
71 internal delegate Error UnloadVoiceCb(string language, int type);
73 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
74 internal delegate Error CheckAppAgreedCb(string appid, out bool isAgreed);
76 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
77 internal delegate bool NeedAppCredentialCb();
79 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
80 internal delegate Error StartSynthesisCb(IntPtr language, int type, IntPtr text, int speed, IntPtr appid, IntPtr credential, IntPtr userData);
82 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
83 internal delegate Error CancelSynthesisCb();
85 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
86 internal delegate Error GetInfoCb(out IntPtr engineUuid, out IntPtr engineName, out IntPtr engineSetting, out int useNetwork);
88 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
89 internal delegate Error PrivateDataSetCb(string key, string data);
91 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
92 internal delegate Error PrivateDataRequestedCb(string key, out string data);
94 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
95 internal struct RequestCallbackStruct
98 [MarshalAs(UnmanagedType.FunctionPtr)]
99 internal GetInfoCb getInfo;
100 [MarshalAs(UnmanagedType.FunctionPtr)]
101 internal InitializeCb initialize;
102 [MarshalAs(UnmanagedType.FunctionPtr)]
103 internal DeinitializeCb deinitialize;
104 [MarshalAs(UnmanagedType.FunctionPtr)]
105 internal ForEachSupportedVoicesCb supportedVoice;
106 [MarshalAs(UnmanagedType.FunctionPtr)]
107 internal IsValidVoiceCb validVoice;
108 [MarshalAs(UnmanagedType.FunctionPtr)]
109 internal SetPitchCb pitch;
110 [MarshalAs(UnmanagedType.FunctionPtr)]
111 internal LoadVoiceCb loadVoice;
112 [MarshalAs(UnmanagedType.FunctionPtr)]
113 internal UnloadVoiceCb unloadVoice;
114 [MarshalAs(UnmanagedType.FunctionPtr)]
115 internal StartSynthesisCb startSynthesis;
116 [MarshalAs(UnmanagedType.FunctionPtr)]
117 internal CancelSynthesisCb cancelSynthesis;
118 [MarshalAs(UnmanagedType.FunctionPtr)]
119 internal CheckAppAgreedCb checkAppAgreed;
120 [MarshalAs(UnmanagedType.FunctionPtr)]
121 internal NeedAppCredentialCb needAppCredential;
124 internal sealed class CallbackStructGCHandle : IDisposable
126 internal RequestCallbackStruct CallbackStruct;
127 internal GCHandle CallbackStructHandle;
128 public CallbackStructGCHandle()
130 CallbackStruct = new RequestCallbackStruct();
131 CallbackStructHandle = GCHandle.Alloc(CallbackStruct);
134 #region IDisposable Support
135 private bool disposedValue = false;
137 void Dispose(bool disposing)
139 Tizen.Log.Info(LogTag, "In Dispose");
144 Tizen.Log.Info(LogTag, "In Dispose free called");
145 CallbackStructHandle.Free();
148 disposedValue = true;
152 public void Dispose()
159 [DllImport(Libraries.TtsEngine, EntryPoint = "ttse_main")]
160 internal static extern Error TTSEMain(int argc, string[] argv, IntPtr callback);
162 [DllImport(Libraries.TtsEngine, EntryPoint = "ttse_get_speed_range")]
163 internal static extern Error TTSEGetSpeedRange(out int min, out int normal, out int max);
165 [DllImport(Libraries.TtsEngine, EntryPoint = "ttse_get_pitch_range")]
166 internal static extern Error TTSEGetPitchRange(out int min, out int normal, out int max);
168 [DllImport(Libraries.TtsEngine, EntryPoint = "ttse_send_result")]
169 internal static extern Error TTSESendResult(ResultEvent resultEvent, IntPtr data, int dataSize, AudioType audioType, int rate, IntPtr userData);
171 [DllImport(Libraries.TtsEngine, EntryPoint = "ttse_send_error")]
172 internal static extern Error TTSESendError(Error error, string msg);
174 [DllImport(Libraries.TtsEngine, EntryPoint = "ttse_set_private_data_set_cb")]
175 internal static extern Error TTSESetPrivateDataSetCb(PrivateDataSetCb callbackFunc);
177 [DllImport(Libraries.TtsEngine, EntryPoint = "ttse_set_private_data_requested_cb")]
178 internal static extern Error TTSESetPrivateDataRequestedCb(PrivateDataRequestedCb callbackFunc);