public void Start(IFirmataEngine firmataEngine) { _firmata = firmataEngine; var config = new byte[TotalNumberOfPorts]; // buttons config[PinToPort((int)Buttons.Up)] |= PinToBit((int)Buttons.Up); config[PinToPort((int)Buttons.Down)] |= PinToBit((int)Buttons.Down); config[PinToPort((int)Buttons.Left)] |= PinToBit((int)Buttons.Left); config[PinToPort((int)Buttons.Right)] |= PinToBit((int)Buttons.Right); // touch pads (synthetic port, port=8) config[8] = 0x0f; // Register our interest in those pins for (var i = 0 ; i < TotalNumberOfPorts ; ++i) { if (config[i] != 0) { _firmata.ReportDigital((byte)i, config[i]); } } }