import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.Toast;
import android.widget.ToggleButton;
+import org.iotivity.base.ErrorCode;
import org.iotivity.base.ModeType;
import org.iotivity.base.OcConnectivityType;
import org.iotivity.base.OcException;
+import org.iotivity.base.OcHeaderOption;
+import org.iotivity.base.ObserveType;
import org.iotivity.base.OcPlatform;
+import org.iotivity.base.OcPresenceStatus;
import org.iotivity.base.OcProvisioning;
+import org.iotivity.base.OcRepresentation;
import org.iotivity.base.OcResource;
import org.iotivity.base.PlatformConfig;
import org.iotivity.base.QualityOfService;
import org.iotivity.base.ServiceType;
+import org.iotivity.base.OcAccountManager;
+import org.iotivity.service.easysetup.mediator.ESConstants;
import org.iotivity.service.easysetup.mediator.CloudProp;
import org.iotivity.service.easysetup.mediator.CloudPropProvisioningCallback;
import org.iotivity.service.easysetup.mediator.CloudPropProvisioningStatus;
-import org.iotivity.service.easysetup.mediator.DeviceConfig;
import org.iotivity.service.easysetup.mediator.DeviceProp;
import org.iotivity.service.easysetup.mediator.DevicePropProvisioningCallback;
import org.iotivity.service.easysetup.mediator.DevicePropProvisioningStatus;
import org.iotivity.service.easysetup.mediator.RemoteEnrollee;
import org.iotivity.service.easysetup.mediator.SecurityProvisioningCallback;
import org.iotivity.service.easysetup.mediator.SecurityProvisioningStatus;
-import org.iotivity.service.easysetup.mediator.WiFiConfig;
import org.iotivity.service.easysetup.mediator.enums.ESCloudProvState;
import org.iotivity.service.easysetup.mediator.enums.ESResult;
import org.iotivity.service.easysetup.mediator.enums.WIFI_AUTHTYPE;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
-public class EasysetupActivity extends Activity {
+public class EasysetupActivity extends Activity
+ implements OcPlatform.OnPresenceListener,
+ OcResource.OnObserveListener{
private static final String TAG = "Easysetup Mediator: ";
PlatformConfig cfg;
+ OcAccountManager m_accountManager = null;
+ final String deviceID = "9E09F4FE-978A-4BC3-B356-1F93BCA37829";
+ final String CIServer = "coap+tcp://52.69.149.85:5683";
private static final int BUFFER_SIZE = 1024;
public static final String OIC_CLIENT_JSON_DB_FILE = "oic_svr_db_client.dat";
public static final String OIC_SQL_DB_FILE = "PDM.db";
- private boolean isSecurityEnabled = false;
private boolean isFirstTime = true;
+ String mEnrolleeDeviceID;
+ String mAuthCode;
+ String mAuthProvider;
+ String mRefreshtoken;
+ String mUserID;
+ String mAccessToken;
+ String mEnrolleeAuthCode;
+ byte[] mCertificate;
+ int mCredID;
+
ToggleButton mSecurityMode;
RadioGroup mEasysetupProcess;
RadioButton mConfigureSecProcess;
RadioButton mGetConfigurationProcess;
- RadioButton mProvisionDevConfProcess;
- RadioButton mProvisionCloudConfProcess;
+ RadioButton mProvisionDevPropProcess;
+ RadioButton mProvisionCloudPropProcess;
Button mDiscoverResource;
Button mStartGetConfiguration;
Button mStartConfigureSec;
- Button mStartProvisionDevConf;
- Button mStartProvisionCloudConf;
+ Button mStartProvisionDevProp;
+ Button mStartProvisionCloudProp;
TextView mGetconfigurationStateText;
TextView mDevNameText;
+ TextView mModelNumberText;
TextView mLanguageText;
TextView mCountryText;
TextView mWifiModeText;
TextView mCloudAccessableText;
TextView mSecStateText;
TextView mSecDevIDText;
- TextView mProvisionDevConfState;
- TextView mProvisionCloudConfState;
+ TextView mProvisionDevPropState;
+ TextView mProvisionCloudPropState;
EditText mEnrollerSsidText;
EditText mEnrollerPWText;
EditText mInputLanguageText;
EditText mInputCountryText;
+ EditText mInputLocationText;
EditText mAuthCodeText;
EditText mAuthProviderText;
EditText mCIServerText;
LinearLayout mGetConfigurationInfo;
LinearLayout mConfigureSecInfo;
- LinearLayout mProvisionDevConfInfo;
- LinearLayout mProvisionCloudConfInfo;
+ LinearLayout mProvisionDevPropInfo;
+ LinearLayout mProvisionCloudPropInfo;
Spinner mAuthType;
Spinner mEncType;
mConfigureSecProcess = (RadioButton) findViewById(R.id.btn_configurSec);
mGetConfigurationProcess = (RadioButton) findViewById(R.id.btn_getConfiguration);
- mProvisionDevConfProcess = (RadioButton) findViewById(R.id.btn_provisionDevConf);
- mProvisionCloudConfProcess =
+ mProvisionDevPropProcess = (RadioButton) findViewById(R.id.btn_provisionDevConf);
+ mProvisionCloudPropProcess =
(RadioButton) findViewById(R.id.btn_provisionCloudConf);
mDiscoverResource = (Button) findViewById(R.id.btn_discoverResource);
mStartGetConfiguration =
(Button) findViewById(R.id.btn_startGetConfiguration);
mStartConfigureSec = (Button) findViewById(R.id.btn_startConfigureSec);
- mStartProvisionDevConf = (Button) findViewById(R.id.btn_startProvisionDevConf);
- mStartProvisionCloudConf = (Button) findViewById(R.id.btn_startProvisionCloudConf);
+ mStartProvisionDevProp = (Button) findViewById(R.id.btn_startProvisionDevConf);
+ mStartProvisionCloudProp = (Button) findViewById(R.id.btn_startProvisionCloudConf);
mGetconfigurationStateText =
(TextView) findViewById(R.id.txt_getConfigurationState);
mDevNameText = (TextView) findViewById(R.id.txt_devName);
+ mModelNumberText = (TextView) findViewById(R.id.txt_modelNumber);
mLanguageText = (TextView) findViewById(R.id.txt_language);
mCountryText = (TextView) findViewById(R.id.txt_country);
mWifiModeText = (TextView) findViewById(R.id.txt_wifiMode);
mCloudAccessableText = (TextView) findViewById(R.id.txt_cloudAccessable);
mSecStateText = (TextView) findViewById(R.id.txt_secState);
mSecDevIDText = (TextView) findViewById(R.id.txt_secDevID);
- mProvisionDevConfState = (TextView) findViewById(R.id.txt_provisionDevConfState);
- mProvisionCloudConfState =
+ mProvisionDevPropState = (TextView) findViewById(R.id.txt_provisionDevConfState);
+ mProvisionCloudPropState =
(TextView) findViewById(R.id.txt_provisionCloudConfState);
mEnrollerSsidText = (EditText) findViewById(R.id.editText_EnrollerSSID);
mEnrollerPWText = (EditText) findViewById(R.id.editText_EnrollerPW);
mInputLanguageText = (EditText) findViewById(R.id.editText_Language);
mInputCountryText = (EditText) findViewById(R.id.editText_Country);
+ mInputLocationText = (EditText) findViewById(R.id.editText_Location);
mAuthCodeText = (EditText) findViewById(R.id.editText_authcode);
mAuthProviderText = (EditText) findViewById(R.id.editText_authprovider);
mCIServerText = (EditText) findViewById(R.id.editText_ciserver);
mGetConfigurationInfo =
(LinearLayout) findViewById(R.id.layout_GetConfiguration);
mConfigureSecInfo = (LinearLayout) findViewById(R.id.layout_ConfigurSec);
- mProvisionDevConfInfo = (LinearLayout) findViewById(R.id.layout_ProvisionDevConf);
- mProvisionCloudConfInfo = (LinearLayout) findViewById(R.id.layout_ProvisionCloudConf);
+ mProvisionDevPropInfo = (LinearLayout) findViewById(R.id.layout_ProvisionDevConf);
+ mProvisionCloudPropInfo = (LinearLayout) findViewById(R.id.layout_ProvisionCloudConf);
mAuthType = (Spinner) findViewById(R.id.spinner_authType);
mEncType = (Spinner) findViewById(R.id.spinner_encType);
public void onCheckedChanged(RadioGroup group, int checkedId) {
mGetConfigurationInfo.setVisibility(View.GONE);
mConfigureSecInfo.setVisibility(View.GONE);
- mProvisionDevConfInfo.setVisibility(View.GONE);
- mProvisionCloudConfInfo.setVisibility(View.GONE);
+ mProvisionDevPropInfo.setVisibility(View.GONE);
+ mProvisionCloudPropInfo.setVisibility(View.GONE);
switch (checkedId) {
case R.id.btn_configurSec:
break;
case R.id.btn_provisionDevConf:
- mProvisionDevConfInfo.setVisibility(View.VISIBLE);
+ mProvisionDevPropInfo.setVisibility(View.VISIBLE);
break;
case R.id.btn_provisionCloudConf:
- mProvisionCloudConfInfo.setVisibility(View.VISIBLE);
+ Log.d(TAG, "Starting login activity");
+ Intent intent = new Intent(EasysetupActivity.this, LoginActivity.class);
+ startActivityForResult(intent, 2);
+ mProvisionCloudPropInfo.setVisibility(View.VISIBLE);
break;
}
}
mSecurityMode.setClickable(false);
mConfigureSecProcess.setEnabled(false);
mGetConfigurationProcess.setEnabled(false);
- mProvisionDevConfProcess.setEnabled(false);
- mProvisionCloudConfProcess.setEnabled(false);
+ mProvisionDevPropProcess.setEnabled(false);
+ mProvisionCloudPropProcess.setEnabled(false);
mEasySetup = EasySetup.getInstance(getApplicationContext());
initOICStack();
+
+ try {
+ m_accountManager = OcPlatform.constructAccountManagerObject(
+ CIServer,
+ EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP));
+
+ Log.e(TAG, "constructAccountManagerObject is successful");
+ } catch (OcException e) {
+ Log.e(TAG, e.toString());
+ Log.e(TAG,"Failed to constructAccountManagerObject");
+ }
+ SharedPreferences settings =
+ getApplicationContext().getSharedPreferences("IoTivityCloud", 0);
+ mAccessToken = settings.getString("accesstoken", null);
+ mRefreshtoken = settings.getString("refreshtoken", null);
+ mUserID = settings.getString("uid", null);
+
+ if(mRefreshtoken == null)
+ {
+ Log.d(TAG, "Can not find refresh token");
+ }
+
+ if(mAccessToken == null && mRefreshtoken == null)
+ {
+ Log.d(TAG, "Starting login activity");
+ Intent intent = new Intent(EasysetupActivity.this, LoginActivity.class);
+ startActivityForResult(intent, 1);
+ }
+ else if(mAccessToken != null)
+ {
+ SignInDevice();
+ }
}
private void initOICStack() {
ModeType.CLIENT_SERVER,
"0.0.0.0", // bind to all available interfaces
0,
- QualityOfService.LOW, filePath + OIC_CLIENT_JSON_DB_FILE);
+ QualityOfService.HIGH, filePath + OIC_CLIENT_JSON_DB_FILE);
try {
/*
* Initialize DataBase
return;
}
- if(ocResource.getHost().contains("coap+tcp")) {
- Log.d(TAG, "Recv Found resource event from tcp port, ignoring URI : " + ocResource.getUri());
+ if(ocResource.getHost().contains("+tcp")) {
+ Log.d(TAG, "Recv Found resource event from tcp port," +
+ "ignoring URI : " + ocResource.getUri());
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d(TAG,"URI of the resource: " + resourceUri);
Log.d(TAG,"Host address of the resource: " + hostAddress);
+ mRemoteEnrollee = mEasySetup.createRemoteEnrollee(ocResource);
+
+ if(mRemoteEnrollee == null) {
+ Log.d(TAG, "Recv Found resource event," +
+ "ignoring URI : " + ocResource.getUri());
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mDiscoverResource.setEnabled(true);
+ }
+ });
+ return;
+ }
+
+ isFirstTime = false;
+ mEnrolleeDeviceID = ocResource.getServerId();
+
runOnUiThread(new Runnable() {
@Override
public void run() {
- mDiscoverResource.setText("Founded");
- mConfigureSecProcess.setEnabled(true);
+ mDiscoverResource.setText("Found");
+ if(mSecurityMode.isChecked()) {
+ mConfigureSecProcess.setEnabled(true);
+ }
mGetConfigurationProcess.setEnabled(true);
- mProvisionDevConfProcess.setEnabled(true);
- mProvisionCloudConfProcess.setEnabled(true);
+ mProvisionDevPropProcess.setEnabled(true);
+ mProvisionCloudPropProcess.setEnabled(true);
}
});
- isFirstTime = false;
- mRemoteEnrollee = mEasySetup.createRemoteEnrollee(ocResource);
}
}
}
});
try {
- String requestUri = OcPlatform.WELL_KNOWN_QUERY + "?rt=ocf.wk.prov";
+ String requestUri = OcPlatform.WELL_KNOWN_QUERY + "?rt=" + ESConstants.OC_RSRVD_ES_RES_TYPE_EASYSETUP;
OcPlatform.findResource("",
requestUri,
EnumSet.of(OcConnectivityType.CT_DEFAULT),
}
});
}
+ else if(securityProvisioningStatus.getESResult()
+ == ESResult.ES_SECURE_RESOURCE_DISCOVERY_FAILURE) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mSecStateText.setText("Not found Secure Resource");
+ mStartConfigureSec.setEnabled(true);
+ }
+ });
+ }
+ else if(securityProvisioningStatus.getESResult()
+ == ESResult.ES_OWNERSHIP_TRANSFER_FAILURE) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mSecStateText.setText("Ownership transfer failed");
+ mStartConfigureSec.setEnabled(true);
+ }
+ });
+ }
else {
runOnUiThread(new Runnable() {
@Override
@Override
public void onProgress(GetConfigurationStatus getConfigurationStatus) {
if(getConfigurationStatus.getESResult() == ESResult.ES_OK) {
-
final EnrolleeConf enrolleeConf = getConfigurationStatus.getEnrolleeConf();
- final DeviceConfig devConf = enrolleeConf.getDeviceConfig();
- final WiFiConfig netInfo = enrolleeConf.getWiFiConfig();
runOnUiThread(new Runnable() {
@Override
public void run() {
mGetconfigurationStateText.setText("Success");
- mDevNameText.setText(devConf.getName());
- mLanguageText.setText(devConf.getLanguage());
- mCountryText.setText(devConf.getCountry());
- setWifiModes(netInfo.getWifiModes());
- setWifiFreq(netInfo.getWifiFreq());
+ mDevNameText.setText(enrolleeConf.getDeviceName());
+ mModelNumberText.setText(enrolleeConf.getModelNumber());
+ setWifiModes(enrolleeConf.getWiFiModes());
+ setWifiFreq(enrolleeConf.getWiFiFreq());
- if(enrolleeConf.isCloudable()) {
+ if(enrolleeConf.isCloudAccessible()) {
mCloudAccessableText.setText("TRUE");
}
else {
}
}
});
-
+ }
+ else if(getConfigurationStatus.getESResult() == ESResult.ES_COMMUNICATION_ERROR)
+ {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mGetconfigurationStateText.setText("Communication Error");
+ mStartGetConfiguration.setEnabled(true);
+ }
+ });
}
else {
runOnUiThread(new Runnable() {
}
private void addListenerForStartProvisionDevProp() {
- mStartProvisionDevConf.setOnClickListener(new View.OnClickListener() {
+ mStartProvisionDevProp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread thread = new Thread() {
runOnUiThread(new Runnable() {
@Override
public void run() {
- mProvisionDevConfState.setText("Progress");
- mStartProvisionDevConf.setEnabled(false);
+ mProvisionDevPropState.setText("Progress");
+ mStartProvisionDevProp.setEnabled(false);
}
});
WIFI_ENCTYPE.fromInt(mEncType.getSelectedItemPosition());
String inputLanguage = mInputLanguageText.getText().toString();
String inputCountry = mInputCountryText.getText().toString();
+ String inputLocation = mInputLocationText.getText().toString();
- DeviceProp deviceProp =
- new DeviceProp(enrollerSSID, enrollerPW, authType, encType,
- inputLanguage, inputCountry);
+ DeviceProp deviceProp = new DeviceProp();
+ deviceProp.setWiFiProp(enrollerSSID, enrollerPW, authType, encType);
+ deviceProp.setDevConfProp(inputLanguage, inputCountry, inputLocation);
mRemoteEnrollee.provisionDeviceProperties(deviceProp, new DevicePropProvisioningCallback() {
@Override
@Override
public void run() {
if(result.equals(ESResult.ES_OK)) {
- mProvisionDevConfState.setText("Success");
+ mProvisionDevPropState.setText("Success");
}
else if(result.equals(ESResult.ES_ERROR)) {
- mProvisionDevConfState.setText("Failed");
+ mProvisionDevPropState.setText("Failed");
}
- else if(result.equals(ESResult.ES_UNAUTHORIZED)) {
- mProvisionDevConfState.setText("Failed. Need SecProv");
+ else if(result.equals(ESResult.ES_COMMUNICATION_ERROR)) {
+ mProvisionDevPropState.setText("Communication Error");
}
- mStartProvisionDevConf.setEnabled(true);
+ mStartProvisionDevProp.setEnabled(true);
}
});
}
runOnUiThread(new Runnable() {
@Override
public void run() {
- mProvisionDevConfState.setText("Failed");
- mStartProvisionDevConf.setEnabled(true);
+ mProvisionDevPropState.setText("Failed");
+ mStartProvisionDevProp.setEnabled(true);
}
});
}
}
private void addListenerForStartProvisionCloudProp() {
- mStartProvisionCloudConf.setOnClickListener(new View.OnClickListener() {
+ mStartProvisionCloudProp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread thread = new Thread() {
runOnUiThread(new Runnable() {
@Override
public void run() {
- mProvisionCloudConfState.setText("Progress");
- mStartProvisionCloudConf.setEnabled(false);
+ mProvisionCloudPropState.setText("Progress");
+ mStartProvisionCloudProp.setEnabled(false);
}
});
String authProvider = mAuthProviderText.getText().toString();
String ciserver = mCIServerText.getText().toString();
- CloudProp cloudProp =
- new CloudProp(authCode, authProvider, ciserver);
+ CloudProp cloudProp = new CloudProp();
+ cloudProp.setCloudProp(authCode, authProvider, ciserver);
+ cloudProp.setCloudID("f002ae8b-c42c-40d3-8b8d-1927c17bd1b3");
+ cloudProp.setCredID(1);
mRemoteEnrollee.provisionCloudProperties(cloudProp, new CloudPropProvisioningCallback() {
@Override
public void onProgress(CloudPropProvisioningStatus cloudProvisioningStatus) {
final ESResult result = cloudProvisioningStatus.getESResult();
- final ESCloudProvState state = cloudProvisioningStatus.getESCloudState();
runOnUiThread(new Runnable() {
@Override
public void run() {
- if(result.equals(ESResult.ES_OK)) {
- if(state.equals(ESCloudProvState.ES_CLOUD_ENROLLEE_FOUND)) {
- mProvisionCloudConfState.setText("Found Resource");
- }
- else if(state.equals(ESCloudProvState.ES_CLOUD_PROVISIONING_SUCCESS)) {
- mProvisionCloudConfState.setText("Success");
- }
+ if(result.equals(ESResult.ES_ENROLLEE_DISCOVERY_FAILURE)) {
+ mProvisionCloudPropState.setText("Not Found Resource");
+ }
+ else if(result.equals(ESResult.ES_OK)) {
+ mProvisionCloudPropState.setText("Cloud Provisioning succeeds");
+ }
+ else if(result.equals(ESResult.ES_ACL_PROVISIONING_FAILURE)){
+ mProvisionCloudPropState.setText("ACL-provisioning fails");
+ }
+ else if(result.equals(ESResult.ES_CERT_PROVISIONING_FAILURE)){
+ mProvisionCloudPropState.setText("CERT-provisioning fails");
+ }
+ else if(result.equals(ESResult.ES_COMMUNICATION_ERROR)){
+ mProvisionCloudPropState.setText("Communication Error");
}
else {
- if(state.equals(ESCloudProvState.ES_CLOUD_ENROLLEE_NOT_FOUND)) {
- mProvisionCloudConfState.setText("Not Found Resource");
- }
- else if(state.equals(ESCloudProvState.ES_CLOUD_PROVISIONING_ERROR)) {
- mProvisionCloudConfState.setText("Failed");
- }
- mStartProvisionCloudConf.setEnabled(true);
+ mProvisionCloudPropState.setText("Cloud Provisioning fails");
}
}
});
runOnUiThread(new Runnable() {
@Override
public void run() {
- mProvisionCloudConfState.setText("Failed");
- mStartProvisionCloudConf.setEnabled(true);
+ mProvisionCloudPropState.setText("Failed");
+ mStartProvisionCloudProp.setEnabled(true);
}
});
}
}
@Override
+ public void onPresence(OcPresenceStatus status, int sequence, String host) {
+ final String strStaus = status.getValue();
+ Log.d(TAG, "Presence response: " + strStaus + " sequence: " + sequence + " host: " + host);
+ runOnUiThread(new Runnable()
+ {
+ public void run() {
+ Toast.makeText(EasysetupActivity.this, "Easy-Setup completed", Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if(resultCode==RESULT_OK && requestCode==1){
+ mAuthCode = data.getStringExtra("authCode");
+ mAuthProvider = data.getStringExtra("authProvider");
+ String text = "Received authCode= " + mAuthCode;
+ Log.d(TAG, text);
+ SignUpDevice();
+ }
+ else if(resultCode==RESULT_OK && requestCode==2)
+ {
+ mEnrolleeAuthCode = data.getStringExtra("authCode");
+ mAuthProvider = data.getStringExtra("authProvider");
+ mAuthCodeText.setText(mEnrolleeAuthCode);
+ mAuthProviderText.setText(mAuthProvider);
+ mAuthCodeText.setEnabled(false);
+ mAuthProviderText.setEnabled(false);
+
+ subscribeDevicePresence();
+ }
+ }
+
+ OcResource.OnPostListener onRefreshTokenPost = new OcResource.OnPostListener() {
+ @Override
+ public void onPostCompleted(List<OcHeaderOption> list, OcRepresentation ocRepresentation) {
+ Log.d(TAG, "onRefreshTokenPost..");
+ try {
+ mAccessToken = ocRepresentation.getValue("accesstoken");
+ mRefreshtoken = ocRepresentation.getValue("refreshtoken");
+
+ saveCloudTokenAtSharedPreferences();
+ }
+ catch (OcException e)
+ {
+ e.printStackTrace();
+ }
+
+ SignInDevice();
+ }
+
+ @Override
+ public void onPostFailed(Throwable throwable) {
+ Log.d(TAG, "onRefreshTokenPost failed..");
+ }
+ };
+
+ public void RefreshToken() {
+ try {
+ OcResource authResource = OcPlatform.constructResourceObject(CIServer, "/.well-known/ocf/account/tokenrefresh",
+ EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP, OcConnectivityType.CT_IP_USE_V4),
+ false, Arrays.asList("oic.wk.account"), Arrays.asList(OcPlatform.DEFAULT_INTERFACE));
+ OcRepresentation rep = new OcRepresentation();
+
+ runOnUiThread(new Runnable()
+ {
+ public void run() {
+ Toast.makeText(EasysetupActivity.this, "RefreshToken in progress..", Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ rep.setValue("di", deviceID);
+ rep.setValue("granttype", "refresh_token");
+ rep.setValue("refreshtoken", mRefreshtoken);
+ rep.setValue("uid", mUserID);
+ authResource.post(rep, new HashMap<String, String>(), onRefreshTokenPost);
+ }
+ catch(OcException e)
+ {
+ e.printStackTrace();
+ }
+
+ Log.d(TAG, "No error while executing login");
+ }
+
+ private void saveCloudTokenAtSharedPreferences() {
+ Log.d(TAG, "accesstoken: " + mAccessToken);
+ SharedPreferences settings = getApplicationContext().getSharedPreferences("IoTivityCloud", 0);
+ SharedPreferences.Editor editor = settings.edit();
+ editor.putString("accesstoken", mAccessToken);
+ editor.putString("refreshtoken", mRefreshtoken);
+ editor.putString("uid", mUserID);
+
+ if(editor.commit() == true)
+ Log.d(TAG, "accesstoken saved");
+ else
+ Log.d(TAG, "accesstoken not saved");
+ }
+
+ OcAccountManager.OnPostListener onSignUpPost = new OcAccountManager.OnPostListener() {
+ @Override
+ public void onPostCompleted(List<OcHeaderOption> list, OcRepresentation ocRepresentation) {
+ Log.d(TAG, "onSignUpPost..");
+ try {
+ runOnUiThread(new Runnable()
+ {
+ public void run() {
+ Toast.makeText(EasysetupActivity.this, "Sign-up completed", Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ mAccessToken = ocRepresentation.getValue("accesstoken");
+ mRefreshtoken = ocRepresentation.getValue("refreshtoken");
+ mUserID = ocRepresentation.getValue("uid");
+
+ if(mAccessToken != null)
+ {
+ saveCloudTokenAtSharedPreferences();
+ SignInDevice();
+ }
+ //TODO : save certificate
+ }
+ catch (OcException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onPostFailed(Throwable throwable) {
+ Log.d(TAG, "onSignUpPost failed.. : " + throwable.getMessage());
+ }
+ };
+
+ private void SignUpDevice() {
+ try {
+ Log.d(TAG, "SignUpDevice..");
+
+ runOnUiThread(new Runnable()
+ {
+ public void run() {
+ Toast.makeText(EasysetupActivity.this, "SignUpDevice in progress..", Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ if(m_accountManager != null) {
+ m_accountManager.signUp(mAuthProvider, mAuthCode, onSignUpPost);
+ }
+ }
+ catch(OcException e)
+ {
+ e.printStackTrace();
+ }
+
+ Log.d(TAG, "No error while executing SignUp");
+ }
+
+ OcAccountManager.OnPostListener onSignInPost = new OcAccountManager.OnPostListener() {
+ @Override
+ public void onPostCompleted(List<OcHeaderOption> list, OcRepresentation ocRepresentation) {
+ Log.d(TAG, "onSignInPost..");
+
+ runOnUiThread(new Runnable()
+ {
+ public void run() {
+ Toast.makeText(EasysetupActivity.this, "Sign-in completed", Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+ @Override
+ public void onPostFailed(Throwable ex) {
+ if (ex instanceof OcException) {
+ OcException ocEx = (OcException) ex;
+ ErrorCode errCode = ocEx.getErrorCode();
+ Log.e(TAG, ocEx.getMessage());
+ if (ErrorCode.UNAUTHORIZED_REQ != errCode) {
+ RefreshToken();
+ }
+ }
+ }
+ };
+
+ private void SignInDevice() {
+ try {
+ Log.d(TAG, "SignInDevice..");
+
+ runOnUiThread(new Runnable()
+ {
+ public void run() {
+ Toast.makeText(EasysetupActivity.this, "SignInDevice in progress..", Toast.LENGTH_SHORT).show();
+ }
+ });
+ if(m_accountManager != null) {
+ m_accountManager.signIn(mUserID, mAccessToken, onSignInPost);
+ }
+ }
+ catch(OcException e)
+ {
+ e.printStackTrace();
+ }
+
+ Log.d(TAG, "No error while executing login");
+ }
+
+ @Override
+ public void onObserveCompleted(List<OcHeaderOption> list, OcRepresentation ocRepresentation, int i) {
+ Log.d(TAG,"onObserveCompleted");
+ }
+
+ @Override
+ public void onObserveFailed(Throwable throwable) {
+ Log.d(TAG,"onObserveFailed");
+ }
+
+ public void subscribeDevicePresence()
+ {
+ List<String> deviceIDs = new ArrayList<String>();
+ deviceIDs.add(mEnrolleeDeviceID);
+
+ try {
+
+ OcPlatform.subscribeDevicePresence(CIServer, deviceIDs, EnumSet.of(OcConnectivityType.
+ CT_ADAPTER_TCP), this);
+ } catch(OcException e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+
+ @Override
protected void onDestroy() {
super.onDestroy();
}