package org.uoc.pac3.DroidEye;


import android.content.Context;
import android.os.Vibrator;



/**
 * @author Jordi Anducas Aregall
 *
 *Aquesta classe et permet mitjançant la vibreació
 *tenir una interactuació amb l'usuari.
 *Aquesta vibració es basa amb el codi morse.
 *Així es pot donar informació per exemple, de quantes monedes
 *ha trobat en l'escena
 *
 */
public class Vibracio {
	
	
	Context mContext;
	
	// Obtenim la instancia Vibrator t
	Vibrator vib; 
	boolean mStateHaptic=true;
	
	// En Codi Morse, "s" = "punt-punt-punt", "o" = "guió-guió-guió"
	// No es fa una pausa per separar punts / ratlles, lletres i paraules
	// Els següents nombres representen longituds milisegons
	int punt = 50;      		// Longitud d'un codi Morse "punt" en mil·lisegons
	int guio = 200;     		// Longitud d'un codi Morse "ratlla" en mil·lisegons
	int pausa_curta = 100;    	// Durada entre punts / ratlles
	int pausa_mitja = 200;   	// Durada entre lletres
	int pausa_llarga = 500;    	// Durada entre paraules
	
	
	//Pas de proces
	long[] pattern_Proces = {
	    0,  // Start immediately
	    punt, pausa_curta, punt,    // i
	    pausa_mitja,
	    guio, pausa_curta, punt,   // n
	    pausa_mitja,
	    punt, pausa_curta, punt,    // i
	    pausa_mitja,
	    guio, pausa_curta, punt, pausa_curta, guio, pausa_curta, punt, pausa_curta,   // c
	    pausa_mitja,
	    punt, pausa_curta, punt,    // i
	    pausa_llarga
	};
	
	//Pas 1
	long[] pattern_P1 = {
		    0,  // Inici automatic
		    punt, pausa_curta, guio, pausa_curta, guio, pausa_curta, guio, pausa_curta, guio, pausa_curta,   // 1
		    pausa_llarga
		};
	//Pas 2
	long[] pattern_P2 = {
		    0,  // Inici automatic
		    punt, pausa_curta, punt, pausa_curta, guio, pausa_curta, guio, pausa_curta, guio, pausa_curta,   // 1
		    pausa_llarga
		};
	
	//Finalitzat
	long[] patternC = { 0, 200, 500 };
	
	
	public Vibracio(Context mContext){
	       this.mContext = mContext;
	       vib = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
	  }
	
	
	
	public void	Inici_proces()
	{
		if(mStateHaptic)
			vib.vibrate(pattern_Proces, -1);
	}
	
	public void	Pas1()
	{
		if(mStateHaptic)
			vib.vibrate(pattern_P1, -1);
	}
	
	public void	Pas2()
	{
		if(mStateHaptic)
			vib.vibrate(pattern_P2, -1);
	}
	
	
	
	public void	cancelar()
	{
		if(mStateHaptic)
			vib.vibrate(patternC, -1);
	}
	
	public void	StateHaptic(boolean StateHaptic)
	{
		mStateHaptic=StateHaptic;
	}

}
