/*
 * TAPI32 phone services
 *
 * Copyright 1999  Andreas Mohr
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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 for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#include "winbase.h"
#include "windef.h"
#include "tapi.h"
#include "wine/debug.h"

WINE_DEFAULT_DEBUG_CHANNEL(tapi);

/***********************************************************************
 *		phoneClose (TAPI32.@)
 */
DWORD WINAPI phoneClose(HPHONE hPhone)
{
    FIXME("(%04x), stub.\n", hPhone);
    return 0;
}

/***********************************************************************
 *		phoneConfigDialog (TAPI32.@)
 */
DWORD WINAPI phoneConfigDialog(DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDeviceClass)
{
    FIXME("(%08lx, %04x, %s): stub.\n", dwDeviceID, hwndOwner, lpszDeviceClass);
    return 0;
}

/***********************************************************************
 *		phoneDevSpecific (TAPI32.@)
 */
DWORD WINAPI phoneDevSpecific(HPHONE hPhone, LPVOID lpParams, DWORD dwSize)
{
    FIXME("(%04x, %p, %08ld): stub.\n", hPhone, lpParams, dwSize);
    return 1;
}

/***********************************************************************
 *		phoneGetButtonInfo (TAPI32.@)
 */
DWORD WINAPI phoneGetButtonInfo(HPHONE hPhone, DWORD dwButtonLampID,
                                LPPHONEBUTTONINFO lpButtonInfo)
{
    FIXME("(%04x, %08lx, %p): stub.\n", hPhone, dwButtonLampID, lpButtonInfo);
    return 0;
}

/***********************************************************************
 *		phoneGetData (TAPI32.@)
 */
DWORD WINAPI phoneGetData(HPHONE hPhone, DWORD dwDataID, LPVOID lpData, DWORD dwSize)
{
    FIXME("(%04x, %08ld, %p, %08ld): stub.\n", hPhone, dwDataID, lpData, dwSize);
    return 0;
}

/***********************************************************************
 *		phoneGetDevCaps (TAPI32.@)
 */
DWORD WINAPI phoneGetDevCaps(HPHONEAPP hPhoneApp, DWORD dwDeviceID,
               DWORD dwAPIVersion, DWORD dwExtVersion, LPPHONECAPS lpPhoneCaps)
{
    FIXME("(%04x, %08ld, %08lx, %08lx, %p): stub.\n", hPhoneApp, dwDeviceID, dwAPIVersion, dwExtVersion, lpPhoneCaps);
    return 0;
}

/***********************************************************************
 *		phoneGetDisplay (TAPI32.@)
 */
DWORD WINAPI phoneGetDisplay(HPHONE hPhone, LPVARSTRING lpDisplay)
{
    FIXME("(%04x, %p): stub.\n", hPhone, lpDisplay);
    return 0;
}

/***********************************************************************
 *		phoneGetGain (TAPI32.@)
 */
DWORD WINAPI phoneGetGain(HPHONE hPhone, DWORD dwHookSwitchDev, LPDWORD lpdwGain)
{
    FIXME("(%04x, %08lx, %p): stub.\n", hPhone, dwHookSwitchDev, lpdwGain);
    return 0;
}

/***********************************************************************
 *		phoneGetHookSwitch (TAPI32.@)
 */
DWORD WINAPI phoneGetHookSwitch(HPHONE hPhone, LPDWORD lpdwHookSwitchDevs)
{
   FIXME("(%04x, %p): stub.\n", hPhone, lpdwHookSwitchDevs);
   return 0;
}

/***********************************************************************
 *		phoneGetID (TAPI32.@)
 */
DWORD WINAPI phoneGetID(HPHONE hPhone, LPVARSTRING lpDeviceID,
                        LPCSTR lpszDeviceClass)
{
    FIXME("(%04x, %p, %s): stub.\n", hPhone, lpDeviceID, lpszDeviceClass);    return 0;
}

/***********************************************************************
 *		phoneGetIcon (TAPI32.@)
 */
