void GroupScanTick(GridScanArgs <IMyBlockGroup> info) { if (!GroupBlocks.ContainsKey(info.Item)) { GroupBlocks.Add(info.Item, new List <IMyTerminalBlock>()); } var list = GroupBlocks[info.Item] as List <IMyTerminalBlock>; list.Clear(); info.Item.GetBlocks(list); var kv = new KeyValuePair <IMyBlockGroup, List <IMyTerminalBlock> >(info.Item, list); var args = new GridScanArgs <KeyValuePair <IMyBlockGroup, List <IMyTerminalBlock> > >(kv, info.First, info.Last); GroupFound?.Invoke(args); }
protected override void OnEventAnalyzed(byte id, byte[] eventValue) { switch (id) { case 0x00: { var connection = eventValue[0]; var attrHandle = BitConverter.ToUInt16(eventValue, 1); var eventArgs = new IndicatedEventArgs(connection, attrHandle); Indicated?.Invoke(this, eventArgs); break; } case 0x01: { var connection = eventValue[0]; var errorCode = BitConverter.ToUInt16(eventValue, 1); var chrHandle = BitConverter.ToUInt16(eventValue, 3); var eventArgs = new ProcedureCompletedEventArgs(connection, errorCode, chrHandle); ProcedureCompleted?.Invoke(this, eventArgs); break; } case 0x02: { var connection = eventValue[0]; var start = BitConverter.ToUInt16(eventValue, 1); var end = BitConverter.ToUInt16(eventValue, 3); var uuidLength = eventValue[5]; var uuid = new byte[uuidLength]; Array.Copy(eventValue, 6, uuid, 0, uuid.Length); var eventArgs = new GroupFoundEventArgs(connection, start, end, uuid); GroupFound?.Invoke(this, eventArgs); break; } case 0x04: { var connection = eventValue[0]; var chrHandle = BitConverter.ToUInt16(eventValue, 1); var uuidLength = eventValue[3]; var uuid = new byte[uuidLength]; Array.Copy(eventValue, 4, uuid, 0, uuid.Length); var eventArgs = new FindInformationFoundEventArgs(connection, chrHandle, uuid); FindInformationFound?.Invoke(this, eventArgs); break; } case 0x05: { var connection = eventValue[0]; var attHandle = BitConverter.ToUInt16(eventValue, 1); var type = (AttributeValueType)eventValue[3]; var valueLength = eventValue[4]; var value = new byte[valueLength]; Array.Copy(eventValue, 5, value, 0, value.Length); var eventArgs = new AttributeValueEventArgs(connection, attHandle, type, value); AttributeValue?.Invoke(this, eventArgs); break; } case 0x06: { var connection = eventValue[0]; var handlesLength = eventValue[1]; var handles = new byte[handlesLength]; Array.Copy(eventValue, 2, handles, 0, handles.Length); var eventArgs = new ReadMultipleResponseEventArgs(connection, handles); ReadMultipleResopnse?.Invoke(this, eventArgs); break; } default: { break; } } }