// 複数のランプを一度に更新
void UpdateMultipleLamp(LampMultiUpdateReport *report) noexcept
{
    for (uint8_t i = 0; i < report->LampCount; i++){
        if (report->LampIds[i] < TOTAL_LED_COUNT) {
            LampArrayColor *c = &report->UpdateColors[i];
            uint32_t pxcolor = leds.Color(c->RedChannel, c->GreenChannel, c->BlueChannel);
            setPixelColor(report->LampIds[i], pxcolor);
        }
    }

    // ホストから送られるデータが最後ならこのフラグが立ち、次に「LampArrayControlReport(AutonomousMode: enabled)」が送信されることになる
    if (report->LampUpdateFlags & LAMP_UPDATE_FLAG_UPDATE_COMPLETE) is_completed = true;
}

// 2つのIDの範囲内のランプを更新
void UpdateRangeLamp(LampRangeUpdateReport *report) noexcept
{
    if (report->LampIdStart >= 0 && report->LampIdStart < TOTAL_LED_COUNT && 
        report->LampIdEnd >= 0 && report->LampIdEnd < TOTAL_LED_COUNT && 
        report->LampIdStart <= report->LampIdEnd)
    {
        for (uint8_t i = report->LampIdStart; i <= report->LampIdEnd; i++) {
            uint32_t pxcolor = leds.Color(report->UpdateColor.RedChannel, report->UpdateColor.GreenChannel, report->UpdateColor.BlueChannel);
            setPixelColor(i, pxcolor);
        }
    }

    // UpdateMultipleLampと同様、ホストから送られるデータが最後ならこのフラグが立つ
    if (report->LampUpdateFlags & LAMP_UPDATE_FLAG_UPDATE_COMPLETE) is_completed = true;
}