/* * Xfp.java * * Created on 20 de febrero de 2007, 9:08 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package com.wonesys.emsModule.driver; import java.util.ArrayList; import java.util.List; /** * * @author mbeltran */ public class Xfp extends Driver { public List getListTipos(String parameters) { ArrayList<String> list = new ArrayList<String>(); String[] strList = parameters.split("#"); String str = strList[3]; try { if (str.startsWith("0x01")) { // SFP presense list.add("XFP_PRESENCE"); } /* * Nota: Ya que en un mismo trap pueden haber varias alarmas, hay que mirar cada uno de los bits (aprox 64, 8 bytes) * * Al determinar el tipo de alarma esta se aƱade al vector, de forma que retornamos un vector con una, ninguna o varias alarmas. */ if (str.startsWith("0x02")) { // SFPAlarm String[] params = str.split(":"); // hay que determinar el tipo de alarma segun el bit de los params[2] y [3] // Por cada tipo de alarma activa, insertar un tipo de alarma al vector int b = Integer.decode("0x" + params[2]); // address 80 if ((byte) (b & 0x80) > 0) { list.add("XFP_TEMP_HIGH_A"); } if ((byte) (b & 0x40) > 0) { list.add("XFP_TEMP_LOW_A"); } /* * if ((b & 0x20) > 0) { list.add("SFP_VOLT_HIGH_A); vector.add(tipoAlarma); } * * if ((b & 0x10) > 0) { list.add("SFP_VOLT_LOW_A); vector.add(tipoAlarma); } */ if ((byte) (b & 0x08) > 0) { list.add("XFP_BIAS_HIGH_A"); } if ((byte) (b & 0x04) > 0) { list.add("XFP_BIAS_LOW_A"); } if ((byte) (b & 0x02) > 0) { list.add("XFP_TX_HIGH_A"); } if ((byte) (b & 0x01) > 0) { list.add("XFP_TX_LOW_A"); } b = Integer.decode("0x" + params[3]); // Address 81 if ((byte) (b & 0x80) > 0) { list.add("XFP_RX_HIGH_A"); } if ((byte) (b & 0x40) > 0) { list.add("XFP_RX_LOW_A"); } /* * b = Integer.decode("0x" + params[4]); //Address 82 * * if ((byte)(b & 0x80) > 0) { list.add("XFP_TEMP_HIGH_W"); } * * if ((byte)(b & 0x40) > 0) { list.add("XFP_TEMP_LOW_W"); } * * if ((b & 0x20) > 0) { list.add("SFP_VOLT_HIGH_A); vector.add(tipoAlarma); } * * if ((b & 0x10) > 0) { list.add("SFP_VOLT_LOW_A); vector.add(tipoAlarma); } * * if ((byte)(b & 0x08) > 0) { list.add("XFP_BIAS_HIGH_W"); } * * if ((byte)(b & 0x04) > 0) { list.add("XFP_BIAS_LOW_W"); } * * if ((byte)(b & 0x02) > 0) { list.add("XFP_TX_HIGH_W"); } * * if ((byte)(b & 0x01) > 0) { list.add("XFP_TX_LOW_W"); } * * b = Integer.decode("0x" + params[4]); //Address 83 * * if ((byte)(b & 0x80) > 0) { list.add("XFP_RX_HIGH_W"); } * * if ((byte)(b & 0x40) > 0) { list.add("XFP_RX_LOW_W"); } */ b = Integer.decode("0x" + params[4]); // Address 84 if ((byte) (b & 0x80) > 0) { list.add("XFP_TX_NR"); } if ((byte) (b & 0x40) > 0) { list.add("XFP_TX_FAULT"); } if ((byte) (b & 0x20) > 0) { list.add("XFP_TX_CDR"); } if ((byte) (b & 0x10) > 0) { list.add("XFP_RX_NR"); } if ((byte) (b & 0x08) > 0) { list.add("XFP_RX_LOS"); } if ((byte) (b & 0x04) > 0) { list.add("XFP_RX_CDR"); } if ((byte) (b & 0x02) > 0) { list.add("XFP_MOD_NR"); } if ((byte) (b & 0x01) > 0) { list.add("XFP_RESET"); } b = Integer.decode("0x" + params[5]); // Address 85 if ((byte) (b & 0x80) > 0) { list.add("XFP_APD"); } if ((byte) (b & 0x40) > 0) { list.add("XFP_TEC"); } if ((byte) (b & 0x20) > 0) { list.add("XFP_WAVE_UNLOCK"); } b = Integer.decode("0x" + params[6]); // Address 86 if ((byte) (b & 0xAA) > 0) { list.add("XFP_VOLT_HIGH_A"); } if ((byte) (b & 0x55) > 0) { list.add("XFP_VOLT_LOW_A"); } /* * b = Byte.decode("0x" + params[9]); //Address 87 * * if ((byte)(b & 0xAA) > 0) { list.add("XFP_VOLT_HIGH_W"); } * * if ((byte)(b & 0x55) > 0) { list.add("XFP_VOLT_LOW_W"); } */ } else if (str.startsWith("0x03")) { // Estado del CDR XFP list.add("XFP_CDR_STATUS"); } else if (str.startsWith("0x04")) { // SFP/CDR Power /* * NO IMPLEMENTADO SEGUN EL MANUAL DEL 10G */ } } catch (Exception e) { // error de decoding, id = unknown e.printStackTrace(); } return list; } public int getPuerto(String params) { try { String[] paramsList = params.split("#"); String str = paramsList[8]; String slot = "00"; // extreure el slot del sfp del alarma if (str.startsWith("0x01") || str.startsWith("0x02") || str.startsWith("0x03") || str.startsWith("0x05")) { // XFP presense String[] bytes = str.split(":"); slot = bytes[1]; } else { return -1; } slot = slot.substring(1); return Integer.parseInt(slot); } catch (Exception e) { return -1; } } }