// Path: app/src/main/java/org/simlar/helper/CallEndReason.java
// public enum CallEndReason
// {
// 	NONE,
// 	DECLINED,
// 	OFFLINE,
// 	UNSUPPORTED_MEDIA,
// 	BUSY,
// 	SERVER_CONNECTION_TIMEOUT;
// 
// 	public static CallEndReason fromReason(final Reason reason)
// 	{
// 		if (reason == null) {
// 			return NONE;
// 		}
// 
// 		switch (reason) {
// 		case Declined:
// 			return DECLINED;
// 		case NotFound:
// 			return OFFLINE;
// 		case NotImplemented:
// 		case NotAcceptable:
// 		case UnsupportedContent:
// 			return UNSUPPORTED_MEDIA;
// 		case Busy:
// 			return BUSY;
// 		case Transferred:
// 		case BadEvent:
// 		case SessionIntervalTooSmall:
// 		case None:
// 		case NoResponse:
// 		case Forbidden:
// 		case NotAnswered:
// 		case IOError:
// 		case DoNotDisturb:
// 		case Unauthorized:
// 		case NoMatch:
// 		case MovedPermanently:
// 		case Gone:
// 		case TemporarilyUnavailable:
// 		case AddressIncomplete:
// 		case BadGateway:
// 		case ServerTimeout:
// 		case Unknown:
// 		default:
// 			return NONE;
// 		}
// 	}
// 
// 	public int getDisplayMessageId()
// 	{
// 		switch (this) {
// 		case DECLINED:
// 			return R.string.call_activity_call_ended_because_declined;
// 		case OFFLINE:
// 			return R.string.call_activity_call_ended_because_user_offline;
// 		case UNSUPPORTED_MEDIA:
// 			return R.string.call_activity_call_ended_because_incompatible_media;
// 		case BUSY:
// 			return R.string.call_activity_call_ended_because_user_busy;
// 		case SERVER_CONNECTION_TIMEOUT:
// 			return R.string.call_activity_connecting_to_server_timed_out;
// 		case NONE:
// 		default:
// 			return R.string.call_activity_call_ended_normally;
// 		}
// 	}
// }
// 
// Path: app/src/main/java/org/simlar/helper/NetworkQuality.java
// public enum NetworkQuality
// {
// 	UNKNOWN,
// 	GOOD,
// 	AVERAGE,
// 	POOR,
// 	VERY_POOR,
// 	UNUSABLE;
// 
// 	public static NetworkQuality fromFloat(final float quality)
// 	{
// 		if (4 <= quality && quality <= 5) {
// 			return GOOD;
// 		}
// 
// 		if (3 <= quality && quality < 4) {
// 			return AVERAGE;
// 		}
// 
// 		if (2 <= quality && quality < 3) {
// 			return POOR;
// 		}
// 
// 		if (1 <= quality && quality < 2) {
// 			return VERY_POOR;
// 		}
// 
// 		if (0 <= quality && quality < 1) {
// 			return UNUSABLE;
// 		}
// 
// 		return UNKNOWN;
// 	}
// 
// 	public int getDescription()
// 	{
// 		switch (this) {
// 		case GOOD:
// 			return R.string.network_quality_good;
// 		case AVERAGE:
// 			return R.string.network_quality_average;
// 		case POOR:
// 			return R.string.network_quality_poor;
// 		case VERY_POOR:
// 			return R.string.network_quality_very_poor;
// 		case UNUSABLE:
// 			return R.string.network_quality_unusable;
// 		case UNKNOWN:
// 		default:
// 			return R.string.network_quality_unknown;
// 		}
// 	}
// 
// 	public boolean isKnown()
// 	{
// 		return this != UNKNOWN;
// 	}
// }
// 
// Path: app/src/main/java/org/simlar/helper/VideoState.java
// public enum VideoState
// {
// 	OFF,
// 	REQUESTING,
// 	REMOTE_REQUESTED,
// 	DENIED,
// 	ACCEPTED,
// 	INITIALIZING,
// 	PLAYING
// }
// 
// Path: app/src/main/java/org/simlar/service/AudioOutputType.java
// public enum AudioOutputType
// {
// 	PHONE(R.string.audio_output_type_phone),
// 	WIRED_HEADSET(R.string.audio_output_type_wired_headset),
// 	SPEAKER(R.string.audio_output_type_speaker),
// 	BLUETOOTH(R.string.audio_output_type_bluetooth);
// 
// 	private final int mResourceId;
// 
// 	AudioOutputType(final int resourceId)
// 	{
// 		mResourceId = resourceId;
// 	}
// 
// 	public String toDisplayName(final Context context)
// 	{
// 		return context.getString(mResourceId);
// 	}
// }


