Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class AddDeviceActivity : AppCompatActivity() {
setContentView(binding.root)
intent = Intent()
sharedPreferences = getSharedPreferences(AppConstants.ESP_PREFERENCES, Context.MODE_PRIVATE)
provisionManager = ESPProvisionManager.getInstance(applicationContext)
provisionManager = ESPProvisionManager.getInstance(applicationContext).scanTimeout(10_000)
initViews()
EventBus.getDefault().register(this)
}
Expand Down Expand Up @@ -157,7 +157,7 @@ class AddDeviceActivity : AppCompatActivity() {
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
grantResults: IntArray,
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
updatePermissionErrorText()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ protected void onCreate(Bundle savedInstanceState) {
initViews();

sharedPreferences = getSharedPreferences(AppConstants.ESP_PREFERENCES, Context.MODE_PRIVATE);
provisionManager = ESPProvisionManager.getInstance(getApplicationContext());
provisionManager = ESPProvisionManager.getInstance(getApplicationContext()).scanTimeout(10_000);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_provision_landing);
securityType = getIntent().getIntExtra(AppConstants.KEY_SECURITY_TYPE, AppConstants.SEC_TYPE_DEFAULT);
provisionManager = ESPProvisionManager.getInstance(getApplicationContext());
provisionManager = ESPProvisionManager.getInstance(getApplicationContext()).scanTimeout(10_000);
sharedPreferences = getSharedPreferences(AppConstants.ESP_PREFERENCES, Context.MODE_PRIVATE);
EventBus.getDefault().register(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pop);

provisionManager = ESPProvisionManager.getInstance(getApplicationContext());
provisionManager = ESPProvisionManager.getInstance(getApplicationContext()).scanTimeout(10_000);
initViews();
EventBus.getDefault().register(this);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@

import com.espressif.AppConstants;
import com.espressif.provisioning.DeviceConnectionEvent;
import com.espressif.wifi_provisioning.R;
import com.espressif.provisioning.ESPConstants;
import com.espressif.provisioning.ESPProvisionManager;
import com.espressif.provisioning.listeners.ProvisionListener;
import com.espressif.wifi_provisioning.R;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
Expand Down Expand Up @@ -65,7 +65,7 @@ protected void onCreate(Bundle savedInstanceState) {
ssidValue = intent.getStringExtra(AppConstants.KEY_WIFI_SSID);
passphraseValue = intent.getStringExtra(AppConstants.KEY_WIFI_PASSWORD);
dataset = intent.getStringExtra(AppConstants.KEY_THREAD_DATASET);
provisionManager = ESPProvisionManager.getInstance(getApplicationContext());
provisionManager = ESPProvisionManager.getInstance(getApplicationContext()).scanTimeout(10_000);
initViews();
EventBus.getDefault().register(this);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ protected void onCreate(Bundle savedInstanceState) {

handler = new Handler();
threadNetworkList = new ArrayList<>();
provisionManager = ESPProvisionManager.getInstance(getApplicationContext());
provisionManager = ESPProvisionManager.getInstance(getApplicationContext()).scanTimeout(10_000);
scanCapAvailable = getIntent().getBooleanExtra(AppConstants.KEY_THREAD_SCAN_AVAILABLE, false);

initViews();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wifi_config);

provisionManager = ESPProvisionManager.getInstance(getApplicationContext());
provisionManager = ESPProvisionManager.getInstance(getApplicationContext()).scanTimeout(10_000);
initViews();
EventBus.getDefault().register(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ protected void onCreate(Bundle savedInstanceState) {

wifiAPList = new ArrayList<>();
handler = new Handler();
provisionManager = ESPProvisionManager.getInstance(getApplicationContext());
provisionManager = ESPProvisionManager.getInstance(getApplicationContext()).scanTimeout(10_000);

String deviceName = provisionManager.getEspDevice().getDeviceName();
String wifiMsg = String.format(getString(R.string.setup_instructions), deviceName);
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/espressif/ui/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public static void displayDeviceConnectionError(Activity aContext, String msg) {

@Override
public void onClick(DialogInterface dialog, int which) {
ESPProvisionManager provisionManager = ESPProvisionManager.getInstance(aContext.getApplicationContext());
ESPProvisionManager provisionManager = ESPProvisionManager.getInstance(aContext.getApplicationContext()).scanTimeout(10_000);
if (provisionManager.getEspDevice() != null) {
provisionManager.getEspDevice().disconnectDevice();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,10 @@ public class ESPProvisionManager {
private ESPDevice espDevice;
private BleScanner bleScanner;
private WiFiScanner wifiScanner;
private Context context;
private Handler handler;
private final Context context;
private final Handler handler;
private boolean isScanned = false;
private long timeout = 6000;

/**
* This method is used to get singleton instance of
Expand All @@ -105,6 +106,17 @@ private ESPProvisionManager(Context context) {
handler = new Handler();
}

/**
* This method is to set the timeout for Bluetooth scanning
*
* @param timeout timeout
* @return Returns ESPProvisionManager
*/
public ESPProvisionManager scanTimeout(long timeout) {
this.timeout = timeout;
return this;
}

/**
* This method is used to get ESPDevice object with given transport and security.
*
Expand Down Expand Up @@ -343,7 +355,7 @@ private void processQrCode(String qrCode, QRCodeScanListener qrCodeScanListener)
transportType = ESPConstants.TransportType.TRANSPORT_BLE;

} else {
Log.e(TAG, "" + transport + " Transport type is not supported");
Log.e(TAG, transport + " Transport type is not supported");
qrCodeScanListener.onFailure(new RuntimeException("Transport type is not supported"), qrCode);
return;
}
Expand Down Expand Up @@ -424,11 +436,11 @@ public void analyze(ImageProxy imageProxy) {
* @param filters The scan filters that will be used
* @param bleScannerListener BleScanListener for scanning callbacks.
*/
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION})
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH_SCAN})
public void searchBleEspDevices(List<ScanFilter> filters, BleScanListener bleScannerListener) {

Log.d(TAG, "Search for BLE devices");
bleScanner = new BleScanner(context, bleScannerListener);
bleScanner = new BleScanner(context, timeout, bleScannerListener);
bleScanner.startScan(filters);
}

Expand All @@ -438,11 +450,11 @@ public void searchBleEspDevices(List<ScanFilter> filters, BleScanListener bleSca
* @param scanSettings The scan settings that will be used
* @param bleScannerListener BleScanListener for scanning callbacks.
*/
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION})
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH_SCAN})
public void searchBleEspDevices(ScanSettings scanSettings, BleScanListener bleScannerListener) {

Log.d(TAG, "Search for BLE devices");
bleScanner = new BleScanner(context, bleScannerListener);
bleScanner = new BleScanner(context, timeout, bleScannerListener);
bleScanner.startScan(scanSettings);
}

Expand All @@ -453,11 +465,11 @@ public void searchBleEspDevices(ScanSettings scanSettings, BleScanListener bleSc
* @param scanSettings The scan settings that will be used
* @param bleScannerListener BleScanListener for scanning callbacks.
*/
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION})
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH_SCAN})
public void searchBleEspDevices(List<ScanFilter> filters, ScanSettings scanSettings, BleScanListener bleScannerListener) {

Log.d(TAG, "Search for BLE devices");
bleScanner = new BleScanner(context, bleScannerListener);
bleScanner = new BleScanner(context, timeout, bleScannerListener);
bleScanner.startScan(filters, scanSettings);
}

