package org.squidy.nodes.reactivision.remote.control; import java.nio.ByteBuffer; import org.squidy.nodes.reactivision.remote.Util; public class CameraSettingsContainer { public float framerate; public float exposureTime; public int pixelClock; public int hardwareGain; public int edgeEnhancement; public int gamma; private CameraSettingsContainer() { //do nothing } public static CameraSettingsContainer deserialize(ByteBuffer buffer) { final byte[] bytes = buffer.array(); if (bytes.length != 24) { System.err.println("payload length is " + bytes.length + ", but should be 24."); return null; } final CameraSettingsContainer c = new CameraSettingsContainer(); c.framerate = Util.readFloatFromBytes(bytes, 0); c.exposureTime = Util.readFloatFromBytes(bytes, 4); c.pixelClock = Util.readFourByteInt(bytes, 8); c.hardwareGain = Util.readFourByteInt(bytes, 12); c.edgeEnhancement = Util.readFourByteInt(bytes, 16); c.gamma = Util.readFourByteInt(bytes, 20); //deal with framerate == 0 if (c.framerate == 0) c.framerate = 1000 / c.exposureTime; return c; } public String toString() { final StringBuilder s = new StringBuilder(); s.append(" [framerate: "); s.append(framerate); s.append("]\n"); s.append(" [exposure time: "); s.append(exposureTime); s.append("]\n"); s.append(" [pixel clock: "); s.append(pixelClock); s.append("]\n"); s.append(" [hardware gain: "); s.append(hardwareGain); s.append("]\n"); s.append(" [edge enhancement: "); s.append(edgeEnhancement); s.append("]\n"); s.append(" [gamma: "); s.append(gamma); s.append("]\n"); return s.toString(); } }