RGBController.fromData constructor
RGBController.fromData(
- Uint8List data
Implementation
factory RGBController.fromData(Uint8List data) {
final buffer = data.buffer;
ByteDataWrapper wrapper = ByteDataWrapper(ByteData.view(buffer));
wrapper.extractUint32(); // Skip data size
wrapper.extractUint32(); //Skip type
final String name = wrapper.extractString();
final String vendor = wrapper.extractString();
final String description = wrapper.extractString();
final String version = wrapper.extractString();
final String serial = wrapper.extractString();
final String location = wrapper.extractString();
final int numModes = wrapper.extractUint16();
final int activeModeId = wrapper.extractUint32();
final List<ModeData> modes = <ModeData>[];
for (int i = 0; i < numModes; i++) {
ModeData modeData = ModeData.fromBuffer(wrapper);
modes.add(modeData);
}
final int numZones = wrapper.extractUint16();
final List<ZoneData> zones = <ZoneData>[];
for (int i = 0; i < numZones; i++) {
ZoneData zoneData = ZoneData.fromBuffer(wrapper);
zones.add(zoneData);
}
final int numLeds = wrapper.extractUint16();
final List<LedData> leds = <LedData>[];
for (int i = 0; i < numLeds; i++) {
LedData ledData = LedData.fromBuffer(wrapper);
leds.add(ledData);
}
final int numColors = wrapper.extractUint16();
final List<Color> colors = <Color>[];
for (int i = 0; i < numColors; i++) {
colors.add(Color.rgb(
wrapper.extractUint8(),
wrapper.extractUint8(),
wrapper.extractUint8(),
));
wrapper.extractUint8();
}
return RGBController(
name: name,
vendor: vendor,
description: description,
version: version,
serial: serial,
location: location,
activeMode: activeModeId,
modes: modes,
zones: zones,
leds: leds,
colors: colors,
);
}