#ifndef AID2_H
#define AID2_H

#ifdef AID2_EXPORTS
#define AID2_API extern "C" __declspec(dllexport)
#else
#define AID2_API extern "C" __declspec(dllimport)
#endif

//Ȩ״̬Ϣ
enum AuthorizeReturnStatus
{
	AuthorizeSuccess = 0,   //Ȩɹ
	AuthorizeDopairingLocking = -17,  //ִִж⿪
	AuthorizeFailed = 1,  //Ȩʧ
	AuthorizeDopairingTrust = -19,  //ִҪΣִж밴
	AuthorizeDopairingNotTrust = -18,  //ִʹ߰²
	AuthorizeDopairingUnplug = -8  //ʹ߰εֻ
};

typedef void (*InstallApplicationFunc)(const char* status, const int percent);//װص
typedef void (*ConnectCallbackFunc)(const char* udid, const char* DeviceName, const char* ProductType, const char* DeviceEnclosureColor, const char* MarketingName);//Ӻص
typedef void (*DisconnectCallbackFunc)(const char* udid);//Ͽ豸ӻص


/*******************************************************
÷url
urlʽΪ IP:prot    :˿ں
*******************************************************/
AID2_API void Setaidserv(const char* url);

/*******************************************************
úͷ֤ͨ
rootcert     ֤
	  clientkey    ͻ˽Կ
	  clientcert   ͻ֤
*******************************************************/
AID2_API void TransferCertificate(const char* rootcert, const char* clientkey, const char* clientcert);

/*******************************************************
̷߳ʽ߳
ֵɹΪtrue
**************************************************/
AID2_API bool StartListen();
/*******************************************************
ֹͣرռ߳
ֵɹΪtrue
**************************************************/
AID2_API bool StopListen();

/*******************************************************
udidȨ
udid
ֵɹΪAuthorizeReturnStatus::AuthorizeSuccess
*******************************************************/
AID2_API AuthorizeReturnStatus AuthorizeDevice(const char * udid);

/******************************************************
* ִϢ״ֻϻκͲΰť
ֵLOCKDOWN_E_PAIRING_DIALOG_RESPONSE_PENDING         = -19           Ի,豸˰¡Ρť
		LOCKDOWN_E_USER_DENIED_PAIRING                     = -18			ʹ߰ˡΡť
		LOCKDOWN_E_PASSWORD_PROTECTED                      = -17			ios
		LOCKDOWN_E_MUX_ERROR                               =  -8			USB߶Ͽ߽Ӵ
															   0			Գɹ
***************************************************************/
AID2_API int DoPair(const char* udid);

/*******************************************************
udidװpath ipa 
udid
      ipaPath ipa·
ֵɹΪtrue
*******************************************************/
AID2_API bool InstallApplication(const char* udid,const char* ipaPath);

/*******************************************************
עᰲװصȨҪϢȨͨص֪ͨ
callback صָ
**************************************************/
AID2_API void RegisterInstallCallback(InstallApplicationFunc callback);

/*******************************************************
豸֪ͨĻص
callback صָ
**************************************************/
AID2_API void RegisterConnectCallback(ConnectCallbackFunc callback);

/*******************************************************
Ͽ豸֪ͨĻص
callback صָ
**************************************************/
AID2_API void RegisterDisconnectCallback(DisconnectCallbackFunc callback);

#endif