private void InitBridge() { while (!lightManager.CanReachBridge()) { //sleep, look for the new IP, repeat System.Threading.Thread.Sleep(10 * 1000); bridgeIp = GetBridgeIp(bridgeId); if (bridgeIp == null) { logger.Log("Got null IP for hue bridge. Quitting"); return; } lightManager.SetBridgeIp(bridgeIp); } lightManager.Init(); var allLights = lightManager.GetAllLights(); foreach (var lstate in allLights) { //.................instantiate the port var port = InitPort(GetPortInfoFromPlatform("hb:" + lstate.Name)); //remember the port to lightstate mapping portToLightState.Add(port, lstate); OperationDelegate handler = delegate(string roleName, string opName, IList <VParamType> list) { return(OnOperationInvoke(port, roleName, opName, list)); }; //..... bind the port to roles and delegates List <VRole> listRole = new List <VRole>() { RoleSwitchMultiLevel.Instance, RoleLightColor.Instance }; BindRoles(port, listRole, handler); RegisterPortWithPlatform(port); } }