DWORD WINAPI phoneGetIcon(DWORD dwDeviceID, LPCSTR lpszDeviceClass,
		          HICON *lphIcon)
{
    FIXME("(%08lx, %s, %p): stub.\n", dwDeviceID, lpszDeviceClass, lphIcon);
    return 0;
}

/***********************************************************************
 *		phoneGetLamp (TAPI32.@)
 */
DWORD WINAPI phoneGetLamp(HPHONE hPhone, DWORD dwButtonLampID,
		          LPDWORD lpdwLampMode)
{
    FIXME("(%04x, %08lx, %p): stub.\n", hPhone, dwButtonLampID, lpdwLampMode);
    return 0;
}

/***********************************************************************
 *		phoneGetRing (TAPI32.@)
 */
DWORD WINAPI phoneGetRing(HPHONE hPhone, LPDWORD lpdwRingMode, LPDWORD lpdwVolume)
{
    FIXME("(%04x, %p, %p): stub.\n", hPhone, lpdwRingMode, lpdwVolume);
    return 0;
}

/***********************************************************************
 *		phoneGetStatus (TAPI32.@)
 */
DWORD WINAPI phoneGetStatus(HPHONE hPhone, LPPHONESTATUS lpPhoneStatus)
{
    FIXME("(%04x, %p): stub.\n", hPhone, lpPhoneStatus);
    return 0;
}

/***********************************************************************
 *		phoneGetStatusMessages (TAPI32.@)
 */
DWORD WINAPI phoneGetStatusMessages(HPHONE hPhone, LPDWORD lpdwPhoneStates,
		          LPDWORD lpdwButtonModes, LPDWORD lpdwButtonStates)
{
    FIXME("(%04x, %p, %p, %p): stub.\n", hPhone, lpdwPhoneStates, lpdwButtonModes, lpdwButtonStates);
    return 0;
}

/***********************************************************************
 *		phoneGetVolume (TAPI32.@)
 */
DWORD WINAPI phoneGetVolume(HPHONE hPhone, DWORD dwHookSwitchDevs,
		            LPDWORD lpdwVolume)
{
    FIXME("(%04x, %08lx, %p): stub.\n", hPhone, dwHookSwitchDevs, lpdwVolume);
    return 0;
}

/***********************************************************************
 *		phoneInitialize (TAPI32.@)
 */
DWORD WINAPI phoneInitialize(LPHPHONEAPP lphPhoneApp, HINSTANCE hInstance, PHONECALLBACK lpfnCallback, LPCSTR lpszAppName, LPDWORD lpdwNumDevs)
{
    FIXME("(%p, %04x, %p, %s, %p): stub.\n", lphPhoneApp, hInstance, lpfnCallback, lpszAppName, lpdwNumDevs);
    return 0;
}

/***********************************************************************
 *		phoneNegotiateAPIVersion (TAPI32.@)
 */
DWORD WINAPI phoneNegotiateAPIVersion(HPHONEAPP hPhoneApp, DWORD dwDeviceID, DWORD dwAPILowVersion, DWORD dwAPIHighVersion, LPDWORD lpdwAPIVersion, LPPHONEEXTENSIONID lpExtensionID)
{
    FIXME("(): stub.\n");
    return 0;
}

/***********************************************************************
 *		phoneNegotiateExtVersion (TAPI32.@)
 */
DWORD WINAPI phoneNegotiateExtVersion(HPHONEAPP hPhoneApp, DWORD dwDeviceID,
		                 DWORD dwAPIVersion, DWORD dwExtLowVersion,
				 DWORD dwExtHighVersion, LPDWORD lpdwExtVersion)
{
    FIXME("(): stub.\n");
    return 0;
}

/***********************************************************************
 *		phoneOpen (TAPI32.@)
 */
DWORD WINAPI phoneOpen(HPHONEAPP hPhoneApp, DWORD dwDeviceID, LPHPHONE lphPhone, DWORD dwAPIVersion, DWORD dwExtVersion, DWORD dwCallbackInstance, DWORD dwPrivileges)
{
    FIXME("(): stub.\n");
    return 0;
}

