Skip to content

Commit cf7b7a5

Browse files
committed
Merge branch 'task/incorrect_pop_handling' into 'master'
Added handling for incorrect proof of possession (POP). See merge request idf/esp-idf-provisioning-android!57
2 parents 497c6fc + 370e320 commit cf7b7a5

File tree

6 files changed

+49
-13
lines changed

6 files changed

+49
-13
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ To get this app please clone this repository using the below command:
4747
```
4848
And add a dependency code to your app module's `build.gradle` file.
4949
```
50-
implementation 'com.github.espressif:esp-idf-provisioning-android:lib-2.0.11'
50+
implementation 'com.github.espressif:esp-idf-provisioning-android:lib-2.0.13'
5151
```
5252

5353
## Using Provisioning Library

app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ android {
1717
applicationId "com.espressif.wifi_provisioning"
1818
minSdkVersion 23
1919
targetSdkVersion 30
20-
versionCode 14
21-
versionName "2.0.12 - ${getGitHash()}"
20+
versionCode 15
21+
versionName "2.0.13 - ${getGitHash()}"
2222
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
2323
}
2424

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

+31-7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.espressif.provisioning.DeviceConnectionEvent;
3131
import com.espressif.provisioning.ESPConstants;
3232
import com.espressif.provisioning.ESPProvisionManager;
33+
import com.espressif.provisioning.listeners.ResponseListener;
3334
import com.espressif.wifi_provisioning.R;
3435

3536
import org.greenrobot.eventbus.EventBus;
@@ -47,7 +48,7 @@ public class ProofOfPossessionActivity extends AppCompatActivity {
4748
private TextView txtNextBtn;
4849

4950
private String deviceName;
50-
private TextView tvPopInstruction;
51+
private TextView tvPopInstruction, tvPopError;
5152
private EditText etPop;
5253
private ESPProvisionManager provisionManager;
5354

@@ -111,14 +112,36 @@ public void onClick(View v) {
111112

112113
final String pop = etPop.getText().toString();
113114
Log.d(TAG, "POP : " + pop);
115+
tvPopError.setVisibility(View.INVISIBLE);
114116
provisionManager.getEspDevice().setProofOfPossession(pop);
115-
ArrayList<String> deviceCaps = provisionManager.getEspDevice().getDeviceCapabilities();
116117

117-
if (deviceCaps.contains("wifi_scan")) {
118-
goToWiFiScanListActivity();
119-
} else {
120-
goToWiFiConfigActivity();
121-
}
118+
provisionManager.getEspDevice().initSession(new ResponseListener() {
119+
@Override
120+
public void onSuccess(byte[] returnData) {
121+
runOnUiThread(new Runnable() {
122+
@Override
123+
public void run() {
124+
ArrayList<String> deviceCaps = provisionManager.getEspDevice().getDeviceCapabilities();
125+
if (deviceCaps.contains("wifi_scan")) {
126+
goToWiFiScanListActivity();
127+
} else {
128+
goToWiFiConfigActivity();
129+
}
130+
}
131+
});
132+
}
133+
134+
@Override
135+
public void onFailure(Exception e) {
136+
e.printStackTrace();
137+
runOnUiThread(new Runnable() {
138+
@Override
139+
public void run() {
140+
tvPopError.setVisibility(View.VISIBLE);
141+
}
142+
});
143+
}
144+
});
122145
}
123146
};
124147

@@ -137,6 +160,7 @@ private void initViews() {
137160
tvBack = findViewById(R.id.btn_back);
138161
tvCancel = findViewById(R.id.btn_cancel);
139162
tvPopInstruction = findViewById(R.id.tv_pop);
163+
tvPopError = findViewById(R.id.tv_error_pop);
140164
etPop = findViewById(R.id.et_pop);
141165

142166
tvTitle.setText(R.string.title_activity_pop);

app/src/main/res/layout/activity_pop.xml

+13-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@
4545
app:layout_constraintStart_toStartOf="parent"
4646
app:layout_constraintTop_toBottomOf="@id/tv_pop" />
4747

48+
<TextView
49+
android:id="@+id/tv_error_pop"
50+
android:layout_width="wrap_content"
51+
android:layout_height="wrap_content"
52+
android:layout_marginTop="@dimen/margin_32"
53+
android:text="@string/error_pop_incorrect"
54+
android:textColor="@color/color_orange"
55+
android:textSize="14sp"
56+
android:visibility="invisible"
57+
app:layout_constraintStart_toStartOf="parent"
58+
app:layout_constraintTop_toBottomOf="@id/et_pop" />
59+
4860
<include
4961
android:id="@+id/btn_next"
5062
layout="@layout/button"
@@ -53,7 +65,7 @@
5365
android:layout_marginTop="@dimen/margin_16"
5466
app:layout_constraintEnd_toEndOf="parent"
5567
app:layout_constraintStart_toStartOf="parent"
56-
app:layout_constraintTop_toBottomOf="@id/et_pop" />
68+
app:layout_constraintTop_toBottomOf="@id/tv_error_pop" />
5769

5870
</androidx.constraintlayout.widget.ConstraintLayout>
5971

app/src/main/res/values/strings.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
<string name="error_network_not_found">Network not found.</string>
8585
<string name="error_authentication_failed">Wi-Fi Authentication failed.</string>
8686
<string name="error_unknown">Device provisioning failed. Reason : Unknown.</string>
87-
<string name="error_pop_incorrect">Error establishing session.\n Check if Proof of Possession(POP) is correct!</string>
87+
<string name="error_pop_incorrect">Please retry with correct proof of possession PIN.</string>
8888
<string name="error_no_ble_device">No Bluetooth devices found!</string>
8989
<string name="error_device_connect_failed">Error! Failed to connect with device.</string>
9090
<string name="error_ssid_empty">Network name cannot be empty</string>

provisioning/src/main/java/com/espressif/provisioning/ESPDevice.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ public void onFailure(Exception e) {
555555
}
556556
}
557557

558-
private void initSession(final ResponseListener listener) {
558+
public void initSession(final ResponseListener listener) {
559559

560560
if (securityType.equals(ESPConstants.SecurityType.SECURITY_0)) {
561561
security = new Security0();

0 commit comments

Comments
 (0)