public static MessageDataContainer ParseSettingsMessage(byte[] packet) { MessageDataContainer data = new MessageDataContainer(); data.MessageMission = packet[1]; if ((data.MessageMission & (MissionAssign | MissionInform)) != 0) { data.FocusDistance = _array_to_32bit_int(packet, 2); data.FocusVerticalCoordinate = _array_to_32bit_int(packet, 6); data.SimpleViewWidth = _array_to_32bit_int(packet, 10); data.SimpleViewHeight = _array_to_32bit_int(packet, 14); } if ((data.MessageMission & MissionRequest) != 0) { byte[] addr = new byte[4]; Array.Copy(packet, 18, addr, 0, 4); data.RemoteAddress = new IPAddress(addr); data.RemotePort = (packet[22] & 0xFF) + 256 * (packet[23] & 0xFF); } return(data); }
public static byte[] ComposeModeMessageBytes(MessageDataContainer msgDataContainer) { switch (((IModeMessageData)msgDataContainer).GetModeType()) { case ModeType.Pic: return(new[] { ModeTypePicCode }); case ModeType.NoPic: return(new[] { ModeTypeNoPicCode }); case ModeType.Settings: return(new[] { ModeTypeSettingsCode }); default: throw new ArgumentOutOfRangeException("msgDataContainer"); } }
public static byte[] ComposeSettingsBytes(MessageDataContainer msgDataContainer) { ISettingsMessageData idata = msgDataContainer; int totalCount = +1 //message mission(flags) + 4 //focusDist + 4 //focusVert + 4 //simpleWidth + 4 //simpleHeight + 4 //inet4address //[nulls] + 2; //port //[nulls] //create array byte[] ret = new byte[totalCount]; //assign flags ret[0] = idata.GetFlags(); if ((idata.GetFlags() & (MissionAssign | MissionInform)) != 0) { _assign_32bit_int_to_array(ret, 1, idata.GetFocusDistance()); _assign_32bit_int_to_array(ret, 5, idata.GetFocusVerticalCoordinate()); _assign_32bit_int_to_array(ret, 9, idata.GetSimpleViewWidth()); _assign_32bit_int_to_array(ret, 13, idata.GetSimpleViewHeight()); } if ((idata.GetFlags() & MissionRequest) != 0) { Array.Copy(idata.GetRemoteAddress().GetAddressBytes(), 0, ret, 17, 4); ret[21] = (byte)(idata.GetRemotePort() % 256); ret[22] = (byte)(idata.GetRemotePort() / 256); } //return packet return(ret); }
public static byte[] ComposeEmptyMessageBytes(MessageDataContainer msgDataContainer) { return(new byte[] { 0 }); }
public static byte[] ComposePingMessageBytes(MessageDataContainer msgDataContainer) { return(new byte[] { 0 }); //return zero byte }
protected Message SetData(MessageDataContainer data) { Data = data; return(this); }