Android Open Source - lifx-sdk-android L F X Gateway Connection






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

//
//  LFXGatewayConnection.java
//  LIFX/*from w w  w.j  av  a 2  s.  c o  m*/
//
//  Created by Jarrod Boyes on 24/03/14.
//  Copyright (c) 2014 LIFX Labs. All rights reserved.
//

package lifx.java.android.network_context.internal.transport_manager.gateway_connection;

import java.util.ArrayList;

import lifx.java.android.entities.internal.LFXGatewayDescriptor;
import lifx.java.android.entities.internal.LFXMessage;
import lifx.java.android.entities.internal.structle.LxProtocol;
import lifx.java.android.entities.internal.structle.LxProtocol.Type;

public abstract class LFXGatewayConnection
{
  private static ArrayList<LxProtocol.Type> permittedMessageTypes;
  
  static
  {
    permittedMessageTypes = new ArrayList<LxProtocol.Type>();
    permittedMessageTypes.add( Type.LX_PROTOCOL_LIGHT_SET); 
    permittedMessageTypes.add( Type.LX_PROTOCOL_LIGHT_SET_DIM_ABSOLUTE); 
    permittedMessageTypes.add( Type.LX_PROTOCOL_DEVICE_SET_POWER); 
    permittedMessageTypes.add( Type.LX_PROTOCOL_LIGHT_GET); 
    permittedMessageTypes.add( Type.LX_PROTOCOL_LIGHT_SET_WAVEFORM); 
    permittedMessageTypes.add( Type.LX_PROTOCOL_DEVICE_GET_MESH_FIRMWARE); 
    permittedMessageTypes.add( Type.LX_PROTOCOL_DEVICE_GET_WIFI_FIRMWARE); 
    permittedMessageTypes.add( Type.LX_PROTOCOL_DEVICE_GET_VERSION); 
  }
  
  public enum LFXGatewayConnectionState
  {
    NOT_CONNECTED,
    CONNECTING,
    CONNECTED,
  };

  public void setListener( LFXGatewayConnectionListener listener)
  {
    this.listener = listener;
  }
  
  public static LFXGatewayConnection getGatewayConnectionWithGatewayDescriptor( LFXGatewayDescriptor gatewayDescriptor, LFXGatewayConnectionListener listener)
  {
    // TODO: implement TCP
    
    switch( gatewayDescriptor.getService())
    {
      case LX_PROTOCOL_DEVICE_SERVICE_TCP:
        break;
      case LX_PROTOCOL_DEVICE_SERVICE_UDP:
        return new LFXUDPGatewayConnection( gatewayDescriptor, listener);
      default:
        break;
    }
    
    return null;
  }

  public LFXGatewayConnection( LFXGatewayDescriptor gatewayDescriptor, LFXGatewayConnectionListener listener)
  {
    this.gatewayDescriptor = gatewayDescriptor;
    this.listener = listener;
  }

  private LFXGatewayDescriptor gatewayDescriptor;
  
  public LFXGatewayDescriptor getGatewayDescriptor()
  {
    return gatewayDescriptor;
  }

  private LFXGatewayConnectionListener listener;

  // Connection State
  public abstract void connect();
  public abstract void disconnect();

  private LFXGatewayConnectionState connectionState;

  public LFXGatewayConnectionState getConnectionState()
  {
    return connectionState;
  }
  
  protected void setConnectionState( LFXGatewayConnectionState connectionState)
  {
    this.connectionState = connectionState;
  }

  protected LFXGatewayConnectionListener getListener()
  {
    return listener;
  }
  
  // To be called externally (subclasses to override)
  public abstract void sendMessage( LFXMessage message);

  // temp hack for OTA work
  public abstract void sendData( byte[] data);

  public interface LFXGatewayConnectionListener
  {
    public void gatewayConnectionDidReceiveMessageFromHost( LFXGatewayConnection connection, LFXMessage message, String host);
    public void gatewayConnectionDidConnect( LFXGatewayConnection connection);
    public void gatewayConnectionDidDisconnectWithError( LFXGatewayConnection connection, String error);
  }

  public String getConnectionStateString()
  {
    return this.connectionState.toString();
  }

  // For subclasses to use when queueing messages in an outbox
  protected static boolean newMessageMakesQueuedMessageRedundant( LFXMessage newMessage , LFXMessage queuedMessage)
  {
    if( newMessage.getType() != queuedMessage.getType())         // if the message types are not equal
    {
      return false;
    }
    
    if( !newMessage.getPath().equals( queuedMessage.getPath()))      // if the message paths are not equal
    {
      return false;
    }
    
    // TODO:
//    if( !permittedMessageTypes.contains( newMessage.getType()))
//    {
//      return false;
//    }
    
    return true;
  }

}




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