Android Open Source - lifx-sdk-android Structle Types






From Project

Back to project page lifx-sdk-android.

License

The source code is released under:

MIT License

If you think the Android project lifx-sdk-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

//
//  StructleTypes.java
//  LIFX//  ww w.  j a  v a  2s.  co  m
//
//  Created by Jarrod Boyes on 24/03/14.
//  Copyright (c) 2014 LIFX Labs. All rights reserved.
//

package lifx.java.android.entities.internal.structle;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class StructleTypes
{
  public abstract static class LxProtocolTypeBase
  {
    protected static final int PAYLOAD_OFFSET = 36;
    public abstract void printMessageData();
    public abstract byte[] getBytes();
  }

  public static class ProtocolField
  {
    public ProtocolField( byte[] data)
    {
    }
    
    public byte[] getBytes()
    {
      return new byte[]{};
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
    }
    
    public int getValue()
    {
      return 0;
    }
  }

  public static class RoutingField
  {
    public RoutingField( byte[] data)
    {
    }
    
    public byte[] getBytes()
    {
      return new byte[]{};
    }
    
    public void printValue( String varName)
    {
      System.out.println( varName + ": " + getValue());
    }
    
    public int getValue()
    {
      return 0;
    }
  }

  public static class Int8
  {
    private byte[] data;
    
    public Int8( byte[] value)
    {
      set( value);
    }
    
    public Int8( byte value)
    {
      data = new byte[1];
      data[0] = value;
    }
    
    public void set( byte[] value)
    {
      this.data = value;
    }
    
    public byte[] getBytes()
    {
      return data;
    }
    
    public int getValue()
    {
      return (int) data[0];
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < data.length; i++)
      {
        System.out.printf( "%02X ", data[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class UInt8
  {
    private byte[] data;
    
    public UInt8( byte[] value)
    {
      set( value);
    }
    
    public UInt8( int value)
    {
      data = new byte[1];
      
      byte[] buffer = ByteBuffer.allocate( 4).order( ByteOrder.LITTLE_ENDIAN).putInt( value).array();
      data[0] = buffer[0];
    }
    
    public void set( byte[] value)
    {
      this.data = value;
    }
    
    public byte[] getBytes()
    {
      return data;
    }
    
    public int getValue()
    {
      int value = bytesToInt( new byte[]{ data[0], 0x00, 0x00, 0x00});
      
      return value;
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < data.length; i++)
      {
        System.out.printf( "%02X ", data[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class Int16
  {
    private byte[] data;
    
    public Int16( byte[] value)
    {
      set( value);
    }
    
    public Int16( short value)
    {
      data = new byte[2];
      
      data[0] = (byte)(value & 0xff);
      data[1] = (byte)((value >> 8) & 0xff);
    }
    
    public void set( byte[] value)
    {
      this.data = value;
    }
    
    public byte[] getBytes()
    {
      return data;
    }
    
    public int getValue()
    {
      return (int) getShortValue(data[0], data[1]);
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < data.length; i++)
      {
        System.out.printf( "%02X ", data[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class UInt16
  {
    public static final float MAX_U16_VALUE = 65535.0f;
    
    private byte[] data;
    
    public UInt16( byte[] value)
    {
      set( value);
    }
    
    public UInt16( int value)
    {
      data = new byte[2];
      
      short valueShort = (short) value;
      data[0] = (byte)(valueShort & 0xff);
      data[1] = (byte)((valueShort >> 8) & 0xff);
    }
    
    public void set( byte[] value)
    {
      this.data = value;
    }
    
    public byte[] getBytes()
    {
      return data;
    }
    
    public int getValue()
    {
//      int value = (int) getShortValue( data[0], data[1]);
//      
//      if( value < 0)
//      {
//        value += 65536;
//      }
      
      int value = bytesToInt( new byte[]{ data[0], data[1], 0x00, 0x00});
      
      return value;
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < data.length; i++)
      {
        System.out.printf( "%02X ", data[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class Int32
  {
    private byte[] value;
    
    public Int32( byte[] value)
    {
      set( value);
    }
    
    public Int32( int value)
    {
      this.value = new byte[4];
      
      byte[] buffer = ByteBuffer.allocate( 4).order( ByteOrder.LITTLE_ENDIAN).putInt( value).array();
        
      this.value[0] = buffer[0];
      this.value[1] = buffer[1];
      this.value[2] = buffer[2];
      this.value[3] = buffer[3];
    }
    
    public void set( byte[] value)
    {
      this.value = value;
    }
    
    public byte[] getBytes()
    {
      return value;
    }
    
    public int getValue()
    {
      return (int) getIntValue( value[0], value[1], value[2], value[3]);
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < value.length; i++)
      {
        System.out.printf( "%02X ", value[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class UInt32
  {
    private byte[] value;
    
    public UInt32( byte[] value)
    {
      set( value);
    }
    
    public UInt32( long value)
    {
      this.value = new byte[4];
      
      int valueInt = (int)value;
      
      byte[] buffer = ByteBuffer.allocate( 4).order( ByteOrder.LITTLE_ENDIAN).putInt( valueInt).array();
        
      this.value[0] = buffer[0];
      this.value[1] = buffer[1];
      this.value[2] = buffer[2];
      this.value[3] = buffer[3];
    }
    
    public void set( byte[] value)
    {
      this.value = value;
    }
    
    public byte[] getBytes()
    {
      return value;
    }
    
    public long getValue()
    {
//      long value = getIntValue( this.value[0], this.value[1], this.value[2], this.value[3]);
//      
//      if( value < 0)
//      {
//        value += 4294967296L;//2147483648L;
//      }
      long value = getLongValue(this.value[0], this.value[1], this.value[2], this.value[3], (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00);
      
      return value;
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < value.length; i++)
      {
        System.out.printf( "%02X ", value[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class Int64
  {
    private byte[] value;
    
    public Int64( byte[] value)
    {
      set( value);
    }
    
    public Int64( long value)
    {
      this.value = new byte[8];
      
      byte[] buffer = ByteBuffer.allocate( 8).order( ByteOrder.LITTLE_ENDIAN).putLong( value).array();
        
      this.value[0] = buffer[0];
      this.value[1] = buffer[1];
      this.value[2] = buffer[2];
      this.value[3] = buffer[3];
      this.value[4] = buffer[4];
      this.value[5] = buffer[5];
      this.value[6] = buffer[6];
      this.value[7] = buffer[7];
    }
    
    public void set( byte[] value)
    {
      this.value = value;
    }
    
    public byte[] getBytes()
    {
      return value;
    }
    
    public long getValue()
    {
      return (long) getLongValue( value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7]);
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < value.length; i++)
      {
        System.out.printf( "%02X ", value[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class UInt64
  {
    private byte[] value;
    
    public UInt64( byte[] value)
    {
      set( value);
    }
    
    public UInt64( long value)
    {
      this.value = new byte[8];
      
      byte[] buffer = ByteBuffer.allocate( 8).order( ByteOrder.LITTLE_ENDIAN).putLong( value).array();
        
      this.value[0] = buffer[0];
      this.value[1] = buffer[1];
      this.value[2] = buffer[2];
      this.value[3] = buffer[3];
      this.value[4] = buffer[4];
      this.value[5] = buffer[5];
      this.value[6] = buffer[6];
      this.value[7] = buffer[7];
    }
    
    public void set( byte[] value)
    {
      this.value = value;
    }
    
    public byte[] getBytes()
    {
      return value;
    }
    
    public long getSignedValue()
    {
      return (long) getLongValue( value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7]);
    }
    
    public boolean equals( UInt64 other)
    {
      for( int i = 0; i < this.value.length; i++)
      {
        if( other.value[i] != this.value[i])
        {
          return false;
        }
      }
      
      return true;
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getSignedValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < value.length; i++)
      {
        System.out.printf( "%02X ", value[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class Bool8
  {
    private byte[] data;
    
    public Bool8( byte[] data)
    {
      set( data);
    }
    
    public Bool8( boolean value)
    {
      data = new byte[1];
       
      if( value)
      {
        data[0] = (byte) 0xff;
      }
      else
      {
        data[1] = (byte) 0x00;
      }
    }
    
    public void set( byte[] data)
    {
      this.data = data;
    }
    
    public byte[] getBytes()
    {
      return data;
    }
    
    public boolean getValue()
    {
      if( data[0] != 0)
      {
        return true;
      }
      
      return false;
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < data.length; i++)
      {
        System.out.printf( "%02X ", data[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class Float32
  {
    private byte[] value;
    
    public Float32( byte[] value)
    {
      set( value);
    }
    
    public Float32( float value)
    {
      this.value = new byte[4];
      
      byte[] buffer = ByteBuffer.allocate( 4).order( ByteOrder.LITTLE_ENDIAN).putFloat( value).array();
        
      this.value[0] = buffer[0];
      this.value[1] = buffer[1];
      this.value[2] = buffer[2];
      this.value[3] = buffer[3];
    }
    
    public void set( byte[] value)
    {
      this.value = value;
    }
    
    public byte[] getBytes()
    {
      return value;
    }
    
    public float getValue()
    {
      return getFloatValue( value[0], value[1], value[2], value[3]);
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < value.length; i++)
      {
        System.out.printf( "%02X ", value[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
  public static class Double64
  {
    private byte[] value;
    
    public Double64( byte[] value)
    {
      set( value);
    }
    
    public Double64( long value)
    {
      this.value = new byte[8];
      
      byte[] buffer = ByteBuffer.allocate( 8).order( ByteOrder.LITTLE_ENDIAN).putDouble( value).array();
        
      this.value[0] = buffer[0];
      this.value[1] = buffer[1];
      this.value[2] = buffer[2];
      this.value[3] = buffer[3];
      this.value[4] = buffer[4];
      this.value[5] = buffer[5];
      this.value[6] = buffer[6];
      this.value[7] = buffer[7];
    }
    
    public void set( byte[] value)
    {
      this.value = value;
    }
    
    public byte[] getBytes()
    {
      return value;
    }
    
    public double getValue()
    {
      return getDoubleValue( value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7]);
    }
    
    public void printValue( String varName)
    {
      System.out.print( varName + ": " + getValue());
      
      System.out.print( ", Hex: ( ");
      for( int i = 0; i < value.length; i++)
      {
        System.out.printf( "%02X ", value[i]);
      }
      System.out.printf( ")");
      System.out.println( "");
    }
  }
  
public static long getLongValue( byte b0, byte b1, byte b2, byte b3, byte b4, byte b5, byte b6, byte b7)
{
  byte[] bytes = new byte[]{ b0, b1, b2, b3, b4, b5, b6, b7};
  
  return bytesToLong( bytes);
}

public static float getFloatValue( byte b0, byte b1, byte b2, byte b3)
{
  byte[] bytes = { b0, b1, b2, b3};
  float f = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getFloat();
  return f;
}

public static double getDoubleValue( byte b0, byte b1, byte b2, byte b3, byte b4, byte b5, byte b6, byte b7)
{
  byte[] bytes = { b0, b1, b2, b3, b4, b5, b6, b7};
  double f = ByteBuffer.wrap( bytes).order(ByteOrder.LITTLE_ENDIAN).getDouble();
  return f;
}

public static int getIntValue( byte b0, byte b1, byte b2, byte b3)
{
  byte[] bytes = { b0, b1, b2, b3};
  
  return bytesToInt( bytes);
}

public static int bytesToInt( byte[] bytes)
{
  int i = ByteBuffer.wrap( bytes).order( ByteOrder.LITTLE_ENDIAN).getInt();
  return i;
}

public static long bytesToLong( byte[] bytes)
{
  long value = 0;
  for (int i = 0; i < bytes.length; i++)
  {
     value += ((long) bytes[i] & 0xffL) << (8 * i);
  }
  
  return value;
}

public static short getShortValue( byte b0, byte b1) 
  {  
    short value = b1;
    value = (short) ((value << 8) | b0);
    
    return value;
  }
}




Java Source Code List

com.example.lifx_sdk_samples.LFXSDKLightEditLabelActivity.java
com.example.lifx_sdk_samples.LFXSDKLightListAdapter.java
com.example.lifx_sdk_samples.LFXSDKLightPowerActivity.java
com.example.lifx_sdk_samples.LFXSDKLightRandomColorActivity.java
com.example.lifx_sdk_samples.LFXSDKSamplesActivity.java
com.example.lifx_sdk_samples.LFXSDKTaggedLightCollectionListAdapter.java
lifx.java.android.client.LFXClient.java
lifx.java.android.constant.LFXSDKConstants.java
lifx.java.android.entities.LFXHSBKColor.java
lifx.java.android.entities.LFXLightTarget.java
lifx.java.android.entities.LFXTypes.java
lifx.java.android.entities.internal.LFXBinaryPath.java
lifx.java.android.entities.internal.LFXBinaryTargetID.java
lifx.java.android.entities.internal.LFXBinaryTypes.java
lifx.java.android.entities.internal.LFXDeviceMapping.java
lifx.java.android.entities.internal.LFXGatewayDescriptor.java
lifx.java.android.entities.internal.LFXMessageObservationDescriptor.java
lifx.java.android.entities.internal.LFXMessage.java
lifx.java.android.entities.internal.LFXSiteID.java
lifx.java.android.entities.internal.LFXTagMapping.java
lifx.java.android.entities.internal.LFXTarget.java
lifx.java.android.entities.internal.structle.LxProtocolDevice.java
lifx.java.android.entities.internal.structle.LxProtocolLight.java
lifx.java.android.entities.internal.structle.LxProtocolSensor.java
lifx.java.android.entities.internal.structle.LxProtocolWan.java
lifx.java.android.entities.internal.structle.LxProtocolWifi.java
lifx.java.android.entities.internal.structle.LxProtocol.java
lifx.java.android.entities.internal.structle.Lx.java
lifx.java.android.entities.internal.structle.StructleTypes.java
lifx.java.android.internal.LFXWiFiObserver.java
lifx.java.android.light.LFXLightCollection.java
lifx.java.android.light.LFXLight.java
lifx.java.android.light.LFXTaggedLightCollection.java
lifx.java.android.light.internal.LFXAllLightsCollection.java
lifx.java.android.network_context.LFXNetworkContext.java
lifx.java.android.network_context.internal.routing_table.LFXRoutingTable.java
lifx.java.android.network_context.internal.transport_manager.LFXTransportManager.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketGeneric.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketTCP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketUDP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXTCPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXUDPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.lan.LFXLANTransportManager.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryController.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryTableEntry.java
lifx.java.android.util.LFXByteUtils.java
lifx.java.android.util.LFXLog.java
lifx.java.android.util.LFXNetworkUtils.java
lifx.java.android.util.LFXTimerUtils.java