Skip to content

Commit 5b2d212

Browse files
committed
- Changed Security to Sec1 for local device features.
- Added backward compatibility means app will use Sec0 for old firmwares.
1 parent ecea65d commit 5b2d212

9 files changed

+195
-30
lines changed

app/src/main/java/com/espressif/AppConstants.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class AppConstants {
2626
public static final String KEY_STATUS_MSG = "status_msg";
2727
public static final String KEY_DEVICE_INFO = "device_info";
2828
public static final String KEY_DEVICE_LANGUAGE = "device_language";
29-
29+
public static final String KEY_IS_NEW_FIRMWARE = "is_new_fw";
30+
3031
public static final String ESP_PREFERENCES = "Esp_Preferences";
3132
}

app/src/main/java/com/espressif/ui/activities/AlexaActivity.java

+13-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import android.net.Uri;
55
import android.os.Bundle;
66
import android.os.Vibrator;
7+
78
import androidx.appcompat.app.AppCompatActivity;
89
import androidx.appcompat.widget.Toolbar;
10+
911
import android.text.SpannableString;
1012
import android.text.Spanned;
1113
import android.text.TextPaint;
@@ -19,9 +21,11 @@
1921
import android.view.View;
2022
import android.widget.TextView;
2123

24+
import com.espressif.AppConstants;
2225
import com.espressif.provision.R;
2326
import com.espressif.provision.security.Security;
2427
import com.espressif.provision.security.Security0;
28+
import com.espressif.provision.security.Security1;
2529
import com.espressif.provision.session.Session;
2630
import com.espressif.provision.transport.ResponseListener;
2731
import com.espressif.provision.transport.SoftAPTransport;
@@ -47,7 +51,7 @@ public class AlexaActivity extends AppCompatActivity {
4751
private String deviceName;
4852

4953
private TextView txtDeviceName;
50-
private boolean isProv = false;
54+
private boolean isProv = false, isNewFw = false;
5155

5256
@Override
5357
public void onCreate(Bundle savedInstanceState) {
@@ -61,6 +65,7 @@ public void onCreate(Bundle savedInstanceState) {
6165
hostAddress = intent.getStringExtra(LoginWithAmazon.KEY_HOST_ADDRESS);
6266
deviceName = intent.getStringExtra(LoginWithAmazon.KEY_DEVICE_NAME);
6367
isProv = intent.getBooleanExtra("is_prov", false);
68+
isNewFw = intent.getBooleanExtra(AppConstants.KEY_IS_NEW_FIRMWARE, false);
6469
initViews();
6570

6671
if (!TextUtils.isEmpty(deviceName)) {
@@ -70,9 +75,13 @@ public void onCreate(Bundle savedInstanceState) {
7075
if (!isProv) {
7176

7277
transport = new SoftAPTransport(hostAddress + ":80");
73-
security = new Security0();
74-
session = new Session(transport, security);
7578

79+
if (isNewFw) {
80+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
81+
} else {
82+
security = new Security0();
83+
}
84+
session = new Session(transport, security);
7685
session.init(null);
7786

7887
session.sessionListener = new Session.SessionListener() {
@@ -249,6 +258,7 @@ private void goToLoginActivity() {
249258
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, hostAddress);
250259
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_DEVICE_NAME, deviceName);
251260
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_IS_PROVISIONING, false);
261+
alexaProvisioningIntent.putExtra(AppConstants.KEY_IS_NEW_FIRMWARE, isNewFw);
252262
startActivity(alexaProvisioningIntent);
253263
}
254264
}

app/src/main/java/com/espressif/ui/activities/DeviceActivity.java

+29-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import android.content.Intent;
55
import android.graphics.Color;
66
import android.os.Bundle;
7+
78
import androidx.annotation.Nullable;
89
import androidx.appcompat.app.AlertDialog;
910
import androidx.appcompat.app.AppCompatActivity;
1011
import androidx.appcompat.widget.Toolbar;
12+
1113
import android.text.TextUtils;
1214
import android.util.Log;
1315
import android.view.LayoutInflater;
@@ -22,6 +24,7 @@
2224
import com.espressif.provision.R;
2325
import com.espressif.provision.security.Security;
2426
import com.espressif.provision.security.Security0;
27+
import com.espressif.provision.security.Security1;
2528
import com.espressif.provision.session.Session;
2629
import com.espressif.provision.transport.ResponseListener;
2730
import com.espressif.provision.transport.SoftAPTransport;
@@ -54,6 +57,7 @@ public class DeviceActivity extends AppCompatActivity {
5457
private DeviceInfo deviceInfo;
5558
private String deviceHostAddress;
5659
private String deviceName;
60+
private boolean isNewFw;
5761

5862
private Session session;
5963
private Security security;
@@ -70,6 +74,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
7074
deviceHostAddress = intent.getStringExtra(LoginWithAmazon.KEY_HOST_ADDRESS);
7175
deviceName = intent.getStringExtra(LoginWithAmazon.KEY_DEVICE_NAME);
7276
deviceInfo = intent.getParcelableExtra(AppConstants.KEY_DEVICE_INFO);
77+
isNewFw = deviceInfo.isNewFirmware();
7378

7479
toolbar = findViewById(R.id.toolbar);
7580
toolbar.setTitle(deviceName);
@@ -96,7 +101,11 @@ protected void onResume() {
96101
super.onResume();
97102

98103
transport = new SoftAPTransport(deviceHostAddress + ":80");
99-
security = new Security0();
104+
if (deviceInfo.isNewFirmware()) {
105+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
106+
} else {
107+
security = new Security0();
108+
}
100109
session = new Session(transport, security);
101110
session.init(null);
102111

@@ -169,7 +178,11 @@ public void onStopTrackingTouch(final SeekBar seekBar) {
169178

170179
Log.e(TAG, "onStopTrackingTouch : " + seekBar.getProgress());
171180
transport = new SoftAPTransport(deviceHostAddress + ":80");
172-
security = new Security0();
181+
if (deviceInfo.isNewFirmware()) {
182+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
183+
} else {
184+
security = new Security0();
185+
}
173186
session = new Session(transport, security);
174187
session.init(null);
175188

@@ -216,7 +229,7 @@ public void onClick(View v) {
216229

217230
Intent languageIntent = new Intent(DeviceActivity.this, LanguageListActivity.class);
218231
languageIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, deviceHostAddress);
219-
languageIntent.putExtra(AppConstants.KEY_DEVICE_LANGUAGE, deviceInfo.getLanguage());
232+
languageIntent.putExtra(AppConstants.KEY_DEVICE_INFO, deviceInfo);
220233
startActivityForResult(languageIntent, REQUEST_CODE_LANGUAGE);
221234
}
222235
};
@@ -272,10 +285,18 @@ public void onClick(DialogInterface dialog, int which) {
272285
if (TextUtils.isEmpty(newDeviceName)) {
273286
Toast.makeText(DeviceActivity.this, R.string.error_device_name_empty, Toast.LENGTH_SHORT).show();
274287
return;
288+
} else if (newDeviceName.contains("::")) {
289+
String errMsg = "Please enter a valid name which does not contain ::";
290+
Toast.makeText(DeviceActivity.this, errMsg, Toast.LENGTH_SHORT).show();
291+
return;
275292
}
276293

277294
transport = new SoftAPTransport(deviceHostAddress + ":80");
278-
security = new Security0();
295+
if (deviceInfo.isNewFirmware()) {
296+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
297+
} else {
298+
security = new Security0();
299+
}
279300
session = new Session(transport, security);
280301
session.init(null);
281302

@@ -561,6 +582,7 @@ public void onSuccess(byte[] returnData) {
561582
if (device != null) {
562583

563584
deviceInfo = device;
585+
deviceInfo.setNewFirmware(isNewFw);
564586
runOnUiThread(new Runnable() {
565587

566588
@Override
@@ -612,6 +634,7 @@ private DeviceInfo processDeviceInfoResponse(byte[] responseData) {
612634
deviceInfo.setEndToneEnabled(specificInfo.getEORAudioCue());
613635
deviceInfo.setVolume(specificInfo.getVolume());
614636
deviceInfo.setLanguage(specificInfo.getAssistantLangValue());
637+
deviceInfo.setNewFirmware(isNewFw);
615638
}
616639

617640
} catch (InvalidProtocolBufferException e) {
@@ -650,6 +673,7 @@ private void goToLoginActivity() {
650673
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, deviceHostAddress);
651674
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_DEVICE_NAME, deviceName);
652675
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_IS_PROVISIONING, false);
676+
alexaProvisioningIntent.putExtra(AppConstants.KEY_IS_NEW_FIRMWARE, deviceInfo.isNewFirmware());
653677
startActivity(alexaProvisioningIntent);
654678
}
655679

@@ -658,6 +682,7 @@ private void goToAlexaActivity() {
658682
Intent alexaIntent = new Intent(getApplicationContext(), AlexaActivity.class);
659683
alexaIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, deviceHostAddress);
660684
alexaIntent.putExtra(LoginWithAmazon.KEY_DEVICE_NAME, deviceName);
685+
alexaIntent.putExtra(AppConstants.KEY_IS_NEW_FIRMWARE, deviceInfo.isNewFirmware());
661686
alexaIntent.putExtras(getIntent());
662687
startActivity(alexaIntent);
663688
}

app/src/main/java/com/espressif/ui/activities/LanguageListActivity.java

+16-7
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,27 @@
33
import android.content.Intent;
44
import android.graphics.Color;
55
import android.os.Bundle;
6-
import androidx.annotation.Nullable;
7-
import androidx.appcompat.app.AppCompatActivity;
8-
import androidx.appcompat.widget.Toolbar;
96
import android.util.Log;
107
import android.view.View;
118
import android.widget.AdapterView;
129
import android.widget.ListView;
1310
import android.widget.Toast;
1411

12+
import androidx.annotation.Nullable;
13+
import androidx.appcompat.app.AppCompatActivity;
14+
import androidx.appcompat.widget.Toolbar;
15+
1516
import com.espressif.AppConstants;
1617
import com.espressif.provision.R;
1718
import com.espressif.provision.security.Security;
1819
import com.espressif.provision.security.Security0;
20+
import com.espressif.provision.security.Security1;
1921
import com.espressif.provision.session.Session;
2022
import com.espressif.provision.transport.ResponseListener;
2123
import com.espressif.provision.transport.SoftAPTransport;
2224
import com.espressif.provision.transport.Transport;
2325
import com.espressif.ui.adapters.LanguageListAdapter;
26+
import com.espressif.ui.models.DeviceInfo;
2427
import com.espressif.ui.models.Language;
2528
import com.google.protobuf.InvalidProtocolBufferException;
2629

@@ -38,7 +41,7 @@ public class LanguageListActivity extends AppCompatActivity {
3841
private ArrayList<Language> languages;
3942
private int selectedLang;
4043
private SweetAlertDialog pDialog;
41-
44+
private DeviceInfo deviceInfo;
4245
private String deviceHostAddress;
4346

4447
private Session session;
@@ -55,8 +58,10 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
5558
toolbar.setTitle(R.string.title_activity_language);
5659
setSupportActionBar(toolbar);
5760

58-
deviceHostAddress = getIntent().getStringExtra(LoginWithAmazon.KEY_HOST_ADDRESS);
59-
selectedLang = getIntent().getExtras().getInt(AppConstants.KEY_DEVICE_LANGUAGE);
61+
Intent intent = getIntent();
62+
deviceInfo = intent.getParcelableExtra(AppConstants.KEY_DEVICE_INFO);
63+
deviceHostAddress = intent.getStringExtra(LoginWithAmazon.KEY_HOST_ADDRESS);
64+
selectedLang = deviceInfo.getLanguage();
6065

6166
initViews();
6267

@@ -66,7 +71,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
6671
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
6772

6873
transport = new SoftAPTransport(deviceHostAddress + ":80");
69-
security = new Security0();
74+
if (deviceInfo.isNewFirmware()) {
75+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
76+
} else {
77+
security = new Security0();
78+
}
7079
session = new Session(transport, security);
7180
session.init(null);
7281

app/src/main/java/com/espressif/ui/activities/LoginWithAmazon.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
import android.graphics.Color;
1818
import android.os.Bundle;
1919
import android.os.Vibrator;
20+
2021
import com.google.android.material.snackbar.Snackbar;
22+
2123
import androidx.appcompat.app.AppCompatActivity;
2224
import androidx.appcompat.widget.Toolbar;
25+
2326
import android.text.TextUtils;
2427
import android.util.Log;
2528
import android.view.HapticFeedbackConstants;
@@ -78,7 +81,7 @@ public class LoginWithAmazon extends AppCompatActivity {
7881
public String[] DeviceDetails = new String[3];
7982
private String hostAddress;
8083
private String deviceName;
81-
private boolean isProvisioning = false;
84+
private boolean isProvisioning = false, isNewFw = false;
8285
private String productId;
8386
private String productDSN;
8487
private String codeVerifier;
@@ -100,6 +103,7 @@ protected void onCreate(Bundle savedInstanceState) {
100103
hostAddress = intent.getStringExtra(KEY_HOST_ADDRESS);
101104
deviceName = intent.getStringExtra(KEY_DEVICE_NAME);
102105
isProvisioning = intent.getBooleanExtra(KEY_IS_PROVISIONING, false);
106+
isNewFw = intent.getBooleanExtra(AppConstants.KEY_IS_NEW_FIRMWARE, false);
103107

104108
Toolbar toolbar = findViewById(R.id.toolbar);
105109
toolbar.setTitle(deviceName);
@@ -127,7 +131,12 @@ protected void onCreate(Bundle savedInstanceState) {
127131

128132
Log.d(TAG, "Host Address : " + hostAddress);
129133
transport = new SoftAPTransport(hostAddress + ":80");
130-
security = new Security0();
134+
135+
if (isNewFw) {
136+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
137+
} else {
138+
security = new Security0();
139+
}
131140
}
132141

133142
session = new Session(transport, security);
@@ -490,6 +499,7 @@ private void goToAlexaActivity() {
490499
Intent alexaIntent = new Intent(getApplicationContext(), AlexaActivity.class);
491500
alexaIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, hostAddress);
492501
alexaIntent.putExtra(LoginWithAmazon.KEY_DEVICE_NAME, deviceName);
502+
alexaIntent.putExtra(AppConstants.KEY_IS_NEW_FIRMWARE, isNewFw);
493503
alexaIntent.putExtras(getIntent());
494504
startActivity(alexaIntent);
495505
}

0 commit comments

Comments
 (0)