public static APCIType GetAPCIType(this CommonExternalMessageInterface cemi) { int value = ((cemi.ServiceInformation[7] & 0x03) << 2) + ((cemi.ServiceInformation[8] & 0xC0) >> 6); return((APCIType)value); }
public static byte[] GetData(this CommonExternalMessageInterface cemi) { int dataLength = cemi.ServiceInformation[6] & 0x0F; byte[] data; switch (dataLength) { case 1: // 4 bit max data = new[] { (byte)(cemi.ServiceInformation[8] & 0x0F) }; break; case 2: // 8 bit data = new[] { cemi.ServiceInformation[9] }; break; case 3: // 2 bytes data = new[] { cemi.ServiceInformation[9], cemi.ServiceInformation[10] }; break; default: data = new byte[1]; break; } return(data); }
public static KnxGroupAddress GetDestinationAddress(this CommonExternalMessageInterface cemi) { return(new KnxGroupAddress() { Value = new[] { cemi.ServiceInformation[4], cemi.ServiceInformation[5] } }); }
public static KnxAddress GetSourceAddress(this CommonExternalMessageInterface cemi) { return(new KnxAddress() { Value = new[] { cemi.ServiceInformation[2], cemi.ServiceInformation[3] } }); }
private void SendCEMI(CommonExternalMessageInterface message) { lock (_connection.SequenceNumberLock) { TunnelingRequest request = new TunnelingRequest() { ConnectionHeader = new KnxNetBodyConnectionHeader() { ChannelId = _connection.ChannelId, SequenceCounter = _connection.GetNextSequenceNumber() }, Message = message }; UdpClient.SendAsync(request.GetBytes(), _connection.RemoteEndPoint); } }
public static TunnelingRequest Parse(byte[] buffer, int index) { TunnelingRequest request = new TunnelingRequest { Header = KnxNetIPHeader.Parse(buffer, index), ConnectionHeader = KnxNetBodyConnectionHeader.Parse(buffer, index + 6) }; int cemiFrameSize = request.Header.Size - request.ConnectionHeader.StructureLength - request.Header.HeaderSize; if (cemiFrameSize == 0) { return(request); } CommonExternalMessageInterface msg; CommonExternalMessageInterface.TryParse(buffer, index + 10, cemiFrameSize, out msg); request.Message = msg; return(request); }
public static void SetAPCIType(this CommonExternalMessageInterface cemi) { }