2014-12-07 19:09:38 -05:00
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
/*=============================================================================
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 .
*/
2014-09-30 23:41:01 -04:00
class FAndroidTargetDevice : public ITargetDevice
2014-03-14 14:13:41 -04:00
{
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 .
*/
2014-09-30 23:41:01 -04:00
FAndroidTargetDevice ( const ITargetPlatform & InTargetPlatform , const FString & InSerialNumber , const FString & InAndroidVariant )
2014-03-14 14:13:41 -04:00
: AndroidVariant ( InAndroidVariant )
2014-09-30 23:41:01 -04:00
, bConnected ( false )
, bIsDeviceAuthorized ( false )
, AndroidSDKVersion ( INDEX_NONE )
2014-03-14 14:13:41 -04:00
, DeviceName ( InSerialNumber )
, Model ( InSerialNumber )
, SerialNumber ( InSerialNumber )
, TargetPlatform ( InTargetPlatform )
{ }
public :
/**
* Sets the device ' s connection state .
*
2014-09-30 23:41:01 -04:00
* @ param bInConnected - Whether the device is connected .
2014-03-14 14:13:41 -04:00
*/
2014-09-30 23:41:01 -04:00
void SetConnected ( bool bInConnected )
2014-03-14 14:13:41 -04:00
{
2014-09-30 23:41:01 -04:00
bConnected = bInConnected ;
}
/**
* Sets the device ' s authorization state .
*
* @ param bInConnected - Whether the device is authorized for USB communications .
*/
void SetAuthorized ( bool bInIsAuthorized )
{
bIsDeviceAuthorized = bInIsAuthorized ;
}
/**
* Sets the device ' s OS / SDK versions .
*
* @ param InSDKVersion - Android SDK version of the device .
* @ param InReleaseVersion - Android Release ( human - readable ) version of the device .
*/
void SetVersions ( int32 InSDKVersion , const FString & InReleaseVersion )
{
AndroidSDKVersion = InSDKVersion ;
AndroidVersionString = InReleaseVersion ;
2014-03-14 14:13:41 -04:00
}
/**
* Sets the device name .
*
* @ param InDeviceName - The device name to set .
*/
2014-09-30 23:41:01 -04:00
void SetDeviceName ( const FString & InDeviceName )
2014-03-14 14:13:41 -04:00
{
DeviceName = InDeviceName ;
}
/**
* Sets the device name .
*
* @ param InDeviceName - The device name to set .
*/
2014-09-30 23:41:01 -04:00
void SetModel ( const FString & InNodel )
2014-03-14 14:13:41 -04:00
{
Model = InNodel ;
}
public :
// Begin ITargetDevice interface
2014-09-30 23:41:01 -04:00
virtual bool Connect ( ) override
2014-03-14 14:13:41 -04:00
{
return true ;
}
2014-09-30 23:41:01 -04:00
virtual bool Deploy ( const FString & SourceFolder , FString & OutAppId ) override ;
2014-03-14 14:13:41 -04:00
2014-09-30 23:41:01 -04:00
virtual void Disconnect ( ) override
2014-03-14 14:13:41 -04:00
{
2014-09-30 23:41:01 -04:00
}
2014-10-10 20:14:21 -04:00
virtual ETargetDeviceTypes GetDeviceType ( ) const override
2014-09-30 23:41:01 -04:00
{
//@TODO: How to distinguish between a Tablet and a Phone (or a TV microconsole, etc...), and is it important?
2014-03-14 14:13:41 -04:00
return ETargetDeviceTypes : : Tablet ;
}
2014-09-30 23:41:01 -04:00
virtual FTargetDeviceId GetId ( ) const override
2014-03-14 14:13:41 -04:00
{
return FTargetDeviceId ( TargetPlatform . PlatformName ( ) , SerialNumber ) ;
}
2014-09-30 23:41:01 -04:00
virtual FString GetName ( ) const override
2014-03-14 14:13:41 -04:00
{
if ( AndroidVariant . IsEmpty ( ) )
{
//return DeviceName;
return Model ;
}
//return FString::Printf(TEXT("%s (%s)"), *DeviceName, *AndroidVariant);
return FString : : Printf ( TEXT ( " %s (%s) " ) , * Model , * AndroidVariant ) ;
}
2014-09-30 23:41:01 -04:00
virtual FString GetOperatingSystemName ( ) override ;
2014-03-14 14:13:41 -04:00
2014-06-13 06:14:46 -04:00
virtual int32 GetProcessSnapshot ( TArray < FTargetDeviceProcessInfo > & OutProcessInfos ) override ;
2014-03-14 14:13:41 -04:00
2014-06-13 06:14:46 -04:00
virtual const class ITargetPlatform & GetTargetPlatform ( ) const override
2014-03-14 14:13:41 -04:00
{
return TargetPlatform ;
}
2014-09-30 23:41:01 -04:00
virtual bool IsConnected ( ) override
2014-03-14 14:13:41 -04:00
{
2014-09-30 23:41:01 -04:00
return bConnected ;
2014-03-14 14:13:41 -04:00
}
2014-09-30 23:41:01 -04:00
virtual bool IsDefault ( ) const override
2014-03-14 14:13:41 -04:00
{
return true ;
}
2014-09-30 23:41:01 -04:00
virtual bool PowerOff ( bool Force ) override ;
2014-03-14 14:13:41 -04:00
2014-09-30 23:41:01 -04:00
virtual bool PowerOn ( ) override
2014-03-14 14:13:41 -04:00
{
return true ;
}
2014-09-30 23:41:01 -04:00
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 ;
2014-10-10 20:14:21 -04:00
virtual bool SupportsFeature ( ETargetDeviceFeatures Feature ) const override ;
2014-09-30 23:41:01 -04:00
virtual bool SupportsSdkVersion ( const FString & VersionString ) const override ;
virtual bool TerminateProcess ( const int32 ProcessId ) override ;
2014-10-01 14:45:23 -04:00
virtual void SetUserCredentials ( const FString & UserName , const FString & UserPassword ) override ;
virtual bool GetUserCredentials ( FString & OutUserName , FString & OutUserPassword ) override ;
2014-03-14 14:13:41 -04:00
// 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.
2014-09-30 23:41:01 -04:00
bool bConnected ;
// Holds a flag indicating whether the device is USB comms authorized (if not, most other values aren't valid but we still want to show the device as detected but unready)
bool bIsDeviceAuthorized ;
// Holds the Android SDK version
int32 AndroidSDKVersion ;
// Holds the Android Release version string (e.g., "2.3" or "4.2.2")
FString AndroidVersionString ;
2014-03-14 14:13:41 -04:00
// 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"