Files
UnrealEngineUWP/Engine/Source/Developer/Android/AndroidTargetPlatform/Private/AndroidTargetDevice.h
2014-03-14 14:13:41 -04:00

196 lines
4.9 KiB
C++

// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
/*=============================================================================
AndroidTargetDevice.h: Declares the AndroidTargetDevice class.
=============================================================================*/
#pragma once
/**
* Type definition for shared pointers to instances of FAndroidTargetDevice.
*/
typedef TSharedPtr<class FAndroidTargetDevice, ESPMode::ThreadSafe> FAndroidTargetDevicePtr;
/**
* Type definition for shared references to instances of FAndroidTargetDevice.
*/
typedef TSharedRef<class FAndroidTargetDevice, ESPMode::ThreadSafe> FAndroidTargetDeviceRef;
/**
* Implements a Android target device.
*/
class FAndroidTargetDevice
: public ITargetDevice
{
public:
/**
* Creates and initializes a new Android target device.
*
* @param InTargetPlatform - The target platform.
* @param InSerialNumber - The ADB serial number of the target device.
* @param InAndroidVariant - The variant of the Android platform, i.e. ATC, DXT or PVRTC.
*/
FAndroidTargetDevice( const ITargetPlatform& InTargetPlatform, const FString& InSerialNumber, const FString& InAndroidVariant )
: AndroidVariant(InAndroidVariant)
, Connected(false)
, DeviceName(InSerialNumber)
, Model(InSerialNumber)
, SerialNumber(InSerialNumber)
, TargetPlatform(InTargetPlatform)
{ }
public:
/**
* Sets the device's connection state.
*
* @param InConnected - Whether the device is connected.
*/
void SetConnected( bool InConnected )
{
Connected = InConnected;
}
/**
* Sets the device name.
*
* @param InDeviceName - The device name to set.
*/
void SetDeviceName( const FString& InDeviceName )
{
DeviceName = InDeviceName;
}
/**
* Sets the device name.
*
* @param InDeviceName - The device name to set.
*/
void SetModel( const FString& InNodel )
{
Model = InNodel;
}
public:
// Begin ITargetDevice interface
virtual bool Connect( ) OVERRIDE
{
return true;
}
virtual bool Deploy( const FString& SourceFolder, FString& OutAppId ) OVERRIDE;
virtual void Disconnect( ) OVERRIDE
{ }
virtual ETargetDeviceTypes::Type GetDeviceType( ) const OVERRIDE
{
return ETargetDeviceTypes::Tablet;
}
virtual FTargetDeviceId GetId( ) const OVERRIDE
{
return FTargetDeviceId(TargetPlatform.PlatformName(), SerialNumber);
}
virtual FString GetName( ) const OVERRIDE
{
if (AndroidVariant.IsEmpty())
{
//return DeviceName;
return Model;
}
//return FString::Printf(TEXT("%s (%s)"), *DeviceName, *AndroidVariant);
return FString::Printf(TEXT("%s (%s)"), *Model, *AndroidVariant);
}
virtual FString GetOperatingSystemName( ) OVERRIDE
{
return TEXT("Android");
}
virtual int32 GetProcessSnapshot( TArray<FTargetDeviceProcessInfo>& OutProcessInfos ) OVERRIDE;
virtual const class ITargetPlatform& GetTargetPlatform( ) const OVERRIDE
{
return TargetPlatform;
}
virtual bool IsConnected( ) OVERRIDE
{
return Connected;
}
virtual bool IsDefault( ) const OVERRIDE
{
return true;
}
virtual bool PowerOff( bool Force ) OVERRIDE;
virtual bool PowerOn( ) OVERRIDE
{
return true;
}
virtual bool Launch( const FString& AppId, EBuildConfigurations::Type BuildConfiguration, EBuildTargets::Type BuildTarget, const FString& Params, uint32* OutProcessId );
virtual bool Reboot( bool bReconnect = false ) OVERRIDE;
virtual bool Run( const FString& ExecutablePath, const FString& Params, uint32* OutProcessId ) OVERRIDE;
virtual bool SupportsFeature( ETargetDeviceFeatures::Type Feature ) const OVERRIDE;
virtual bool SupportsSdkVersion( const FString& VersionString ) const OVERRIDE;
virtual bool TerminateProcess( const int32 ProcessId ) OVERRIDE;
virtual void SetUserCredentials( const FString & UserName, const FString & UserPassword ) OVERRIDE;
virtual bool GetUserCredentials( FString & OutUserName, FString & OutUserPassword ) OVERRIDE;
// End ITargetDevice interface
protected:
/**
* Executes an SDK command with the specified command line on this device only using ADB.
*
* @param Params - The command line parameters.
* @param OutStdOut - Optional pointer to a string that will hold the command's output log.
* @param OutStdErr - Optional pointer to a string that will hold the error message, if any.
*
* @return true on success, false otherwise.
*/
bool ExecuteAdbCommand( const FString& Params, FString* OutStdOut, FString* OutStdErr ) const;
private:
// The variant of the Android platform, i.e. ATC, DXT or PVRTC.
FString AndroidVariant;
// Holds a flag indicating whether the device is currently connected.
bool Connected;
// Holds the device name.
FString DeviceName;
// Holds the device model.
FString Model;
// Holds the serial number (from ADB devices) of this target device.
FString SerialNumber;
// Holds a reference to the device's target platform.
const ITargetPlatform& TargetPlatform;
};
#include "AndroidTargetDevice.inl"