import java.util.Set;
import org.linphone.core.Call.State;
import org.linphone.core.RegistrationState;
import org.simlar.helper.CallEndReason;
import org.simlar.helper.NetworkQuality;
import org.simlar.helper.VideoState;
import org.simlar.service.AudioOutputType;
/**
 * Copyright (C) 2013 The Simlar Authors.
 *
 * This file is part of Simlar. (https://www.simlar.org)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

package org.simlar.service.liblinphone;




public interface LinphoneManagerListener
{
	void onRegistrationStateChanged(final RegistrationState state);

// Path: app/src/main/java/org/simlar/helper/CallEndReason.java
// public enum CallEndReason
// {
// 	NONE,
// 	DECLINED,
// 	OFFLINE,
// 	UNSUPPORTED_MEDIA,
// 	BUSY,
// 	SERVER_CONNECTION_TIMEOUT;
// 
// 	public static CallEndReason fromReason(final Reason reason)
// 	{
// 		if (reason == null) {
// 			return NONE;
// 		}
// 
// 		switch (reason) {
// 		case Declined:
// 			return DECLINED;
// 		case NotFound:
// 			return OFFLINE;
// 		case NotImplemented:
// 		case NotAcceptable:
// 		case UnsupportedContent:
// 			return UNSUPPORTED_MEDIA;
// 		case Busy:
// 			return BUSY;
// 		case Transferred:
// 		case BadEvent:
// 		case SessionIntervalTooSmall:
// 		case None:
// 		case NoResponse:
// 		case Forbidden:
// 		case NotAnswered:
// 		case IOError:
// 		case DoNotDisturb:
// 		case Unauthorized:
// 		case NoMatch:
// 		case MovedPermanently:
// 		case Gone:
// 		case TemporarilyUnavailable:
// 		case AddressIncomplete:
// 		case BadGateway:
// 		case ServerTimeout:
// 		case Unknown:
// 		default:
// 			return NONE;
// 		}
// 	}
// 
// 	public int getDisplayMessageId()
// 	{
// 		switch (this) {
// 		case DECLINED:
// 			return R.string.call_activity_call_ended_because_declined;
// 		case OFFLINE:
// 			return R.string.call_activity_call_ended_because_user_offline;
// 		case UNSUPPORTED_MEDIA:
// 			return R.string.call_activity_call_ended_because_incompatible_media;
// 		case BUSY:
// 			return R.string.call_activity_call_ended_because_user_busy;
// 		case SERVER_CONNECTION_TIMEOUT:
// 			return R.string.call_activity_connecting_to_server_timed_out;
// 		case NONE:
// 		default:
// 			return R.string.call_activity_call_ended_normally;
// 		}
// 	}
// }
// 
// Path: app/src/main/java/org/simlar/helper/NetworkQuality.java
// public enum NetworkQuality
// {
// 	UNKNOWN,
// 	GOOD,
// 	AVERAGE,
// 	POOR,
// 	VERY_POOR,
// 	UNUSABLE;
// 
// 	public static NetworkQuality fromFloat(final float quality)
// 	{
// 		if (4 <= quality && quality <= 5) {
// 			return GOOD;
// 		}
// 
// 		if (3 <= quality && quality < 4) {
// 			return AVERAGE;
// 		}
// 
// 		if (2 <= quality && quality < 3) {
// 			return POOR;
// 		}
// 
// 		if (1 <= quality && quality < 2) {
// 			return VERY_POOR;
// 		}
// 
// 		if (0 <= quality && quality < 1) {
// 			return UNUSABLE;
// 		}
// 
// 		return UNKNOWN;
// 	}
// 
// 	public int getDescription()
// 	{
// 		switch (this) {
// 		case GOOD:
// 			return R.string.network_quality_good;
// 		case AVERAGE:
// 			return R.string.network_quality_average;
// 		case POOR:
// 			return R.string.network_quality_poor;
// 		case VERY_POOR:
// 			return R.string.network_quality_very_poor;
// 		case UNUSABLE:
// 			return R.string.network_quality_unusable;
// 		case UNKNOWN:
// 		default:
// 			return R.string.network_quality_unknown;
// 		}
// 	}
// 
// 	public boolean isKnown()
// 	{
// 		return this != UNKNOWN;
// 	}
// }
// 
// Path: app/src/main/java/org/simlar/helper/VideoState.java
// public enum VideoState
// {
// 	OFF,
// 	REQUESTING,
// 	REMOTE_REQUESTED,
// 	DENIED,
// 	ACCEPTED,
// 	INITIALIZING,
// 	PLAYING
// }
// 
// Path: app/src/main/java/org/simlar/service/AudioOutputType.java
// public enum AudioOutputType
// {
// 	PHONE(R.string.audio_output_type_phone),
// 	WIRED_HEADSET(R.string.audio_output_type_wired_headset),
// 	SPEAKER(R.string.audio_output_type_speaker),
// 	BLUETOOTH(R.string.audio_output_type_bluetooth);
// 
// 	private final int mResourceId;
// 
// 	AudioOutputType(final int resourceId)
// 	{
// 		mResourceId = resourceId;
// 	}
// 
// 	public String toDisplayName(final Context context)
// 	{
// 		return context.getString(mResourceId);
// 	}
// }


// Path: app/src/main/java/org/simlar/service/liblinphone/LinphoneManagerListener.java
import java.util.Set;
import org.linphone.core.Call.State;
import org.linphone.core.RegistrationState;
import org.simlar.helper.CallEndReason;
import org.simlar.helper.NetworkQuality;
import org.simlar.helper.VideoState;
import org.simlar.service.AudioOutputType;

/**
 * Copyright (C) 2013 The Simlar Authors.
 *
 * This file is part of Simlar. (https://www.simlar.org)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

package org.simlar.service.liblinphone;




public interface LinphoneManagerListener
{
	void onRegistrationStateChanged(final RegistrationState state);

	void onCallStatsChanged(final NetworkQuality quality, final int callDuration, final String codec, final String iceState,