Skip to content

Commit ea45b2c

Browse files
committed
Merge branch 'feature/avs_ble_support_idf_4_0' into 'versions/avs-ble'
Added support for IDF 4.0 See merge request idf/esp-idf-provisioning-android!23
2 parents b599fea + d72174f commit ea45b2c

13 files changed

+485
-509
lines changed

app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ android {
1717
applicationId "com.espressif.provbleavs"
1818
minSdkVersion 21
1919
targetSdkVersion 28
20-
versionCode 13
21-
versionName "2.1"
20+
versionCode 15
21+
versionName "2.1.1"
2222
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2323
signingConfig signingConfigs.config
2424
}

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

+5-50
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ public class AlexaActivity extends AppCompatActivity {
4343

4444
private AvsEmberLightText txtAlexaAppLink;
4545

46-
private Session session;
47-
private Security security;
48-
private Transport transport;
49-
5046
private String hostAddress;
5147
private String deviceName;
5248

@@ -71,32 +67,6 @@ public void onCreate(Bundle savedInstanceState) {
7167
if (!TextUtils.isEmpty(deviceName)) {
7268
txtDeviceName.setText(deviceName);
7369
}
74-
75-
if (!isProv) {
76-
77-
transport = new SoftAPTransport(hostAddress + ":80");
78-
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);
85-
session.init(null);
86-
87-
session.sessionListener = new Session.SessionListener() {
88-
89-
@Override
90-
public void OnSessionEstablished() {
91-
Log.d(TAG, "Session established");
92-
}
93-
94-
@Override
95-
public void OnSessionEstablishFailed(Exception e) {
96-
Log.d(TAG, "Session failed");
97-
}
98-
};
99-
}
10070
}
10171

10272
@Override
@@ -122,10 +92,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
12292
//noinspection SimplifiableIfStatement
12393
if (id == R.id.action_sign_out) {
12494

125-
if (session.isEstablished()) {
126-
sendSignOutCommand();
127-
}
95+
sendSignOutCommand();
12896
return true;
97+
12998
} else if (id == R.id.action_done) {
13099

131100
finish();
@@ -185,20 +154,6 @@ public void openApplication(String packageN) {
185154
}
186155
}
187156

