package test.protocol.musatel;
|
|
import java.io.InputStream;
|
|
|
public class MusatelInputStream extends MusatelProtocol
|
{
|
private ControllerMusatel controller = null;
|
|
public MusatelInputStream (ControllerMusatel controller)
|
{
|
this.controller = controller;
|
}
|
|
|
public void response() throws Exception
|
{
|
manage(controller.is);
|
}
|
|
|
public void response(InputStream input) throws Exception
|
{
|
manage(input);
|
}
|
|
|
|
private void manage(InputStream input) throws Exception
|
{
|
int address = input.read();
|
int function = input.read();
|
|
switch (function)
|
{
|
case MusatelProtocol.DEM_USE: DEM_USE(input.read()); break;
|
case MusatelProtocol.DEM_SER: DEM_SER(input.read()); break;
|
case MusatelProtocol.ENV_ALA : ENV_ALA(input.read(), input.read()); break;
|
case MusatelProtocol.ACK_FON_ON : ACK_FON_ON(); break;
|
case MusatelProtocol.ACK_FON_OFF : ACK_FON_OFF(); break;
|
case MusatelProtocol.ACK_TON_ON : ACK_TON_ON(); break;
|
case MusatelProtocol.ACK_TON_OFF : ACK_TON_OFF(); break;
|
case MusatelProtocol.RES_TST_FON : RES_TST_FON(); break;
|
case MusatelProtocol.RES_TST_MAN : RES_TST_MAN(); break;
|
case MusatelProtocol.ACK_VOZ_ON : ACK_VOZ_ON(); break;
|
case MusatelProtocol.ACK_VOZ_OFF : ACK_VOZ_OFF(); break;
|
case MusatelProtocol.ACK_ADJ_VOL : ACK_ADJ_VOL(); break;
|
case MusatelProtocol.NACK : NACK(); break;
|
|
default:
|
{
|
System.out.println("< UNKNOWN;" + String.format("%02X", function));
|
break;
|
}
|
}
|
|
int CRC1 = input.read();
|
int CRC2 = input.read();
|
|
}
|
|
|
|
|
|
/**
|
* Una vez reciba el poste ACK_DEM_USE, actuará el sintetizador con el mensaje de espera en cuatro idiomas<br>
|
* Acabado el mensaje, actuará el tono de llamada durante un máximo de 2 minutos<br>
|
* Si el poste no recibe en 5 segundos el ACK_DEM_USE enviará la demanda 3 veces, en tiempos de 5
|
* segundos. Si ninguno de los intentos fuera positivo pasará a estar en estado de "Fuera de Servicio" y
|
* activará el sintetizador de voz con el mensaje oportuno durante 1 minuto<br>
|
* El poste pasa a fonía y el sintetizador se desactiva. Para mantener la fonía activa el centro de control
|
* debe enviar ORD_FON_ON periódicamente al poste en un intervalo inferior a dos minutos
|
* En caso contrario el poste pasará automáticamente a reposo<br>
|
* Se corta la fonía en el poste.El poste pasa a reposo.
|
*
|
* Poste Central
|
* ------------------------------------
|
* DEM_USE ---->
|
* <---- ACK_DEM_USE
|
* <---- ORD_FON_ON
|
* ACK_FON_ON ---->
|
* <---- ORD_FON_ON
|
* ACK_FON_ON ---->
|
* <---- ORD_FON_ON
|
* ACK_FON_ON ---->
|
* <---- ORD_FON_OFF
|
* ACK_FON_OFF ---->
|
*/
|
|
private void DEM_USE(int type) throws Exception
|
{
|
System.out.println("< DEM_USE;type=" + String.format("%02X", type));
|
controller.output.function(MusatelProtocol.ACK_DEM_USE);
|
//controller.output.callWait();
|
//Thread.sleep(5000);
|
//controller.output.openAudio("172.16.11.210", 6666);
|
}
|
|
|
|
|
|
|
/**
|
* Una vez reciba el poste ACK_DEM_SER, actuará el sintetizador con el mensaje de espera en cuatro idiomas<br>
|
* Acabado el mensaje, actuará el tono de llamada durante un máximo de 2 minutos<br>
|
* Si el poste no recibe en 5 segundos el ACK_DEM_SER enviará la demanda 3 veces, en tiempos de 5
|
* segundos. Si ninguno de los intentos fuera positivo pasará a estar en estado de "Fuera de Servicio" y
|
* activará el sintetizador de voz con el mensaje oportuno durante 1 minuto<br>
|
* El poste pasa a fonía y el sintetizador se desactiva.Para mantener la fonía activa el centro de control
|
* debe enviar ORD_FON_ON periódicamente al poste en un intervalo inferior a dos minutos<br>
|
* En caso contrario el poste pasará automáticamente a reposo<br>
|
* Se corta la fonía en el poste.El poste pasa a reposo
|
*
|
* Poste Central
|
* ------------------------------------
|
* DEM_SER ---->
|
* <---- ACK_DEM_SER
|
* <---- ORD_FON_ON
|
* ACK_FON_ON ---->
|
* <---- ORD_FON_ON
|
* ACK_FON_ON ---->
|
* <---- ORD_FON_ON
|
* ACK_FON_ON ---->
|
* <---- ORD_FON_OFF
|
* ACK_FON_OFF ---->
|
*/
|
|
private void DEM_SER(int type) throws Exception
|
{
|
System.out.println("< DEM_SER;type=" + String.format("%02X", type));
|
controller.output.function(MusatelProtocol.ACK_DEM_SER);
|
}
|
|
|
|
/**
|
*El poste envía solamente una vez cada alarma para evitar el envío repetitivo de alarmas<br>
|
* El test demantenimiento al poste refresca el estado de las alarmas. El proceso es el siguiente:<br>
|
* El poste enviará SOLAMENTE UNA VEZ la alarma (Puerta abierta, batería baja)<br>
|
* - Cuando el operador haga un test de mantenimiento al poste emisor de la alarma, se
|
* refrescará (reseteará) indicando en la respuesta el estado de la alarma en dicho momento<br>
|
* - Suponiendo que una alarma, en el momento del test, se hubiera corregido
|
* momentáneamente, en el resultado del test se reflejará como alarma OK, anulándose
|
* automáticamente de la ventana de alarmas pendientes<br>
|
* - Si después del test se volviese a producir de nuevo la misma alarma anterior, el poste volverá
|
* a enviar de nuevo SOLAMENTE UNA VEZ dicha alarma reflejándose otra vez en la ventana
|
* de alarmas pendientes<br>
|
*/
|
private void ENV_ALA(int primaryState, int secondaryState) throws Exception
|
{
|
System.out.println("< ENV_ALA;primary state=" + String.format("%02X", primaryState) + ";secondary state=" + String.format("%02X", secondaryState));
|
controller.output.function(MusatelProtocol.ACK_ENV_ALA);
|
}
|
|
|
|
private void ACK_FON_ON()
|
{
|
System.out.println("< ACK_FON_ON");
|
}
|
|
|
private void ACK_FON_OFF()
|
{
|
System.out.println("< ACK_FON_ON");
|
}
|
|
|
private void ACK_TON_ON()
|
{
|
System.out.println("< ACK_TON_ON");
|
}
|
|
|
private void ACK_TON_OFF()
|
{
|
System.out.println("< ACK_TON_ON");
|
}
|
|
|
|
private void RES_TST_FON()
|
{
|
System.out.println("< RES_TST_FON");
|
}
|
|
|
|
private void RES_TST_MAN()
|
{
|
System.out.println("< RES_TST_MAN");
|
}
|
|
|
|
|
private void ACK_VOZ_ON()
|
{
|
System.out.println("< ACK_VOZ_ON");
|
}
|
|
|
|
|
private void ACK_VOZ_OFF()
|
{
|
System.out.println("< ACK_VOZ_OFF");
|
}
|
|
|
|
|
private void ACK_ADJ_VOL()
|
{
|
System.out.println("< ACK_ADJ_VOL");
|
}
|
|
|
|
|
|
private void NACK()
|
{
|
System.out.println("< NACK");
|
}
|
|
|
|
}
|