/******************************************************************************

Copyright (c) 2000 Microsoft Corporation

Module Name:
    MPCConnection.cpp

Abstract:
    This file contains the implementation of the CMPCConnection class, which is
    used as the entry point into the Upload Library.

Revision History:
    Davide Massarenti   (Dmassare)  04/15/99
        created

******************************************************************************/

#include "stdafx.h"

CMPCConnection::CMPCConnection()
{
    __ULT_FUNC_ENTRY( "CMPCConnection::CMPCConnection" );
}


STDMETHODIMP CMPCConnection::get_Available( /*[out, retval]*/ VARIANT_BOOL *pfOnline )
{
    __ULT_FUNC_ENTRY( "CMPCConnection::get_Available" );

    DWORD dwMode = 0;


    //
    // First of all, set the values to some meaningful default.
    //
    if(pfOnline) *pfOnline = VARIANT_FALSE;

    if(InternetGetConnectedState( &dwMode, 0 ) == TRUE)
    {
        if(pfOnline) *pfOnline = VARIANT_TRUE;
    }


    __ULT_FUNC_EXIT(S_OK);
}

STDMETHODIMP CMPCConnection::get_IsAModem( /*[out, retval]*/ VARIANT_BOOL *pfModem )
{
    __ULT_FUNC_ENTRY( "CMPCConnection::get_IsAModem" );

    DWORD dwMode = 0;


    //
    // First of all, set the values to some meaningful default.
    //
    if(pfModem) *pfModem = VARIANT_TRUE;

    if(InternetGetConnectedState( &dwMode, 0 ) == TRUE)
    {
        if(pfModem)
        {
            if(dwMode & INTERNET_CONNECTION_MODEM) *pfModem = VARIANT_TRUE;
            if(dwMode & INTERNET_CONNECTION_LAN  ) *pfModem = VARIANT_FALSE;
        }
    }


    __ULT_FUNC_EXIT(S_OK);
}

STDMETHODIMP CMPCConnection::get_Bandwidth( /*[out, retval]*/ long *plBandwidth )
{
    __ULT_FUNC_ENTRY( "CMPCConnection::get_Bandwidth" );

    HRESULT hr;
    DWORD   dwMode = 0;


	__MPC_SET_ERROR_AND_EXIT(hr, E_NOTIMPL);


    //
    // First of all, set the values to some meaningful default.
    //
    if(plBandwidth) *plBandwidth = 28800;

    if(InternetGetConnectedState( &dwMode, 0 ) == TRUE)
    {
        //
        // NOTICE: under Win9X it's not possible to know the actual connection speed...
        //
        if(plBandwidth)
        {
            if(dwMode & INTERNET_CONNECTION_MODEM) *plBandwidth =  28800;
            if(dwMode & INTERNET_CONNECTION_LAN  ) *plBandwidth = 128000;
        }
    }

	hr = S_OK;


    __ULT_FUNC_CLEANUP;

    __ULT_FUNC_EXIT(hr);
}