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
* Acabado el mensaje, actuará el tono de llamada durante un máximo de 2 minutos
* 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
* 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
* 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
* Acabado el mensaje, actuará el tono de llamada durante un máximo de 2 minutos
* 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
* 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
* 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
* El test demantenimiento al poste refresca el estado de las alarmas. El proceso es el siguiente:
* El poste enviará SOLAMENTE UNA VEZ la alarma (Puerta abierta, batería baja)
* - 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
* - 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
* - 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
*/ 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"); } }