package com.hdl.sdk.hdl_core.HDLAppliances.HDLAirCondition.Parser; import com.hdl.sdk.hdl_core.Config.Configuration; import com.hdl.sdk.hdl_core.HDLAppliances.Config.HDLApConfig; import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo; import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLDeviceManager; /** * Created by Tommy on 2017/7/20. */ public class AirCtrlParser { public static final int fail = 0; public static final int infrared = 1; public static final int panelLock = 2; public static final int airSwich = 3; public static final int airOn = 1;//空调开 public static final int airOff = 0;//空调关 public static final int refTem = 4;//制冷温度 public static final int airSpeed = 5;//风速 public static final int airSpeedAuto = 0;//风速自动 public static final int airSpeedHigh = 1;//风速高风 public static final int airSpeedMid = 2;//风速中风 public static final int airSpeedLow = 3;//风速低风 public static final int airMode = 6;//空调模式 public static final int airModeRefTem = 0;//空调模式制冷 public static final int airModeHeatTem = 1;//空调模式制热 public static final int airModeVen = 2;//空调模式通风 public static final int airModeAuto = 3;//空调模式自动 public static final int airModeDehum = 4;//空调模式抽湿 public static final int heatTem = 7;//制热温度 public static final int autoTem = 8;//自动温度 public static final int upTem = 9;//上升温度 public static final int downTem = 10;//下降温度 public static final int dehumTem = 19;//抽湿温度 public static byte[] getAirPanelAddByte(int type, int arg2) { byte[] addBytes; switch (type) { case airSwich: if (arg2 == airOff) { addBytes = new byte[]{airSwich, (byte) arg2}; } else if (arg2 == airOn) { addBytes = new byte[]{airSwich, (byte) arg2}; } else { addBytes = new byte[]{fail}; } break; case refTem: addBytes = new byte[]{refTem, (byte) arg2}; break; case airSpeed: switch (arg2) { case airSpeedAuto: addBytes = new byte[]{airSpeed, airSpeedAuto}; break; case airSpeedHigh: addBytes = new byte[]{airSpeed, airSpeedHigh}; break; case airSpeedMid: addBytes = new byte[]{airSpeed, airSpeedMid}; break; case airSpeedLow: addBytes = new byte[]{airSpeed, airSpeedLow}; break; default: addBytes = new byte[]{fail}; break; } break; case airMode: switch (arg2) { case airModeRefTem: addBytes = new byte[]{airMode, airModeRefTem}; break; case airModeHeatTem: addBytes = new byte[]{airMode, airModeHeatTem}; break; case airModeVen: addBytes = new byte[]{airMode, airModeVen}; break; case airModeAuto: addBytes = new byte[]{airMode, airModeAuto}; break; case airModeDehum: addBytes = new byte[]{airMode, airModeDehum}; break; default: addBytes = new byte[]{fail}; break; } break; case heatTem: addBytes = new byte[]{heatTem, (byte) arg2}; break; case autoTem: addBytes = new byte[]{autoTem, (byte) arg2}; break; case dehumTem: addBytes = new byte[]{dehumTem, (byte) arg2}; break; case upTem: addBytes = new byte[]{upTem, (byte) arg2}; break; case downTem: addBytes = new byte[]{downTem, (byte) arg2}; break; default: addBytes = new byte[]{fail}; break; } return addBytes; } public static byte[] getAcAddByte(AppliancesInfo appliancesInfo, int type, int state) { AppliancesInfo newInfo = null; byte[] airBytes = null; outter: for (int i = 0; i < HDLDeviceManager.devicesDataList.size(); i++) { if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getSourceSubnetID() && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getSourceDeviceID()) { for (int j = 0; j < HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().size(); j++) { if (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.AIR_BIG_TYPE && HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() != HDLApConfig.TYPE_AC_PANEL && appliancesInfo.getChannelNum() == HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) { newInfo = HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j); switch (newInfo.getChannelNum()) { case 1: airBytes = HDLDeviceManager.air1Info; break; case 2: airBytes = HDLDeviceManager.air2Info; break; case 3: airBytes = HDLDeviceManager.air3Info; break; case 4: airBytes = HDLDeviceManager.air4Info; break; default: airBytes = new byte[6]; break; } if (newInfo.getArrCurState() == null) { newInfo.setArrCurState(new byte[6]); } break outter; } } } } if (airBytes != null && airBytes.length >= 6) { byte[] addBytes = new byte[13]; addBytes[0] = (byte) newInfo.getChannelNum(); addBytes[1] = 0; addBytes[2] = airBytes[4]; addBytes[3] = airBytes[2]; addBytes[4] = airBytes[2]; addBytes[5] = airBytes[2]; addBytes[6] = airBytes[2]; addBytes[7] = (byte) ((airBytes[1] & 0xff) * 16 + (airBytes[3] & 0xff)); addBytes[8] = airBytes[0]; addBytes[9] = airBytes[1]; addBytes[10] = airBytes[3]; addBytes[11] = airBytes[2]; addBytes[12] = airBytes[5]; switch (type) { case airSwich: if (state == airOff) { addBytes[8] = 0; } else { addBytes[8] = 1; } break; case refTem: case heatTem: case autoTem: case dehumTem: addBytes[8] = 1; addBytes[3] = (byte) state; addBytes[4] = (byte) state; addBytes[5] = (byte) state; addBytes[6] = (byte) state; addBytes[11] = (byte) state; break; case upTem: addBytes[8] = 1; addBytes[3] = (byte) ((airBytes[2] & 0xff) + state); addBytes[4] = (byte) ((airBytes[2] & 0xff) + state); addBytes[5] = (byte) ((airBytes[2] & 0xff) + state); addBytes[6] = (byte) ((airBytes[2] & 0xff) + state); addBytes[11] = (byte) ((airBytes[2] & 0xff) + state); break; case downTem: addBytes[8] = 1; addBytes[3] = (byte) ((airBytes[2] & 0xff) - state); addBytes[4] = (byte) ((airBytes[2] & 0xff) - state); addBytes[5] = (byte) ((airBytes[2] & 0xff) - state); addBytes[6] = (byte) ((airBytes[2] & 0xff) - state); addBytes[11] = (byte) ((airBytes[2] & 0xff) - state); break; case airMode: addBytes[8] = 1; addBytes[7] = (byte) (state * 16 + (airBytes[3] & 0xff)); addBytes[9] = (byte) state; break; case airSpeed: addBytes[8] = 1; addBytes[7] = (byte) ((airBytes[1] & 0xff) * 16 + state); addBytes[10] = (byte) state; break; } return addBytes; } else { return null; } } // public static byte[] getRcuAirAddByte(AppliancesInfo info,int type, int arg2){ // byte[] addBytes = new byte[9]; // addBytes[4] = 1; // byte[] curAirInfo = info.getArrCurState(); // switch (info.getChannelNum()){ // case 1: // curAirInfo = HDLDeviceManager.air1Info; // break; // case 2: // curAirInfo = HDLDeviceManager.air2Info; // break; // case 3: // curAirInfo = HDLDeviceManager.air3Info; // break; // case 4: // curAirInfo = HDLDeviceManager.air4Info; // break; // } // // byte airSwitch = curAirInfo[0]; // byte aircurMode = curAirInfo[1]; // byte airTem = curAirInfo[2]; // byte aircurSpeed = curAirInfo[3]; // byte aircurTem = curAirInfo[4]; // byte airBAIFENG = curAirInfo[5]; // // addBytes[0] = (byte) info.getChannelNum(); // addBytes[1] = airSwitch; // switch (aircurMode){ // case 0: // addBytes[2] = airTem; // break; // case 1: // addBytes[5] = airTem; // break; // case 2: // break; // case 3: // addBytes[6] = airTem; // break; // } // addBytes[3] = (byte) ((aircurMode << 4) | aircurSpeed); // addBytes[4] = 1; // addBytes[8] = airBAIFENG; // switch (type){ // case airSwich: // if(arg2 == airOff){ // addBytes[1] = 0; // }else if(arg2 == airOn){ // addBytes[1] = 1; // } // break; // case refTem: // addBytes[2] = (byte) arg2; // addBytes[5] = (byte) arg2; // addBytes[6] = (byte) arg2; // addBytes[7] = (byte) arg2; // break; // case airSpeed : // int modifyLow; // int height = ((addBytes[3] & 0xf0) >> 4);//获取高4位 // switch (arg2){ // case airSpeedAuto: // modifyLow = 0; // addBytes[3] = (byte)((height<<4)|modifyLow); // break; // case airSpeedHigh: // modifyLow = 1; // addBytes[3] = (byte)((height<<4)|modifyLow); // break; // case airSpeedMid: // modifyLow = 2; // addBytes[3] = (byte)((height<<4)|modifyLow); // break; // case airSpeedLow: // modifyLow = 3; // addBytes[3] = (byte)((height<<4)|modifyLow); // break; // default: // addBytes = new byte[]{fail}; // break; // } // break; // case airMode: // int modify; // int low = (addBytes[3] & 0x0f);//获取低4位 // switch (arg2){ // case airModeRefTem: // // modify = 0; // addBytes[3] = (byte)((modify<<4)|low); // break; // case airModeHeatTem: // modify = 1; // addBytes[3] = (byte)((modify<<4)|low); // break; // case airModeVen: // modify = 2; // addBytes[3] = (byte)((modify<<4)|low); // break; // case airModeAuto: // modify = 3; // addBytes[3] = (byte)((modify<<4)|low); // break; // case airModeDehum: // modify = 4; // addBytes[3] = (byte)((modify<<4)|low); // break; // default: // addBytes = new byte[]{fail}; // break; // } // break; // case heatTem: // addBytes[2] = (byte) arg2; // addBytes[5] = (byte) arg2; // addBytes[6] = (byte) arg2; // addBytes[7] = (byte) arg2; // break; // case autoTem: // addBytes[2] = (byte) arg2; // addBytes[5] = (byte) arg2; // addBytes[6] = (byte) arg2; // addBytes[7] = (byte) arg2; // break; // case dehumTem: // addBytes[2] = (byte) arg2; // addBytes[5] = (byte) arg2; // addBytes[6] = (byte) arg2; // addBytes[7] = (byte) arg2; // break; // case upTem: //// int height2 = ((addBytes[3] & 0xf0) >> 4);//获取高4位 //// switch (height2){ //// case 0: //// addBytes[2] = (byte) (arg2 + (airTem & 0xFF)); //// break; //// case 1: //// addBytes[5] = (byte) (arg2 + (airTem & 0xFF)); //// break; //// case 3: //// addBytes[6] = (byte) (arg2 + (airTem & 0xFF)); //// break; //// case 4: //// addBytes[7] = (byte) (arg2 + (airTem & 0xFF)); //// break; //// } // addBytes[2] = (byte) (arg2 + (airTem & 0xFF)); // addBytes[5] = (byte) (arg2 + (airTem & 0xFF)); // addBytes[6] = (byte) (arg2 + (airTem & 0xFF)); // addBytes[7] = (byte) (arg2 + (airTem & 0xFF)); // break; // case downTem: //// int height3= ((addBytes[3] & 0xf0) >> 4);//获取高4位 //// switch (height3){ //// case 0: //// addBytes[2] = (byte) ((airTem & 0xFF)-arg2 ); //// break; //// case 1: //// addBytes[5] = (byte) ((airTem & 0xFF)-arg2 ); //// break; //// case 3: //// addBytes[6] = (byte) ((airTem & 0xFF)-arg2 ); //// break; //// case 4: //// addBytes[7] = (byte) ((airTem & 0xFF)-arg2 ); //// break; //// } // addBytes[2] = (byte) ((airTem & 0xFF)-arg2 ); // addBytes[5] = (byte) ((airTem & 0xFF)-arg2 ); // addBytes[6] = (byte) ((airTem & 0xFF)-arg2 ); // addBytes[7] = (byte) ((airTem & 0xFF)-arg2 ); // break; // default: // addBytes = new byte[]{fail}; // break; // } // return addBytes; // } }