Add ability to specify retries

pull/13/head
sh123 2021-10-11 12:29:12 +03:00
rodzic 9fc376d882
commit 1a40d67db6
6 zmienionych plików z 68 dodań i 7 usunięć

Wyświetl plik

@ -8,6 +8,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
@ -28,17 +29,21 @@ public class TcpIpConnectActivity extends AppCompatActivity {
private final int TCP_IP_CONNECTED = 1;
private final int TCP_IP_FAILED = 2;
private final int MAX_RETRIES = 5;
private final int RETRY_DELAY_MS = 5000;
private final int DEFAULT_MAX_RETRIES = 5;
private final int DEFAULT_RETRY_DELAY_MS = 5000;
private final String DEFAULT_ADDRESS = "127.0.0.1";
private final String DEFAULT_PORT = "8081";
private String _address;
private String _port;
private int _maxRetries;
private int _retryDelayMs;
private Socket _socket;
private Boolean _cancel = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -47,6 +52,8 @@ public class TcpIpConnectActivity extends AppCompatActivity {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
_address = sharedPreferences.getString(PreferenceKeys.PORTS_TCP_IP_ADDRESS, DEFAULT_ADDRESS);
_port = sharedPreferences.getString(PreferenceKeys.PORTS_TCP_IP_PORT, DEFAULT_PORT);
_maxRetries = Integer.parseInt(sharedPreferences.getString(PreferenceKeys.PORTS_TCP_IP_RETRY_COUNT, String.valueOf(DEFAULT_MAX_RETRIES)));;
_retryDelayMs = Integer.parseInt(sharedPreferences.getString(PreferenceKeys.PORTS_TCP_IP_RETRY_DELAY, String.valueOf(DEFAULT_RETRY_DELAY_MS)));
ProgressBar progressBarTcpIp = findViewById(R.id.progressBarTcpIp);
progressBarTcpIp.setVisibility(View.VISIBLE);
@ -61,21 +68,22 @@ public class TcpIpConnectActivity extends AppCompatActivity {
new Thread() {
@Override
public void run() {
Message resultMsg = new Message();
int count = 0;
int maxRetries = MAX_RETRIES;
boolean connected = false;
while (true) {
while (!_cancel) {
try {
_socket = new Socket();
_socket.connect(new InetSocketAddress(_address, Integer.parseInt(_port)));
connected = true;
} catch (IOException e) {
e.printStackTrace();
if (++count >= maxRetries) break;
if (++count >= _maxRetries || _cancel) break;
try {
Thread.sleep(RETRY_DELAY_MS);
Thread.sleep(_retryDelayMs);
} catch (InterruptedException interruptedException) {
interruptedException.printStackTrace();
}
@ -110,4 +118,13 @@ public class TcpIpConnectActivity extends AppCompatActivity {
finish();
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
_cancel = true;
}
return super.onKeyDown(keyCode, event);
}
}

Wyświetl plik

@ -6,6 +6,8 @@ public final class PreferenceKeys {
public static String PORTS_TCP_IP_ENABLED = "ports_tcp_ip_enable";
public static String PORTS_TCP_IP_ADDRESS = "ports_tcp_ip_address";
public static String PORTS_TCP_IP_PORT = "ports_tcp_ip_port";
public static String PORTS_TCP_IP_RETRY_COUNT = "ports_tcp_ip_retry_count";
public static String PORTS_TCP_IP_RETRY_DELAY = "ports_tcp_ip_retry_delay";
public static String CODEC2_MODE = "codec2_mode";
public static String CODEC2_TEST_MODE = "codec2_test_mode";

Wyświetl plik

@ -124,7 +124,7 @@
<string name="ports_tcp_ip_enable_title">Enable TCP/IP</string>
<string name="ports_tcp_ip_enable_summary">Data will be sent and received through TCP/IP as a client</string>
<string name="port_tcp_ip_prefs_title">TCP/IP parameters</string>
<string name="port_tcp_ip_prefs_summary">Set TCP/IP parameters, such as IP address and port</string>
<string name="port_tcp_ip_prefs_summary">Set TCP/IP parameters, such as IP address, port or number of reconnects</string>
<string name="tcp_ip_basic_address_title">IP address</string>
<string name="tcp_ip_basic_port_title">IP port number</string>
<string name="tcp_ip_basic_address_summary">Set server IP address to connect</string>
@ -141,4 +141,8 @@
<string name="tcp_ip_connecting">Connecting to remote KISS server…</string>
<string name="bt_connecting">Connecting bluetooth…</string>
<string name="usb_connecting">Connecting USB…</string>
<string name="tcp_ip_basic_retry_count_title">Connect retry count</string>
<string name="tcp_ip_basic_retry_count_summary">Try to connect number of times when connecting for the first time or when connection is lost</string>
<string name="tcp_ip_basic_retry_delay_title">Connect retry delay</string>
<string name="tcp_ip_basic_retry_delay_summary">How many milliseonds to wait before trying to connect again</string>
</resources>

Wyświetl plik

@ -6,6 +6,8 @@
app:title="@string/kiss_basic_title">
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_basic_persistence"
app:title="@string/kiss_basic_p_title"
app:summary="@string/kiss_basic_p_summary"
@ -13,6 +15,8 @@
</EditTextPreference>
s
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_basic_slot_time"
app:title="@string/kiss_basic_slot_time_title"
app:summary="@string/kiss_basic_slot_time_summary"
@ -20,6 +24,8 @@ s
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_basic_tx_delay"
app:title="@string/kiss_basic_tx_delay_title"
app:summary="@string/kiss_basic_tx_delay_summary"
@ -27,6 +33,8 @@ s
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_basic_tx_tail"
app:title="@string/kiss_basic_tx_tail_title"
app:summary="@string/kiss_basic_tx_tail_summary"

Wyświetl plik

@ -6,6 +6,8 @@
app:title="@string/kiss_extensions_radio_control_title">
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_extension_radio_frequency"
app:title="@string/kiss_extensions_radio_frequency_title"
app:summary="@string/kiss_extensions_radio_frequency_summary"
@ -13,6 +15,8 @@
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_extension_radio_bandwidth"
app:title="@string/kiss_extensions_radio_bandwidth_title"
app:summary="@string/kiss_extensions_radio_bandwidth_summary"
@ -20,6 +24,8 @@
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_extension_radio_power"
app:title="@string/kiss_extensions_radio_power_title"
app:summary="@string/kiss_extensions_radio_power_summary"
@ -27,6 +33,8 @@
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_extension_radio_sf"
app:title="@string/kiss_extensions_radio_sf_title"
app:summary="@string/kiss_extensions_radio_sf_summary"
@ -34,6 +42,8 @@
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="kiss_extension_radio_cr"
app:title="@string/kiss_extensions_radio_cr_title"
app:summary="@string/kiss_extensions_radio_cr_summary"

Wyświetl plik

@ -14,11 +14,31 @@
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="ports_tcp_ip_port"
app:title="@string/tcp_ip_basic_port_title"
app:summary="@string/tcp_ip_basic_port_summary"
app:defaultValue="8001">
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="ports_tcp_ip_retry_count"
app:title="@string/tcp_ip_basic_retry_count_title"
app:summary="@string/tcp_ip_basic_retry_count_summary"
app:defaultValue="5">
</EditTextPreference>
<EditTextPreference
android:inputType="numberDecimal"
android:digits="0123456789"
app:key="ports_tcp_ip_retry_delay"
app:title="@string/tcp_ip_basic_retry_delay_title"
app:summary="@string/tcp_ip_basic_retry_delay_summary"
app:defaultValue="5000">
</EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>