188-
private View.OnClickListener signOutBtnClickListener = new View.OnClickListener() {
189-
190-
@Override
191-
public void onClick(View v) {
192-
193-
Vibrator vib = (Vibrator) getSystemService(VIBRATOR_SERVICE);
194-
vib.vibrate(HapticFeedbackConstants.VIRTUAL_KEY);
195-
196-
if (session.isEstablished()) {
197-
sendSignOutCommand();
198-
}
199-
}
200-
};
201-
202157
private void sendSignOutCommand() {
203158

204159
Avsconfig.CmdSignInStatus configRequest = Avsconfig.CmdSignInStatus.newBuilder()
@@ -210,8 +165,8 @@ private void sendSignOutCommand() {
210165
.setCmdSigninStatus(configRequest)
211166
.build();
212167

213-
byte[] message = security.encrypt(payload.toByteArray());
214-
transport.sendConfigData(AVS_CONFIG_PATH, message, new ResponseListener() {
168+
byte[] message = ScanLocalDevices.security.encrypt(payload.toByteArray());
169+
ScanLocalDevices.transport.sendConfigData(AVS_CONFIG_PATH, message, new ResponseListener() {
215170

216171
@Override
217172
public void onSuccess(byte[] returnData) {
@@ -237,7 +192,7 @@ public void onFailure(Exception e) {
237192
private Avsconfig.AVSConfigStatus processAVSConfigResponse(byte[] responseData) {
238193

239194
Avsconfig.AVSConfigStatus status = Avsconfig.AVSConfigStatus.InvalidState;
240-
byte[] decryptedData = this.security.decrypt(responseData);
195+
byte[] decryptedData = ScanLocalDevices.security.decrypt(responseData);
241196

242197
try {
243198

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

+8-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@
3030
import android.os.Handler;
3131
import android.os.ParcelUuid;
3232
import android.os.Vibrator;
33+
3334
import androidx.appcompat.app.AlertDialog;
3435
import androidx.appcompat.app.AppCompatActivity;
3536
import androidx.appcompat.widget.Toolbar;
37+
3638
import android.util.Log;
3739
import android.view.HapticFeedbackConstants;
3840
import android.view.View;
@@ -88,8 +90,8 @@ public class BLEProvisionLanding extends AppCompatActivity {
8890
private ProgressBar progressBar;
8991
private ListView listView;
9092

91-
private Session session;
92-
private Security security;
93+
public static Session session;
94+
public static Security security;
9395
public static BLETransport bleTransport;
9496
private BLETransport.BLETransportListener transportListener;
9597

@@ -321,6 +323,10 @@ private void startScan() {
321323
if (bleTransport != null) {
322324
bleTransport.disconnect();
323325
}
326+
security = null;
327+
session = null;
328+
Log.e(TAG, "Make session null");
329+
isBleWorkDone = false;
324330

325331
deviceList.clear();
326332
bluetoothDevices.clear();

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

+20-99
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44
import android.content.Intent;
55
import android.graphics.Color;
66
import android.os.Bundle;
7-
8-
import androidx.annotation.Nullable;
9-
import androidx.appcompat.app.AlertDialog;
10-
import androidx.appcompat.app.AppCompatActivity;
11-
import androidx.appcompat.widget.Toolbar;
12-
137
import android.text.TextUtils;
148
import android.util.Log;
159
import android.view.LayoutInflater;
@@ -20,15 +14,14 @@
2014
import android.widget.TextView;
2115
import android.widget.Toast;
2216

17+
import androidx.annotation.Nullable;
18+
import androidx.appcompat.app.AlertDialog;
19+
import androidx.appcompat.app.AppCompatActivity;
20+
import androidx.appcompat.widget.Toolbar;
21+
2322
import com.espressif.AppConstants;
2423
import com.espressif.provision.R;
25-
import com.espressif.provision.security.Security;
26-
import com.espressif.provision.security.Security0;
27-
import com.espressif.provision.security.Security1;
28-
import com.espressif.provision.session.Session;
2924
import com.espressif.provision.transport.ResponseListener;
30-
import com.espressif.provision.transport.SoftAPTransport;
31-
import com.espressif.provision.transport.Transport;
3225
import com.espressif.ui.models.DeviceInfo;
3326
import com.google.protobuf.InvalidProtocolBufferException;
3427

@@ -59,10 +52,6 @@ public class DeviceActivity extends AppCompatActivity {
5952
private String deviceName;
6053
private boolean isNewFw;
6154

62-
private Session session;
63-
private Security security;
64-
private Transport transport;
65-
6655
private boolean isAvsSignedIn = false;
6756

6857
@Override
@@ -100,30 +89,7 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten
10089
protected void onResume() {
10190
super.onResume();
10291

103-
transport = new SoftAPTransport(deviceHostAddress + ":80");
104-
if (deviceInfo.isNewFirmware()) {
105-
security = new Security1(getResources().getString(R.string.proof_of_possesion));
106-
} else {
107-
security = new Security0();
108-
}
109-
session = new Session(transport, security);
110-
session.init(null);
111-
112-
session.sessionListener = new Session.SessionListener() {
113-
114-
@Override
115-
public void OnSessionEstablished() {
116-
117-
Log.d(TAG, "Session established");
118-
getDeviceInfo();
119-
}
120-
121-
@Override
122-
public void OnSessionEstablishFailed(Exception e) {
123-
Log.d(TAG, "Session failed");
124-
e.printStackTrace();
125-
}
126-
};
92+
getDeviceInfo();
12793
}
12894

12995
private void initViews() {
@@ -177,29 +143,7 @@ public void onStartTrackingTouch(SeekBar seekBar) {
177143
public void onStopTrackingTouch(final SeekBar seekBar) {
178144

179145
Log.e(TAG, "onStopTrackingTouch : " + seekBar.getProgress());
180-
transport = new SoftAPTransport(deviceHostAddress + ":80");
181-
if (deviceInfo.isNewFirmware()) {
182-
security = new Security1(getResources().getString(R.string.proof_of_possesion));
183-
} else {
184-
security = new Security0();
185-
}
186-
session = new Session(transport, security);
187-
session.init(null);
188-
189-
session.sessionListener = new Session.SessionListener() {
190-
191-
@Override
192-
public void OnSessionEstablished() {
193-
194-
Log.d(TAG, "Session established");
195-
changeVolume(seekBar.getProgress());
196-
}
197-
198-
@Override
199-
public void OnSessionEstablishFailed(Exception e) {
200-
Log.d(TAG, "Session failed");
201-
}
202-
};
146+
changeVolume(seekBar.getProgress());
203147
}
204148
};
205149

@@ -291,30 +235,7 @@ public void onClick(DialogInterface dialog, int which) {
291235
return;
292236
}
293237

294-
transport = new SoftAPTransport(deviceHostAddress + ":80");
295-
if (deviceInfo.isNewFirmware()) {
296-
security = new Security1(getResources().getString(R.string.proof_of_possesion));
297-
} else {
298-
security = new Security0();
299-
}
300-
session = new Session(transport, security);
301-
session.init(null);
302-
303-
final String finalNewDeviceName = newDeviceName;
304-
session.sessionListener = new Session.SessionListener() {
305-
306-
@Override
307-
public void OnSessionEstablished() {
308-
309-
Log.d(TAG, "Session established");
310-
setDeviceName(finalNewDeviceName);
311-
}
312-
313-
@Override
314-
public void OnSessionEstablishFailed(Exception e) {
315-
Log.d(TAG, "Session failed");
316-
}
317-
};
238+
setDeviceName(newDeviceName);
318239
}
319240
});
320241

@@ -349,9 +270,9 @@ public void run() {
349270
.setCmdUserVisibleName(changeNameRequest)
350271
.build();
351272

352-
byte[] message = this.security.encrypt(payload.toByteArray());
273+
byte[] message = ScanLocalDevices.security.encrypt(payload.toByteArray());
353274

354-
this.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
275+
ScanLocalDevices.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
355276

356277
@Override
357278
public void onSuccess(byte[] returnData) {
@@ -391,7 +312,7 @@ public void onFailure(Exception e) {
391312
private Avsconfig.AVSConfigStatus processDeviceNameChangeResponse(byte[] responseData) {
392313

393314
Avsconfig.AVSConfigStatus status = Avsconfig.AVSConfigStatus.InvalidState;
394-
byte[] decryptedData = this.security.decrypt(responseData);
315+
byte[] decryptedData = ScanLocalDevices.security.decrypt(responseData);
395316

396317
try {
397318

@@ -427,8 +348,8 @@ public void run() {
427348
.setCmdSetVolume(volumeChangeRequest)
428349
.build();
429350

430-
byte[] message = this.security.encrypt(payload.toByteArray());
431-
this.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
351+
byte[] message = ScanLocalDevices.security.encrypt(payload.toByteArray());
352+
ScanLocalDevices.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
432353

433354
@Override
434355
public void onSuccess(byte[] returnData) {
@@ -463,7 +384,7 @@ public void onFailure(Exception e) {
463384
private Avsconfig.AVSConfigStatus processVolumeChangeResponse(byte[] responseData) {
464385

465386
Avsconfig.AVSConfigStatus status = Avsconfig.AVSConfigStatus.InvalidState;
466-
byte[] decryptedData = this.security.decrypt(responseData);
387+
byte[] decryptedData = ScanLocalDevices.security.decrypt(responseData);
467388

468389
try {
469390

@@ -498,9 +419,9 @@ public void run() {
498419
.setMsg(msgType)
499420
.setCmdSigninStatus(configRequest)
500421
.build();
501-
byte[] message = this.security.encrypt(payload.toByteArray());
422+
byte[] message = ScanLocalDevices.security.encrypt(payload.toByteArray());
502423

503-
this.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
424+
ScanLocalDevices.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
504425

505426
@Override
506427
public void onSuccess(byte[] returnData) {
@@ -535,7 +456,7 @@ public void onFailure(Exception e) {
535456
private Avsconfig.AVSConfigStatus processSignInStatusResponse(byte[] responseData) {
536457

537458
Avsconfig.AVSConfigStatus status = Avsconfig.AVSConfigStatus.InvalidState;
538-
byte[] decryptedData = this.security.decrypt(responseData);
459+
byte[] decryptedData = ScanLocalDevices.security.decrypt(responseData);
539460

540461
try {
541462

@@ -571,9 +492,9 @@ public void run() {
571492
.setCmdGetDeviceInfo(deviceInfoRequest)
572493
.build();
573494

574-
byte[] message = this.security.encrypt(payload.toByteArray());
495+
byte[] message = ScanLocalDevices.security.encrypt(payload.toByteArray());
575496

576-
this.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
497+
ScanLocalDevices.transport.sendConfigData(AppConstants.HANDLER_AVS_CONFIG, message, new ResponseListener() {
577498

578499
@Override
579500
public void onSuccess(byte[] returnData) {
@@ -610,7 +531,7 @@ public void onFailure(Exception e) {
610531

611532
private DeviceInfo processDeviceInfoResponse(byte[] responseData) {
612533

613-
byte[] decryptedData = this.security.decrypt(responseData);
534+
byte[] decryptedData = ScanLocalDevices.security.decrypt(responseData);
614535
DeviceInfo deviceInfo = null;
615536

616537
try {

0 commit comments

Comments
 (0)