[ddk][light] Use new protocol methods to get fragments

Preference towards lookup via name string is given, but in some cases,
the relationship is not static and we must continue to rely on indicies.

Change-Id: I3f33f9b1dab4fd41c96f513ce10b3dbaa815c710
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/438687
Commit-Queue: Suraj Malhotra <surajmalhotra@google.com>
Reviewed-by: David Gilhooley <dgilhooley@google.com>
Testability-Review: David Gilhooley <dgilhooley@google.com>
diff --git a/src/ui/input/drivers/hid-buttons/hid-buttons.cc b/src/ui/input/drivers/hid-buttons/hid-buttons.cc
index a80ac34..811280c 100644
--- a/src/ui/input/drivers/hid-buttons/hid-buttons.cc
+++ b/src/ui/input/drivers/hid-buttons/hid-buttons.cc
@@ -526,8 +526,8 @@
     zxlogf(ERROR, "%s Could not get fragment count", __func__);
     return ZX_ERR_INTERNAL;
   }
-  zx_device_t* fragments[fragment_count];
-  composite.GetFragments(fragments, fragment_count, &actual);
+  composite_device_fragment_t fragments[fragment_count];
+  composite.GetFragmentsNew(fragments, fragment_count, &actual);
   if (actual != fragment_count) {
     zxlogf(ERROR, "%s Fragment count did not match", __func__);
     return ZX_ERR_INTERNAL;
@@ -539,7 +539,7 @@
     return ZX_ERR_NO_MEMORY;
   }
   for (uint32_t i = 0; i < n_gpios; ++i) {
-    status = device_get_protocol(fragments[i], ZX_PROTOCOL_GPIO, &gpios[i].gpio);
+    status = device_get_protocol(fragments[i].device, ZX_PROTOCOL_GPIO, &gpios[i].gpio);
     if (status != ZX_OK) {
       zxlogf(ERROR, "%s Could not get protocol", __func__);
       return ZX_ERR_INTERNAL;
diff --git a/src/ui/light/drivers/aml-light/aml-light.cc b/src/ui/light/drivers/aml-light/aml-light.cc
index 74d92d6..96d8314 100644
--- a/src/ui/light/drivers/aml-light/aml-light.cc
+++ b/src/ui/light/drivers/aml-light/aml-light.cc
@@ -288,8 +288,8 @@
     return ZX_ERR_INVALID_ARGS;
   }
 
-  zx_device_t* fragments[fragment_count];
-  composite.GetFragments(fragments, fragment_count, &actual);
+  composite_device_fragment_t fragments[fragment_count];
+  composite.GetFragmentsNew(fragments, fragment_count, &actual);
   if (actual != fragment_count) {
     return ZX_ERR_INTERNAL;
   }
@@ -298,7 +298,7 @@
   for (uint32_t i = 0; i < led_count; i++) {
     auto* config = &configs[i];
 
-    ddk::GpioProtocolClient gpio(fragments[count]);
+    ddk::GpioProtocolClient gpio(fragments[count].device);
     if (!gpio.is_valid()) {
       zxlogf(ERROR, "%s: could not get gpio protocol: %d", __func__, status);
       return status;
@@ -306,7 +306,7 @@
     count++;
 
     if (config->brightness) {
-      ddk::PwmProtocolClient pwm(fragments[count]);
+      ddk::PwmProtocolClient pwm(fragments[count].device);
       if (!pwm.is_valid()) {
         zxlogf(ERROR, "%s: could not get pwm protocol: %d", __func__, status);
         return status;
diff --git a/src/ui/light/drivers/gpio-light/gpio-light.cc b/src/ui/light/drivers/gpio-light/gpio-light.cc
index 5fb624e..32f8698 100644
--- a/src/ui/light/drivers/gpio-light/gpio-light.cc
+++ b/src/ui/light/drivers/gpio-light/gpio-light.cc
@@ -165,9 +165,9 @@
     }
   }
 
-  zx_device_t* fragments[fragment_count];
+  composite_device_fragment_t fragments[fragment_count];
   size_t actual;
-  composite.GetFragments(fragments, fragment_count, &actual);
+  composite.GetFragmentsNew(fragments, fragment_count, &actual);
   if (actual != fragment_count) {
     return ZX_ERR_INTERNAL;
   }
@@ -181,7 +181,7 @@
 
   for (uint32_t i = 0; i < gpio_count_; i++) {
     auto* gpio = &gpios_[i];
-    auto status = device_get_protocol(fragments[i + 1], ZX_PROTOCOL_GPIO, gpio);
+    auto status = device_get_protocol(fragments[i + 1].device, ZX_PROTOCOL_GPIO, gpio);
     if (status != ZX_OK) {
       return status;
     }