/// <summary> /// Creates the specified message by type. /// </summary> /// <param name="serviceType">Type of the message.</param> /// <returns></returns> public static KnxNetIpMessage Create(KnxNetIpServiceType serviceType) { switch (serviceType) { case KnxNetIpServiceType.ConnectionRequest: return(new KnxNetIpMessage <ConnectionRequest>()); case KnxNetIpServiceType.ConnectionResponse: return(new KnxNetIpMessage <ConnectionResponse>()); case KnxNetIpServiceType.ConnectionStateRequest: return(new KnxNetIpMessage <ConnectionStateRequest>()); case KnxNetIpServiceType.ConnectionStateResponse: return(new KnxNetIpMessage <ConnectionStateResponse>()); case KnxNetIpServiceType.DescriptionRequest: return(new KnxNetIpMessage <DescriptionRequest>()); case KnxNetIpServiceType.DescriptionResponse: return(new KnxNetIpMessage <DescriptionResponse>()); case KnxNetIpServiceType.DisconnectRequest: return(new KnxNetIpMessage <DisconnectRequest>()); case KnxNetIpServiceType.DisconnectResponse: return(new KnxNetIpMessage <DisconnectResponse>()); case KnxNetIpServiceType.SearchRequest: return(new KnxNetIpMessage <SearchRequest>()); case KnxNetIpServiceType.SearchResponse: return(new KnxNetIpMessage <SearchResponse>()); case KnxNetIpServiceType.TunnelingRequest: return(new KnxNetIpMessage <TunnelingRequest>()); case KnxNetIpServiceType.TunnelingAcknowledge: return(new KnxNetIpMessage <TunnelingAcknowledge>()); case KnxNetIpServiceType.RoutingIndication: return(new KnxNetIpMessage <RoutingIndication>()); case KnxNetIpServiceType.RoutingLostMessage: return(new KnxNetIpMessage <LostMessageIndication>()); default: throw new ArgumentException("Knx message body unknown!"); } }
/// <summary> /// Determines whether the specified bytes are message of specified service type. /// </summary> /// <param name="bytes">The bytes.</param> /// <param name="service">The service.</param> /// <returns> /// <c>true</c> if the specified bytes are message of specified service type; otherwise, <c>false</c>. /// </returns> public static bool IsService(byte[] bytes, KnxNetIpServiceType service) { return((bytes.Length >= HeaderLength) && ((KnxNetIpServiceType)((bytes[2] << 8) + bytes[3]) == service)); }