Expand All @@ -466,11 +478,11 @@ public void searchBleEspDevices(List<ScanFilter> filters, ScanSettings scanSetti
*
* @param bleScannerListener BleScanListener for scanning callbacks.
*/
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION})
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH_SCAN})
public void searchBleEspDevices(BleScanListener bleScannerListener) {

Log.d(TAG, "Search for BLE devices");
bleScanner = new BleScanner(context, bleScannerListener);
bleScanner = new BleScanner(context, timeout, bleScannerListener);
bleScanner.startScan();
}

Expand All @@ -480,18 +492,18 @@ public void searchBleEspDevices(BleScanListener bleScannerListener) {
* @param prefix Prefix to filter devices from device name.
* @param bleScannerListener BleScanListener for scanning callbacks.
*/
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION})
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH_SCAN})
public void searchBleEspDevices(String prefix, BleScanListener bleScannerListener) {

Log.d(TAG, "Search for BLE devices");
bleScanner = new BleScanner(context, prefix, bleScannerListener);
bleScanner = new BleScanner(context, prefix, timeout, bleScannerListener);
bleScanner.startScan();
}

/**
* This method is used to stop BLE scanning.
*/
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION})
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH_SCAN})
public void stopBleScan() {

if (bleScanner != null) {
Expand Down Expand Up @@ -558,9 +570,9 @@ private ESPConstants.SecurityType setSecurityType(int security) {

class SearchDeviceTask implements Runnable {

private ESPDevice device;
private QRCodeScanListener listener;
private String password;
private final ESPDevice device;
private final QRCodeScanListener listener;
private final String password;

SearchDeviceTask(ESPDevice device1, String password1, QRCodeScanListener listener1) {
searchCnt++;
Expand All @@ -573,7 +585,7 @@ class SearchDeviceTask implements Runnable {
@Override
@RequiresPermission(allOf = {Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CHANGE_WIFI_STATE,
Manifest.permission.ACCESS_WIFI_STATE})
Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.BLUETOOTH_SCAN})
public void run() {

if (device.getTransportType().equals(ESPConstants.TransportType.TRANSPORT_BLE)) {
Expand All @@ -596,7 +608,7 @@ public void onPeripheralFound(BluetoothDevice btDevice, ScanResult scanResult) {
isDeviceFound = true;
String serviceUuid = "";

if (scanResult.getScanRecord().getServiceUuids() != null && scanResult.getScanRecord().getServiceUuids().size() > 0) {
if (scanResult.getScanRecord().getServiceUuids() != null && !scanResult.getScanRecord().getServiceUuids().isEmpty()) {
serviceUuid = scanResult.getScanRecord().getServiceUuids().get(0).toString();
}

Expand All @@ -620,7 +632,7 @@ public void scanCompleted() {
SearchDeviceTask searchDeviceTask = new SearchDeviceTask(device, password, listener);
handler.postDelayed(searchDeviceTask, 500);
} else {
String errMsg = "" + device.getDeviceName() + " device not found";
String errMsg = device.getDeviceName() + " device not found";
listener.onFailure(new RuntimeException(errMsg));
}
} else {
Expand All @@ -643,7 +655,7 @@ public void onFailure(Exception e) {
SearchDeviceTask searchDeviceTask = new SearchDeviceTask(device, password, listener);
handler.postDelayed(searchDeviceTask, 500);
} else {
String errMsg = "" + device.getDeviceName() + " device not found";
String errMsg = device.getDeviceName() + " device not found";
listener.onFailure(new RuntimeException(errMsg));
}
}
Expand Down Expand Up @@ -680,7 +692,7 @@ public void onWifiListReceived(ArrayList<WiFiAccessPoint> scanResults) {
SearchDeviceTask searchDeviceTask = new SearchDeviceTask(device, password, listener);
handler.postDelayed(searchDeviceTask, 500);
} else {
String errMsg = "" + device.getDeviceName() + " device not found";
String errMsg = device.getDeviceName() + " device not found";
listener.onFailure(new RuntimeException(errMsg));
}
}
Expand All @@ -702,7 +714,7 @@ public void onWiFiScanFailed(Exception e) {
SearchDeviceTask searchDeviceTask = new SearchDeviceTask(device, password, listener);
handler.postDelayed(searchDeviceTask, 500);
} else {
String errMsg = "" + device.getDeviceName() + " device not found";
String errMsg = device.getDeviceName() + " device not found";
listener.onFailure(new RuntimeException(errMsg));
}
}
Expand Down
Loading