package com.casic.common; import com.casic.tube.frame.HeartFrame; import com.casic.tube.frame.brs.DataFrameBRS; import com.casic.tube.frame.brs.EventFrameBRS; import com.casic.tube.frame.brs.InfoFrameBRS; import com.casic.tube.frame.IMEIFrame; import com.casic.tube.frame.mhk.DataFrameMHK; import com.casic.tube.frame.mhk.EventFrameMHK; import com.casic.tube.frame.mhk.InfoFrameMHK; import com.casic.tube.frame.tp.DataFrameHTTP; import lombok.extern.slf4j.Slf4j; @Slf4j public class CasicFrameBuildFactory { public static CasicFrame buildCasicFrame(String messageType, String manufacturerCode) { switch (messageType) { case "00": return new HeartFrame(); case "01": return buildEventFrame(manufacturerCode); case "02": return buildDataFrame(manufacturerCode); case "05": return new IMEIFrame(); case "07": return buildInfoFrame(manufacturerCode); default: log.warn("上行消息类型不在范围内[" + messageType + "]"); return null; } } private static CasicFrame buildDataFrame(String manufacturerCode) { switch (manufacturerCode) { case "15": // 百瑞生 return new DataFrameBRS(); case "16": // 麦哈克 return new DataFrameMHK(); case "17": // 航天拓扑 return new DataFrameHTTP(); default: return null; } } private static CasicFrame buildEventFrame(String manufacturerCode) { switch (manufacturerCode) { case "15": return new EventFrameBRS(); case "16": return new EventFrameMHK(); default: return null; } } private static CasicFrame buildInfoFrame(String manufacturerCode) { switch (manufacturerCode) { case "14": return new InfoFrameMHK(); case "15": return new InfoFrameBRS(); default: return null; } } }