115 lines
3.8 KiB
Java
115 lines
3.8 KiB
Java
package com.espressif.iot.esptouch;
|
|
|
|
import android.content.Context;
|
|
import android.text.TextUtils;
|
|
|
|
import com.espressif.iot.esptouch.protocol.TouchData;
|
|
import com.espressif.iot.esptouch.task.EsptouchTaskParameter;
|
|
import com.espressif.iot.esptouch.task.__EsptouchTask;
|
|
import com.espressif.iot.esptouch.util.ByteUtil;
|
|
import com.espressif.iot.esptouch.util.EspAES;
|
|
import com.espressif.iot.esptouch.util.EspNetUtil;
|
|
|
|
import java.util.List;
|
|
|
|
public class EsptouchTask implements IEsptouchTask {
|
|
public __EsptouchTask _mEsptouchTask;
|
|
private EsptouchTaskParameter _mParameter;
|
|
|
|
/**
|
|
* Constructor of EsptouchTask
|
|
*
|
|
* @param apSsid the Ap's ssid
|
|
* @param apBssid the Ap's bssid
|
|
* @param apPassword the Ap's password
|
|
* @param context the Context of the Application
|
|
*/
|
|
public EsptouchTask(String apSsid, String apBssid, String apPassword, Context context) {
|
|
this(apSsid, apBssid, apPassword, null, context);
|
|
}
|
|
|
|
/**
|
|
* Constructor of EsptouchTask
|
|
*
|
|
* @param apSsid the Ap's ssid
|
|
* @param apBssid the Ap's bssid
|
|
* @param apPassword the Ap's password
|
|
* @param espAES AES secret key
|
|
* @param context the Context of the Application
|
|
*/
|
|
public EsptouchTask(String apSsid, String apBssid, String apPassword, EspAES espAES, Context context) {
|
|
if (TextUtils.isEmpty(apSsid)) {
|
|
throw new NullPointerException("SSID can't be empty");
|
|
}
|
|
if (TextUtils.isEmpty(apBssid)) {
|
|
throw new NullPointerException("BSSID can't be empty");
|
|
}
|
|
if (apPassword == null) {
|
|
apPassword = "";
|
|
}
|
|
TouchData ssid = new TouchData(apSsid);
|
|
TouchData bssid = new TouchData(EspNetUtil.parseBssid2bytes(apBssid));
|
|
TouchData password = new TouchData(apPassword);
|
|
init(context, ssid, bssid, password, espAES);
|
|
}
|
|
|
|
public EsptouchTask(byte[] apSsid, byte[] apBssid, byte[] apPassword, Context context) {
|
|
this(apSsid, apBssid, apPassword, null, context);
|
|
}
|
|
|
|
public EsptouchTask(byte[] apSsid, byte[] apBssid, byte[] apPassword, EspAES espAES, Context context) {
|
|
if (apSsid == null || apSsid.length == 0) {
|
|
throw new NullPointerException("SSID can't be empty");
|
|
}
|
|
if (apBssid == null || apBssid.length == 0) {
|
|
throw new NullPointerException("BSSID can't be empty");
|
|
}
|
|
if (apPassword == null) {
|
|
apPassword = new byte[0];
|
|
}
|
|
TouchData ssid = new TouchData(apSsid);
|
|
TouchData bssid = new TouchData(apBssid);
|
|
TouchData password = new TouchData(apPassword);
|
|
init(context, ssid, bssid, password, espAES);
|
|
}
|
|
|
|
private void init(Context context, TouchData ssid, TouchData bssid, TouchData password, EspAES aes) {
|
|
_mParameter = new EsptouchTaskParameter();
|
|
_mEsptouchTask = new __EsptouchTask(context, ssid, bssid, password, aes, _mParameter, true);
|
|
}
|
|
|
|
@Override
|
|
public void interrupt() {
|
|
_mEsptouchTask.interrupt();
|
|
}
|
|
|
|
@Override
|
|
public IEsptouchResult executeForResult() throws RuntimeException {
|
|
return _mEsptouchTask.executeForResult();
|
|
}
|
|
|
|
@Override
|
|
public boolean isCancelled() {
|
|
return _mEsptouchTask.isCancelled();
|
|
}
|
|
|
|
@Override
|
|
public List<IEsptouchResult> executeForResults(int expectTaskResultCount)
|
|
throws RuntimeException {
|
|
if (expectTaskResultCount <= 0) {
|
|
expectTaskResultCount = Integer.MAX_VALUE;
|
|
}
|
|
return _mEsptouchTask.executeForResults(expectTaskResultCount);
|
|
}
|
|
|
|
@Override
|
|
public void setEsptouchListener(IEsptouchListener esptouchListener) {
|
|
_mEsptouchTask.setEsptouchListener(esptouchListener);
|
|
}
|
|
|
|
@Override
|
|
public void setPackageBroadcast(boolean broadcast) {
|
|
_mParameter.setBroadcast(broadcast);
|
|
}
|
|
}
|