flutter_smartconfig/android/src/main/java/com/espressif/iot/esptouch/task/EsptouchTaskParameter.java

168 lines
4.7 KiB
Java

package com.espressif.iot.esptouch.task;
import com.espressif.iot.esptouch.EsptouchTask;
public class EsptouchTaskParameter implements IEsptouchTaskParameter {
private static int _datagramCount = 0;
private long mIntervalGuideCodeMillisecond;
private long mIntervalDataCodeMillisecond;
private long mTimeoutGuideCodeMillisecond;
private long mTimeoutDataCodeMillisecond;
private int mTotalRepeatTime;
private int mEsptouchResultOneLen;
private int mEsptouchResultMacLen;
private int mEsptouchResultIpLen;
private int mEsptouchResultTotalLen;
private int mPortListening;
private int mTargetPort;
private int mWaitUdpReceivingMilliseond;
private int mWaitUdpSendingMillisecond;
private int mThresholdSucBroadcastCount;
private int mExpectTaskResultCount;
private boolean mBroadcast = true;
public EsptouchTaskParameter() {
mIntervalGuideCodeMillisecond = 8;
mIntervalDataCodeMillisecond = 8;
mTimeoutGuideCodeMillisecond = 2000;
mTimeoutDataCodeMillisecond = 4000;
mTotalRepeatTime = 1;
mEsptouchResultOneLen = 1;
mEsptouchResultMacLen = 6;
mEsptouchResultIpLen = 4;
mEsptouchResultTotalLen = 1 + 6 + 4;
mPortListening = 18266;
mTargetPort = 7001;
mWaitUdpReceivingMilliseond = 15000;
mWaitUdpSendingMillisecond = 45000;
mThresholdSucBroadcastCount = 1;
mExpectTaskResultCount = 1;
}
// the range of the result should be 1-100
private static int __getNextDatagramCount() {
return 1 + (_datagramCount++) % 100;
}
@Override
public long getIntervalGuideCodeMillisecond() {
return mIntervalGuideCodeMillisecond;
}
@Override
public long getIntervalDataCodeMillisecond() {
return mIntervalDataCodeMillisecond;
}
@Override
public long getTimeoutGuideCodeMillisecond() {
return mTimeoutGuideCodeMillisecond;
}
@Override
public long getTimeoutDataCodeMillisecond() {
return mTimeoutDataCodeMillisecond;
}
@Override
public long getTimeoutTotalCodeMillisecond() {
return mTimeoutGuideCodeMillisecond + mTimeoutDataCodeMillisecond;
}
@Override
public int getTotalRepeatTime() {
return mTotalRepeatTime;
}
@Override
public int getEsptouchResultOneLen() {
return mEsptouchResultOneLen;
}
@Override
public int getEsptouchResultMacLen() {
return mEsptouchResultMacLen;
}
@Override
public int getEsptouchResultIpLen() {
return mEsptouchResultIpLen;
}
@Override
public int getEsptouchResultTotalLen() {
return mEsptouchResultTotalLen;
}
@Override
public int getPortListening() {
return mPortListening;
}
// target hostname is : 234.1.1.1, 234.2.2.2, 234.3.3.3 to 234.100.100.100
@Override
public String getTargetHostname() {
if (mBroadcast) {
return "255.255.255.255";
} else {
int count = __getNextDatagramCount();
return "234." + count + "." + count + "." + count;
}
}
@Override
public int getTargetPort() {
return mTargetPort;
}
@Override
public int getWaitUdpReceivingMillisecond() {
return mWaitUdpReceivingMilliseond;
}
@Override
public int getWaitUdpSendingMillisecond() {
return mWaitUdpSendingMillisecond;
}
@Override
public int getWaitUdpTotalMillisecond() {
return mWaitUdpReceivingMilliseond + mWaitUdpSendingMillisecond;
}
@Override
public void setWaitUdpTotalMillisecond(int waitUdpTotalMillisecond) {
if (waitUdpTotalMillisecond < mWaitUdpReceivingMilliseond
+ getTimeoutTotalCodeMillisecond()) {
// if it happen, even one turn about sending udp broadcast can't be
// completed
throw new IllegalArgumentException(
"waitUdpTotalMillisecod is invalid, "
+ "it is less than mWaitUdpReceivingMilliseond + getTimeoutTotalCodeMillisecond()");
}
mWaitUdpSendingMillisecond = waitUdpTotalMillisecond
- mWaitUdpReceivingMilliseond;
}
@Override
public int getThresholdSucBroadcastCount() {
return mThresholdSucBroadcastCount;
}
@Override
public int getExpectTaskResultCount() {
return this.mExpectTaskResultCount;
}
@Override
public void setExpectTaskResultCount(int expectTaskResultCount) {
this.mExpectTaskResultCount = expectTaskResultCount;
}
@Override
public void setBroadcast(boolean broadcast) {
mBroadcast = broadcast;
}
}