// 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 FAndroidTargetDevicePtr; /** * Type definition for shared references to instances of FAndroidTargetDevice. */ typedef TSharedRef 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& 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"