diff options
author | George Hazan <ghazan@miranda.im> | 2020-01-16 22:03:01 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-01-16 22:03:01 +0300 |
commit | bd00314ec32d42fa09918a8ca274b0707c73ec75 (patch) | |
tree | 586b657b523ade102b92dee5323937e0a1c42d2d /plugins/ExternalAPI | |
parent | 30b859e8e95b1bb4f5e0d0f9d4d6fa40507fd788 (diff) |
VoiceService: adaptaion of the old plugin written by Pescuma for Miranda NG
Diffstat (limited to 'plugins/ExternalAPI')
-rw-r--r-- | plugins/ExternalAPI/m_voice.h | 180 | ||||
-rw-r--r-- | plugins/ExternalAPI/m_voiceservice.h | 87 |
2 files changed, 267 insertions, 0 deletions
diff --git a/plugins/ExternalAPI/m_voice.h b/plugins/ExternalAPI/m_voice.h new file mode 100644 index 0000000000..e88eaeb842 --- /dev/null +++ b/plugins/ExternalAPI/m_voice.h @@ -0,0 +1,180 @@ +/* +Copyright (C) 2006-2009 Ricardo Pescuma Domenecci + +This is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __M_VOICE_H__ +# define __M_VOICE_H__ + + +#define EVENTTYPE_VOICE_CALL 8739 + + +#define VOICE_CAPS_VOICE (1<<0) // Voice is supported for this protocol. You need to set this one. +#define VOICE_CAPS_CALL_CONTACT (1<<1) // Set if a call can be made to a hContact (PS_VOICE_CALL_CONTACT_VALID is used to validate the string) +#define VOICE_CAPS_CALL_STRING (1<<3) // Set if a call can be made to some string (PS_VOICE_CALL_STRING_VALID is used to validate the string) +/* +Request to the protocol capabilities relative to voice. + +wParam: 0 +lParam: 0 +return: VOICE_CAPS_* +*/ +#define PS_VOICE_CAPS "/Voice/Caps" + + + +#define VOICE_SECURE 0x00000001 +#define VOICE_UNICODE 0x80000000 + +#ifdef UNICODE +# define VOICE_TCHAR VOICE_UNICODE +#else +# define VOICE_TCHAR 0 +#endif + +#define VOICE_STATE_TALKING 0 +#define VOICE_STATE_RINGING 1 +#define VOICE_STATE_CALLING 2 +#define VOICE_STATE_ON_HOLD 3 +#define VOICE_STATE_ENDED 4 +#define VOICE_STATE_BUSY 5 + +typedef struct { + int cbSize; // Struct size + const char *moduleName; // The name of the module (the same as VOICE_MODULE.name or the protocol szModule) + char *id; // Protocol especific ID for this call + int flags; // VOICE_UNICODE to say the string is unicode or 0. VOICE_SECURE to say this is a + // encrypted call + + MCONTACT hContact; // Contact associated with the call (can be NULL) + + union { // Number to call (can be NULL) + const TCHAR *ptszNumber;// Or the contact or the number must be != NULL + const char *pszNumber; // If both are != NULL the call will be made to the number + const WCHAR *pwszNumber;// and will be associated with the contact + }; // This fields are only needed in first notification for a call id + + union { // Name of the caller. This makes sense only on incoming calls, + const TCHAR *ptszName; // where no contact is associated and the caller has a name and a number. + const char *pszName; + const WCHAR *pwszName; + }; + + + int state; // VOICE_STATE_* + +} VOICE_CALL; + + +/* +Notifies that a voice call changed state + +wParam: const VOICE_CALL * +lParam: ignored +return: 0 on success +*/ +#define PE_VOICE_CALL_STATE "/Voice/State" + + + +/* +Request the protocol to make a voice call + +wParam: (HANDLE) hContact +lParam: (const TCHAR *) number +return: 0 on success +Or the contact or the number must be != NULL. If both are != NULL the call will be +made to the number and will be associated with the contact. +*/ +#define PS_VOICE_CALL "/Voice/Call" + +/* +Service called to make the protocol answer a call or restore a hold call. +It is an async call. If the call was answered, the PE_VOICE_CALL_STATE +notification will be fired. + +wParam: (const char *) id +lParam: ignored +return: 0 on success +*/ +#define PS_VOICE_ANSWERCALL "/Voice/AnswerCall" + +/* +Service called to make the protocol answer a call. This can be called if the +call is ringing or has started. If called any other time it should be ignored. +It is an async call. If the call was droped, the PE_VOICE_CALL_STATE +notification will be fired. + +wParam: (const char *) id +lParam: ignored +return: 0 on success +*/ +#define PS_VOICE_DROPCALL "/Voice/DropCall" + +/* +Service called to make the protocol hold a call. This means that the call should not +be droped, but it should be muted and put in a hold, to allow other call to be answered. +If the protocol can't hold a cal, it should be droped. + +This can be called if the call has started. If called any other time it should be ignored. +It is an async call. If the call was droped, the PE_VOICE_CALL_STATE +notification will be fired. + +wParam: (const char *) id +lParam: ignored +return: 0 on success +*/ +#define PS_VOICE_HOLDCALL "/Voice/HoldCall" + +/* +Send a DTMF (one digit text) to a talking call. + +wParam: (const char *) id +lParam: (TCHAR) dtmf +return: 0 on success +*/ +#define PS_VOICE_SEND_DTMF "/Voice/SendDTMF" + +/* +Used if protocol support VOICE_CALL_STRING. The call string is passed as +wParam and the proto should validate it. If this service does not exist all numbers can be called. + +wParam: (const TCHAR *) call string +lParam: ignored +return: 0 if wrong, 1 if correct +*/ +#define PS_VOICE_CALL_STRING_VALID "/Voice/CallStringValid" + +/* +Used if protocol support VOICE_CALL_CONTACT. +The hContact is passed as wParam and the proto should tell if this contact can be +called. If this service does not exist all contacts can be called (or, if it is a protocol, +all contacts from the protocol can be called). + +wParam: (HANDLE) hContact +lParam: (BOOL) TRUE if it is a test for 'can call now?', FALSE if is a test for 'will be possible to call someday?' +return: 0 if can't be called, 1 if can +*/ +#define PS_VOICE_CALL_CONTACT_VALID "/Voice/CallContactValid" + + + + + +#endif // __M_VOICE_H__ diff --git a/plugins/ExternalAPI/m_voiceservice.h b/plugins/ExternalAPI/m_voiceservice.h new file mode 100644 index 0000000000..c70dc8ea3e --- /dev/null +++ b/plugins/ExternalAPI/m_voiceservice.h @@ -0,0 +1,87 @@ +/* +Copyright (C) 2007-2009 Ricardo Pescuma Domenecci + +This is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __M_VOICESERVICE_H__ +# define __M_VOICESERVICE_H__ + + +/* +This services are a mirror of the services/notifications in m_voice.h, +with the difference that that ones are to be used by protocols, and this ones +are to be used by plugins that can make calls to contacts in multiple protocols. + +To get the devices for input/output and some options, query the db directly: + VoiceService/EchoCancelation BYTE default: TRUE + VoiceService/MicBoost BYTE default: TRUE + VoiceService/Input TString default: windows default + VoiceService/Output TString default: windows default +*/ + + +struct VOICE_MODULE +{ + int cbSize; // sizeof(VOICE_MODULE) + TCHAR *description; // The description of the voice provider. This is the name that will be shown + // to the user + char *name; // The internal name of the voice provider. All PS_* serivces + // defined in m_voide.h need to be created based in this name. For example, + // PS_VOICE_CALL (/Voice/Call) need to be created as <name>/Voice/Call + char *icon; // Icon to identify provider (from icolib) + int flags; // or of VOICE_CAPS_*. You don't need to send VOICE_CAPS_VOICE. +}; +/* +Register a new plugin that can make/receive voice calls (a voice provider). + +wParam: const VOICE_MODULE * +lParam: ignored +return: 0 on success +*/ +#define MS_VOICESERVICE_REGISTER "VoiceService/Register" + +/* +Unregister a plugin that can make/receive voice calls (a voice provider). + +wParam: (const char *) Provider name +lParam: ignored +return: 0 on success +*/ +#define MS_VOICESERVICE_UNREGISTER "VoiceService/Unregister" + +/* +Request a voice call to hContact. + +wParam: (HANDLE) hContact +lParam: ignored +return: the number of option calls for a contact. If > 0, it can be called +*/ +#define MS_VOICESERVICE_CAN_CALL "VoiceService/CanCall" + +/* +Request a voice call to hContact. + +wParam: (HANDLE) hContact +lParam: (char *) Voice provider or NULL to use any provider avaiable +return: 0 on success +*/ +#define MS_VOICESERVICE_CALL "VoiceService/Call" + + + +#endif // __M_VOICESERVICE_H__ |