JLChen
2021-08-10 70658288824174b5ecd8a022ecfc053a19aa292d
hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java
@@ -3129,7 +3129,7 @@
    /**
     * 处理HVAC 控制回调
     * 2019-8-6
     * 2021-08-10
     *
     * @param getDatas
     */
@@ -3146,16 +3146,65 @@
                                && infos.get(j).getDeviceType() == HDLApConfig.TYPE_AC_HVAC
                                && infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
//                            //
//                            devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
//                            AppliancesInfo mHvacAirInfo = devicesDataList.get(i).getAppliancesInfoList().get(j);
//                            AirHVACBackInfo info = new AirHVACBackInfo(mHvacAirInfo);
//                            setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
//                            EventBus.getDefault().post(new AirHVACFeedBackEvent(info, true));
                            //2021-08-10 ,改回AirFeedBackEvent通知回调
                            setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
                            devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
                            AppliancesInfo mHvacAirInfo = devicesDataList.get(i).getAppliancesInfoList().get(j);
                            AirHVACBackInfo info = new AirHVACBackInfo(mHvacAirInfo);
                            setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
                            EventBus.getDefault().post(new AirHVACFeedBackEvent(info, true));
                            if (getDatas.addBytes.length > 12) {
                                //解析最新的状态
                                byte indoorTemp = getDatas.addBytes[2];
                                byte refTemp = getDatas.addBytes[3];//制冷温度点 0-84
                                byte heatTemp = getDatas.addBytes[4];//制热温度点 0-84
                                byte autoTemp = getDatas.addBytes[5];//自动温度点 0-84
                                byte wettedTemp = getDatas.addBytes[6];//抽湿温度点 0-84
                                byte isOn = getDatas.addBytes[8];
                                byte airMode = getDatas.addBytes[9];
                                byte airSpeed = getDatas.addBytes[10];
                                //目前接收到数据 都通知一次最新的状态
                                //1.回调开关状态
                                sendAirFeedBackEvent(mHvacAirInfo,  new byte[]{AirCtrlParser.airSwich, isOn});
                                //2.回调 室内温度状态
                                sendAirFeedBackEvent(mHvacAirInfo,  new byte[]{(byte)AirCtrlParser.airIndoorTemp, indoorTemp});
                                //3.回调 空调模式
                                sendAirFeedBackEvent(mHvacAirInfo,  new byte[]{(byte)AirCtrlParser.airMode, airMode});
                                //4.回调 当前模式对应的温度,也可以改为通知所有模式的温度
                                byte[] curAirInfo = {0,0};
                                switch (airMode) {
                                    case 0:
                                        curAirInfo = new byte[]{AirCtrlParser.refTem, refTemp};
                                        break;
                                    case 1:
                                        curAirInfo = new byte[]{AirCtrlParser.heatTem, heatTemp};
                                        break;
                                    case 2:
                                        //通风模式没有温度
//                                    curAirInfo = new byte[]{AirCtrlParser.airTemp, newAirTem};
                                        break;
                                    case 3:
                                        curAirInfo = new byte[]{AirCtrlParser.autoTem, autoTemp};
                                        break;
                                    case 4:
                                        curAirInfo = new byte[]{AirCtrlParser.dehumTem, wettedTemp};
                                        break;
                                }
                                sendAirFeedBackEvent(mHvacAirInfo, curAirInfo);
                                //5.回调 空调风速
                                sendAirFeedBackEvent(mHvacAirInfo,  new byte[]{(byte)AirCtrlParser.airSpeed, airSpeed});
                            }
                            devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
                            break outter;
                        }
//                                else {
//                                    HDLLog.E("控制HVAC状态反馈数据异常");
//                                }
                    }
                }
@@ -3164,9 +3213,20 @@
        }
    }
   /**
    * 2021-08-10
    * 发送通知 空调状态
    */
    private static void sendAirFeedBackEvent(AppliancesInfo mHvacAirInfo, byte[] curStateBytes){
        AirCtrlBackInfo backInfo1 = new AirCtrlBackInfo();
        backInfo1.setAppliancesInfo(mHvacAirInfo);
        backInfo1.setCurState(curStateBytes);
        EventBus.getDefault().post(new AirFeedBackEvent(backInfo1, true));
    }
    /**
     * 读取HVAC状态反馈
     *
     * 2021-08-10
     * 读取HVAC状态反馈也通过AirFeedBackEvent回调
     * @param getDatas
     */
    private static void handleHVACStateData(UdpDataBean getDatas) {
@@ -3181,9 +3241,57 @@
                            && infos.get(j).getDeviceType() == HDLApConfig.TYPE_AC_HVAC
                            && infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {//2019-8-6
//                        isGetDeviceStateSuccess = true;
//                        devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
//                        EventBus.getDefault().post(new DeviceStateEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), true));
                        //改回旧方案 所有状态分开通知
                        isGetDeviceStateSuccess = true;
                        devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
                        EventBus.getDefault().post(new DeviceStateEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), true));
                        AppliancesInfo mHvacAirInfo = devicesDataList.get(i).getAppliancesInfoList().get(j);
                        byte[] curAirInfo = new byte[]{0};
                        if (getDatas.addBytes.length > 12) {
                            //解析最新的状态
                            byte indoorTemp = getDatas.addBytes[2];
                            byte refTemp = getDatas.addBytes[3];//制冷温度点 0-84
                            byte heatTemp = getDatas.addBytes[4];//制热温度点 0-84
                            byte autoTemp = getDatas.addBytes[5];//自动温度点 0-84
                            byte wettedTemp = getDatas.addBytes[6];//抽湿温度点 0-84
                            byte isOn = getDatas.addBytes[8];
                            byte airMode = getDatas.addBytes[9];
                            byte airSpeed = getDatas.addBytes[10];
                            //1.回调开关状态
                            sendAirFeedBackEvent(mHvacAirInfo, new byte[]{AirCtrlParser.airSwich, isOn});
                            //2.回调 室内温度状态
                            sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte) AirCtrlParser.airIndoorTemp, indoorTemp});
                            //3.回调 空调模式
                            sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte) AirCtrlParser.airMode, airMode});
                            //4.回调 当前模式对应的温度
                            switch (airMode) {
                                case 0:
                                    curAirInfo = new byte[]{AirCtrlParser.refTem, refTemp};
                                    break;
                                case 1:
                                    curAirInfo = new byte[]{AirCtrlParser.heatTem, heatTemp};
                                    break;
                                case 2:
                                    //通风模式没有温度
//                                    curAirInfo = new byte[]{AirCtrlParser.airTemp, newAirTem};
                                    break;
                                case 3:
                                    curAirInfo = new byte[]{AirCtrlParser.autoTem, autoTemp};
                                    break;
                                case 4:
                                    curAirInfo = new byte[]{AirCtrlParser.dehumTem, wettedTemp};
                                    break;
                            }
                            sendAirFeedBackEvent(mHvacAirInfo, curAirInfo);
                            //5.回调 空调风速
                            sendAirFeedBackEvent(mHvacAirInfo, new byte[]{(byte) AirCtrlParser.airSpeed, airSpeed});
                        }
                        break outter;
                    } else {
                        HDLLog.info("handleHVACStateData 没有找到匹配类型");