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; } }