/***********************************************************************
 *		phoneSetButtonInfo (TAPI32.@)
 */
DWORD WINAPI phoneSetButtonInfo(HPHONE hPhone, DWORD dwButtonLampID, LPPHONEBUTTONINFO lpButtonInfo)
{
    FIXME("(%04x, %08lx, %p): stub.\n", hPhone, dwButtonLampID, lpButtonInfo);
    return 0;
}

/***********************************************************************
 *		phoneSetData (TAPI32.@)
 */
DWORD WINAPI phoneSetData(HPHONE hPhone, DWORD dwDataID, LPVOID lpData, DWORD dwSize)
{
    FIXME("(%04x, %08lx, %p, %ld): stub.\n", hPhone, dwDataID, lpData, dwSize);
    return 1;
}

/***********************************************************************
 *		phoneSetDisplay (TAPI32.@)
 */
DWORD WINAPI phoneSetDisplay(HPHONE hPhone, DWORD dwRow, DWORD dwColumn, LPCSTR lpszDisplay, DWORD dwSize)
{
    FIXME("(%04x, '%s' at %ld/%ld, len %ld): stub.\n", hPhone, lpszDisplay, dwRow, dwColumn, dwSize);
    return 1;
}

/***********************************************************************
 *		phoneSetGain (TAPI32.@)
 */
DWORD WINAPI phoneSetGain(HPHONE hPhone, DWORD dwHookSwitchDev, DWORD dwGain)
{
    FIXME("(%04x, %08lx, %ld): stub.\n", hPhone, dwHookSwitchDev, dwGain);
    return 1;
}

/***********************************************************************
 *		phoneSetHookSwitch (TAPI32.@)
 */
DWORD WINAPI phoneSetHookSwitch(HPHONE hPhone, DWORD dwHookSwitchDevs, DWORD dwHookSwitchMode)
{
    FIXME("(%04x, %08lx, %08lx): stub.\n", hPhone, dwHookSwitchDevs, dwHookSwitchMode);
    return 1;
}

/***********************************************************************
 *		phoneSetLamp (TAPI32.@)
 */
DWORD WINAPI phoneSetLamp(HPHONE hPhone, DWORD dwButtonLampID, DWORD lpdwLampMode)
{
    FIXME("(%04x, %08lx, %08lx): stub.\n", hPhone, dwButtonLampID, lpdwLampMode);
    return 1;
}

/***********************************************************************
 *		phoneSetRing (TAPI32.@)
 */
DWORD WINAPI phoneSetRing(HPHONE hPhone, DWORD dwRingMode, DWORD dwVolume)
{
    FIXME("(%04x, %08lx, %08lx): stub.\n", hPhone, dwRingMode, dwVolume);
    return 1;
}

/***********************************************************************
 *		phoneSetStatusMessages (TAPI32.@)
 */
DWORD WINAPI phoneSetStatusMessages(HPHONE hPhone, DWORD dwPhoneStates, DWORD dwButtonModes, DWORD dwButtonStates)
{
    FIXME("(%04x, %08lx, %08lx, %08lx): stub.\n", hPhone, dwPhoneStates, dwButtonModes, dwButtonStates);
    return 0; /* FIXME ? */
}

/***********************************************************************
 *		phoneSetVolume (TAPI32.@)
 */
DWORD WINAPI phoneSetVolume(HPHONE hPhone, DWORD dwHookSwitchDev, DWORD dwVolume)
{
    FIXME("(%04x, %08lx, %08lx): stub.\n", hPhone, dwHookSwitchDev, dwVolume);
    return 1;
}

/***********************************************************************
 *		phoneShutdown (TAPI32.@)
 */
DWORD WINAPI phoneShutdown(HPHONEAPP hPhoneApp)
{
    FIXME("(%04x): stub.\n", hPhoneApp);
    return 0;
}
