Skip to content

Commit c3e5d91

Browse files
Allow manual resizing of Hue+ channels
1 parent c769c20 commit c3e5d91

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

RGBController/RGBController_HuePlus.cpp

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -164,20 +164,37 @@ RGBController_HuePlus::RGBController_HuePlus(HuePlusController* hueplus_ptr)
164164
void RGBController_HuePlus::SetupZones()
165165
{
166166
/*-------------------------------------------------*\
167-
| Set up zones |
167+
| Only set LED count on the first run |
168168
\*-------------------------------------------------*/
169-
for(unsigned int zone_idx = 0; zone_idx < HUE_PLUS_NUM_CHANNELS; zone_idx++)
169+
bool first_run = false;
170+
171+
if(zones.size() == 0)
170172
{
171-
zone* new_zone = new zone;
173+
first_run = true;
174+
}
172175

173-
new_zone->name = "Hue+ Channel ";
174-
new_zone->name.append(std::to_string(zone_idx + 1));
175-
new_zone->type = ZONE_TYPE_LINEAR;
176-
new_zone->leds_min = 0;
177-
new_zone->leds_max = 40;
178-
new_zone->leds_count = hueplus->channel_leds[zone_idx];
176+
/*-------------------------------------------------*\
177+
| Clear any existing color/LED configuration |
178+
\*-------------------------------------------------*/
179+
leds.clear();
180+
colors.clear();
181+
zones.resize(HUE_PLUS_NUM_CHANNELS);
179182

180-
zones.push_back(*new_zone);
183+
/*-------------------------------------------------*\
184+
| Set up zones |
185+
\*-------------------------------------------------*/
186+
for(unsigned int zone_idx = 0; zone_idx < HUE_PLUS_NUM_CHANNELS; zone_idx++)
187+
{
188+
zones[zone_idx].name = "Hue+ Channel ";
189+
zones[zone_idx].name.append(std::to_string(zone_idx + 1));
190+
zones[zone_idx].type = ZONE_TYPE_LINEAR;
191+
zones[zone_idx].leds_min = 0;
192+
zones[zone_idx].leds_max = 40;
193+
194+
if(first_run)
195+
{
196+
zones[zone_idx].leds_count = 0;
197+
}
181198
}
182199

183200
/*-------------------------------------------------*\
@@ -201,9 +218,14 @@ void RGBController_HuePlus::SetupZones()
201218
SetupColors();
202219
}
203220

204-
void RGBController_HuePlus::ResizeZone(int /*zone*/, int /*new_size*/)
221+
void RGBController_HuePlus::ResizeZone(int zone, int new_size)
205222
{
223+
if(((unsigned int)new_size >= zones[zone].leds_min) && ((unsigned int)new_size <= zones[zone].leds_max))
224+
{
225+
zones[zone].leds_count = new_size;
206226

227+
SetupZones();
228+
}
207229
}
208230

209231
void RGBController_HuePlus::UpdateLEDs()

0 commit comments

Comments
 (0)