kopia lustrzana https://github.com/sh123/codec2_talkie
Settings refactoring
rodzic
d2728ca58a
commit
863fa37517
|
@ -33,6 +33,7 @@ import android.os.Looper;
|
|||
import android.os.Message;
|
||||
import android.os.Messenger;
|
||||
import android.os.SystemClock;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.Menu;
|
||||
|
@ -53,6 +54,7 @@ import com.radio.codec2talkie.connect.BleConnectActivity;
|
|||
import com.radio.codec2talkie.connect.BluetoothConnectActivity;
|
||||
import com.radio.codec2talkie.connect.BluetoothSocketHandler;
|
||||
import com.radio.codec2talkie.connect.TcpIpConnectActivity;
|
||||
import com.radio.codec2talkie.settings.SettingsWrapper;
|
||||
import com.radio.codec2talkie.storage.log.LogItemActivity;
|
||||
import com.radio.codec2talkie.protocol.ProtocolFactory;
|
||||
import com.radio.codec2talkie.recorder.RecorderActivity;
|
||||
|
@ -156,12 +158,12 @@ public class MainActivity extends AppCompatActivity implements ServiceConnection
|
|||
registerReceiver(onBluetoothDisconnected, new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED));
|
||||
registerReceiver(onUsbDetached, new IntentFilter(UsbManager.ACTION_USB_DEVICE_DETACHED));
|
||||
|
||||
_isTestMode = _sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback").equals("loopback");
|
||||
_isBleEnabled = _sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback").equals("ble");
|
||||
_isTestMode = SettingsWrapper.isLoopbackTransport(_sharedPreferences);
|
||||
_isBleEnabled = SettingsWrapper.isBleTransport(_sharedPreferences);
|
||||
|
||||
// show/hide S-meter
|
||||
FrameLayout frameRssi = findViewById(R.id.frameRssi);
|
||||
if (!_sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback").equals("sound_modem") &&
|
||||
if (!SettingsWrapper.isSoundModemEnabled(_sharedPreferences) &&
|
||||
_sharedPreferences.getBoolean(PreferenceKeys.KISS_EXTENSIONS_ENABLED, false)) {
|
||||
|
||||
int sLevelId = RadioTools.getMinimumDecodeSLevelLabel(_sharedPreferences, S_METER_S0_VALUE_DB);
|
||||
|
@ -252,31 +254,31 @@ public class MainActivity extends AppCompatActivity implements ServiceConnection
|
|||
|
||||
private void startTransportConnection() {
|
||||
Log.i(TAG, "startTransportConnection()");
|
||||
String transportName = _sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback");
|
||||
if (AppService.isRunning) {
|
||||
startAppService(AppService.transportType);
|
||||
} else if (requestPermissions()) {
|
||||
switch (transportName) {
|
||||
case "loopback":
|
||||
switch (SettingsWrapper.getCurrentTransportType(_sharedPreferences)) {
|
||||
case LOOPBACK:
|
||||
_textConnInfo.setText(R.string.main_status_loopback_test);
|
||||
startAppService(TransportFactory.TransportType.LOOPBACK);
|
||||
break;
|
||||
case "sound_modem":
|
||||
case SOUND_MODEM:
|
||||
_textConnInfo.setText(R.string.main_status_sound_modem);
|
||||
String rig = _sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_RIG, "Disabled");
|
||||
if (rig.equals("Disabled"))
|
||||
// start sound modem without rig cat usb connection
|
||||
if (SettingsWrapper.isSoundModemRigDisabled(_sharedPreferences))
|
||||
startAppService(TransportFactory.TransportType.SOUND_MODEM);
|
||||
// otherwise try to connect with usb for cat ptt
|
||||
else
|
||||
startUsbConnectActivity();
|
||||
break;
|
||||
case "tcp_ip":
|
||||
case TCP_IP:
|
||||
startTcpIpConnectActivity();
|
||||
break;
|
||||
case "usb":
|
||||
case USB:
|
||||
startUsbConnectActivity();
|
||||
break;
|
||||
case "bluetooth":
|
||||
case "ble":
|
||||
case BLUETOOTH:
|
||||
case BLE:
|
||||
startBluetoothConnectActivity();
|
||||
break;
|
||||
}
|
||||
|
@ -289,8 +291,7 @@ public class MainActivity extends AppCompatActivity implements ServiceConnection
|
|||
Intent data = result.getData();
|
||||
assert data != null;
|
||||
int resultCode = result.getResultCode();
|
||||
String transportType = _sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback");
|
||||
if (transportType.equals("sound_modem")) {
|
||||
if (SettingsWrapper.isSoundModemEnabled(_sharedPreferences)) {
|
||||
_isRigCtlUsbConnected = resultCode == RESULT_OK;
|
||||
startAppService(TransportFactory.TransportType.SOUND_MODEM);
|
||||
} else if (resultCode == RESULT_CANCELED) {
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.radio.codec2talkie.app.AppWorker;
|
|||
import com.radio.codec2talkie.protocol.message.TextMessage;
|
||||
import com.radio.codec2talkie.protocol.position.Position;
|
||||
import com.radio.codec2talkie.settings.PreferenceKeys;
|
||||
import com.radio.codec2talkie.tools.AudioTools;
|
||||
import com.radio.codec2talkie.transport.Transport;
|
||||
import com.ustadmobile.codec2.Codec2;
|
||||
|
||||
|
@ -38,7 +39,7 @@ public class Freedv implements Protocol {
|
|||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String modemType = sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_TYPE, "1200");
|
||||
int mode = Integer.parseInt(modemType.substring(1));
|
||||
Log.i(TAG, "Using freedv mode " + mode);
|
||||
Log.i(TAG, "Using freedv mode " + AudioTools.getFreedvModeAsText(sharedPreferences));
|
||||
|
||||
_freedv = Codec2.freedvCreate(mode);
|
||||
_modemTxBuffer = new short[Codec2.freedvGetNomModemSamples(_freedv)];
|
||||
|
@ -53,7 +54,7 @@ public class Freedv implements Protocol {
|
|||
@Override
|
||||
public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException {
|
||||
Codec2.freedvTx(_freedv, _modemTxBuffer, pcmFrame);
|
||||
Log.i(TAG, "send pcm " + _modemTxBuffer.length);
|
||||
//Log.i(TAG, "send pcm " + _modemTxBuffer.length);
|
||||
_transport.write(_modemTxBuffer);
|
||||
_parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, pcmFrame);
|
||||
}
|
||||
|
@ -78,7 +79,7 @@ public class Freedv implements Protocol {
|
|||
if (bytesRead == nin) {
|
||||
long cntRead = Codec2.freedvRx(_freedv, _speechRxBuffer, buf);
|
||||
if (cntRead > 0) {
|
||||
Log.i(TAG, "receive " + cntRead);
|
||||
//Log.i(TAG, "receive " + cntRead);
|
||||
_parentProtocolCallback.onReceivePcmAudio(null, null, -1, Arrays.copyOf(_speechRxBuffer, (int) cntRead));
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.content.SharedPreferences;
|
|||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.radio.codec2talkie.settings.PreferenceKeys;
|
||||
import com.radio.codec2talkie.settings.SettingsWrapper;
|
||||
|
||||
public class ProtocolFactory {
|
||||
|
||||
|
@ -35,17 +36,17 @@ public class ProtocolFactory {
|
|||
ProtocolFactory.ProtocolType protocolType;
|
||||
|
||||
// Use HDLC instead of KISS for the sound modem as we are the modem
|
||||
if (sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback").equals("sound_modem")) {
|
||||
if (sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_TYPE, "1200").startsWith("F")) {
|
||||
if (SettingsWrapper.isSoundModemEnabled(sharedPreferences)) {
|
||||
if (SettingsWrapper.isFreeDvSoundModemModulation(sharedPreferences)) {
|
||||
protocolType = ProtocolType.FREEDV;
|
||||
} else {
|
||||
protocolType = ProtocolFactory.ProtocolType.HDLC;
|
||||
}
|
||||
} else if (sharedPreferences.getBoolean(PreferenceKeys.KISS_ENABLED, true)) {
|
||||
if (sharedPreferences.getBoolean(PreferenceKeys.KISS_PARROT, false)) {
|
||||
} else if (SettingsWrapper.isKissProtocolEnabled(sharedPreferences)) {
|
||||
if (SettingsWrapper.isKissParrotEnabled(sharedPreferences)) {
|
||||
protocolType = ProtocolFactory.ProtocolType.KISS_PARROT;
|
||||
}
|
||||
else if (sharedPreferences.getBoolean(PreferenceKeys.KISS_BUFFERED_ENABLED, false)) {
|
||||
else if (SettingsWrapper.isKissBufferedModeEnabled(sharedPreferences)) {
|
||||
protocolType = ProtocolFactory.ProtocolType.KISS_BUFFERED;
|
||||
}
|
||||
else {
|
||||
|
@ -63,10 +64,10 @@ public class ProtocolFactory {
|
|||
|
||||
ProtocolType protocolType = getBaseProtocolType(context);
|
||||
|
||||
boolean recordingEnabled = sharedPreferences.getBoolean(PreferenceKeys.CODEC2_RECORDING_ENABLED, false);
|
||||
boolean scramblingEnabled = sharedPreferences.getBoolean(PreferenceKeys.KISS_SCRAMBLING_ENABLED, false);
|
||||
String scramblingKey = sharedPreferences.getString(PreferenceKeys.KISS_SCRAMBLER_KEY, "");
|
||||
boolean aprsEnabled = sharedPreferences.getBoolean(PreferenceKeys.APRS_ENABLED, false);
|
||||
boolean recordingEnabled = SettingsWrapper.isCodec2RecorderEnabled(sharedPreferences);
|
||||
boolean scramblingEnabled = SettingsWrapper.isKissScramblerEnabled(sharedPreferences);
|
||||
String scramblingKey = SettingsWrapper.getKissScramblerKey(sharedPreferences);
|
||||
boolean aprsEnabled = SettingsWrapper.isAprsEnabled(sharedPreferences);
|
||||
|
||||
Protocol proto;
|
||||
switch (protocolType) {
|
||||
|
|
|
@ -12,11 +12,13 @@ import com.radio.codec2talkie.settings.PreferenceKeys;
|
|||
public class RigCtlFactory {
|
||||
private static final String TAG = RigCtlFactory.class.getSimpleName();
|
||||
|
||||
public static final String RIG_DISABLED = "Disabled";
|
||||
|
||||
public static RigCtl create(Context context) {
|
||||
if (UsbPortHandler.getPort() == null)
|
||||
return new Disabled();
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String rigName = sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_RIG, "Disabled");
|
||||
String rigName = sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_RIG, RIG_DISABLED);
|
||||
try {
|
||||
Class<?> loadClass = Class.forName(String.format("com.radio.codec2talkie.rigctl.%s", rigName));
|
||||
Log.i(TAG, "Using rig " + rigName);
|
||||
|
|
|
@ -44,7 +44,7 @@ public class BluetoothSettingsActivity extends AppCompatActivity {
|
|||
setContentView(R.layout.activity_bluetooth_connect);
|
||||
|
||||
_sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
_isBleEnabled = _sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback").equals("ble");
|
||||
_isBleEnabled = SettingsWrapper.isBleTransport(_sharedPreferences);
|
||||
|
||||
_btAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||
_btArrayAdapter = new ArrayAdapter<>(this, R.layout.support_simple_spinner_dropdown_item);
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
package com.radio.codec2talkie.settings;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import com.radio.codec2talkie.rigctl.RigCtlFactory;
|
||||
import com.radio.codec2talkie.transport.TransportFactory;
|
||||
|
||||
public class SettingsWrapper {
|
||||
|
||||
public static boolean isSoundModemRigDisabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_RIG,
|
||||
RigCtlFactory.RIG_DISABLED).equals(RigCtlFactory.RIG_DISABLED);
|
||||
}
|
||||
|
||||
public static boolean isSoundModemEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getString(PreferenceKeys.PORTS_TYPE,
|
||||
TransportFactory.TransportType.LOOPBACK.toString()).toUpperCase().equals(
|
||||
TransportFactory.TransportType.SOUND_MODEM.toString());
|
||||
}
|
||||
|
||||
public static boolean isLoopbackTransport(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getString(PreferenceKeys.PORTS_TYPE,
|
||||
TransportFactory.TransportType.LOOPBACK.toString()).toUpperCase().equals(
|
||||
TransportFactory.TransportType.LOOPBACK.toString());
|
||||
}
|
||||
|
||||
public static boolean isBleTransport(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getString(PreferenceKeys.PORTS_TYPE,
|
||||
TransportFactory.TransportType.LOOPBACK.toString()).toUpperCase().equals(
|
||||
TransportFactory.TransportType.BLE.toString());
|
||||
}
|
||||
|
||||
public static TransportFactory.TransportType getCurrentTransportType(SharedPreferences sharedPreferences) {
|
||||
return TransportFactory.TransportType.valueOf(sharedPreferences.getString(PreferenceKeys.PORTS_TYPE,
|
||||
TransportFactory.TransportType.LOOPBACK.toString()).toUpperCase());
|
||||
}
|
||||
|
||||
public static boolean isFreeDvSoundModemModulation(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_TYPE, "1200").startsWith("F");
|
||||
}
|
||||
|
||||
public static int getFreeDvSoundModemModulation(SharedPreferences sharedPreferences) {
|
||||
String modemType = sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_TYPE, "1200");
|
||||
if (modemType.startsWith("F")) {
|
||||
return Integer.parseInt(modemType.substring(1));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static boolean isKissProtocolEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getBoolean(PreferenceKeys.KISS_ENABLED, true);
|
||||
}
|
||||
|
||||
public static boolean isKissParrotEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getBoolean(PreferenceKeys.KISS_PARROT, false);
|
||||
}
|
||||
|
||||
public static boolean isKissBufferedModeEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getBoolean(PreferenceKeys.KISS_BUFFERED_ENABLED, false);
|
||||
}
|
||||
|
||||
public static boolean isCodec2RecorderEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getBoolean(PreferenceKeys.CODEC2_RECORDING_ENABLED, false);
|
||||
}
|
||||
|
||||
public static boolean isKissScramblerEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getBoolean(PreferenceKeys.KISS_SCRAMBLING_ENABLED, false);
|
||||
}
|
||||
|
||||
public static boolean isKissExtensionEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getBoolean(PreferenceKeys.KISS_EXTENSIONS_ENABLED, false);
|
||||
}
|
||||
|
||||
public static String getKissScramblerKey(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getString(PreferenceKeys.KISS_SCRAMBLER_KEY, "");
|
||||
}
|
||||
|
||||
public static boolean isAprsEnabled(SharedPreferences sharedPreferences) {
|
||||
return sharedPreferences.getBoolean(PreferenceKeys.APRS_ENABLED, false);
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@ import androidx.preference.PreferenceManager;
|
|||
|
||||
import com.radio.codec2talkie.app.AppWorker;
|
||||
import com.radio.codec2talkie.settings.PreferenceKeys;
|
||||
import com.radio.codec2talkie.settings.SettingsWrapper;
|
||||
import com.ustadmobile.codec2.Codec2;
|
||||
|
||||
public class AudioTools {
|
||||
|
@ -48,22 +49,30 @@ public class AudioTools {
|
|||
}
|
||||
|
||||
public static String getFreedvModeAsText(SharedPreferences sharedPreferences) {
|
||||
if (sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback").equals("sound_modem")) {
|
||||
String modemType = sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_TYPE, "1200");
|
||||
if (modemType.startsWith("F")) {
|
||||
int mode = Integer.parseInt(modemType.substring(1));
|
||||
switch (mode) {
|
||||
case Codec2.FREEDV_MODE_700C: return "700C";
|
||||
case Codec2.FREEDV_MODE_700D: return "700D";
|
||||
case Codec2.FREEDV_MODE_700E: return "700E";
|
||||
case Codec2.FREEDV_MODE_1600: return "1600";
|
||||
case Codec2.FREEDV_MODE_800XA: return "800XA";
|
||||
case Codec2.FREEDV_MODE_2020: return "2020";
|
||||
case Codec2.FREEDV_MODE_2020B: return "2020B";
|
||||
case Codec2.FREEDV_MODE_2400A: return "2400A";
|
||||
case Codec2.FREEDV_MODE_2400B: return "2400B";
|
||||
default: return null;
|
||||
}
|
||||
if (SettingsWrapper.isSoundModemEnabled(sharedPreferences) &&
|
||||
SettingsWrapper.isFreeDvSoundModemModulation(sharedPreferences)) {
|
||||
|
||||
switch (SettingsWrapper.getFreeDvSoundModemModulation(sharedPreferences)) {
|
||||
case Codec2.FREEDV_MODE_700C:
|
||||
return "700C";
|
||||
case Codec2.FREEDV_MODE_700D:
|
||||
return "700D";
|
||||
case Codec2.FREEDV_MODE_700E:
|
||||
return "700E";
|
||||
case Codec2.FREEDV_MODE_1600:
|
||||
return "1600";
|
||||
case Codec2.FREEDV_MODE_800XA:
|
||||
return "800XA";
|
||||
case Codec2.FREEDV_MODE_2020:
|
||||
return "2020";
|
||||
case Codec2.FREEDV_MODE_2020B:
|
||||
return "2020B";
|
||||
case Codec2.FREEDV_MODE_2400A:
|
||||
return "2400A";
|
||||
case Codec2.FREEDV_MODE_2400B:
|
||||
return "2400B";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.content.SharedPreferences;
|
|||
|
||||
import com.radio.codec2talkie.R;
|
||||
import com.radio.codec2talkie.settings.PreferenceKeys;
|
||||
import com.radio.codec2talkie.settings.SettingsWrapper;
|
||||
|
||||
public class RadioTools {
|
||||
|
||||
|
@ -15,8 +16,7 @@ public class RadioTools {
|
|||
int resultBps = 0;
|
||||
int maxSpeedBps = 128000;
|
||||
try {
|
||||
if (!sharedPreferences.getString(PreferenceKeys.PORTS_TYPE, "loopback").equals("sound_modem") &&
|
||||
sharedPreferences.getBoolean(PreferenceKeys.KISS_EXTENSIONS_ENABLED, false)) {
|
||||
if (!SettingsWrapper.isSoundModemEnabled(sharedPreferences) && SettingsWrapper.isKissExtensionEnabled(sharedPreferences)) {
|
||||
int bw = Integer.parseInt(sharedPreferences.getString(PreferenceKeys.KISS_EXTENSIONS_RADIO_BANDWIDTH, "125000"));
|
||||
int sf = Integer.parseInt(sharedPreferences.getString(PreferenceKeys.KISS_EXTENSIONS_RADIO_SF, "7"));
|
||||
int cr = Integer.parseInt(sharedPreferences.getString(PreferenceKeys.KISS_EXTENSIONS_RADIO_CR, "5"));
|
||||
|
|
|
@ -10,18 +10,19 @@ import com.radio.codec2talkie.connect.BluetoothSocketHandler;
|
|||
import com.radio.codec2talkie.connect.TcpIpSocketHandler;
|
||||
import com.radio.codec2talkie.connect.UsbPortHandler;
|
||||
import com.radio.codec2talkie.settings.PreferenceKeys;
|
||||
import com.radio.codec2talkie.settings.SettingsWrapper;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class TransportFactory {
|
||||
|
||||
public enum TransportType {
|
||||
USB("usb"),
|
||||
BLUETOOTH("bluetooth"),
|
||||
LOOPBACK("loopback"),
|
||||
TCP_IP("tcp_ip"),
|
||||
BLE("ble"),
|
||||
SOUND_MODEM("sound_modem");
|
||||
USB("USB"),
|
||||
BLUETOOTH("BLUETOOTH"),
|
||||
LOOPBACK("LOOPBACK"),
|
||||
TCP_IP("TCP_IP"),
|
||||
BLE("BLE"),
|
||||
SOUND_MODEM("SOUND_MODEM");
|
||||
|
||||
private final String _name;
|
||||
|
||||
|
@ -36,6 +37,7 @@ public class TransportFactory {
|
|||
}
|
||||
|
||||
public static Transport create(TransportType transportType, Context context) throws IOException {
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
||||
switch (transportType) {
|
||||
case USB:
|
||||
|
@ -47,16 +49,10 @@ public class TransportFactory {
|
|||
case BLE:
|
||||
return new Ble(BleHandler.getGatt(), BleHandler.getName());
|
||||
case SOUND_MODEM:
|
||||
return isFreeDv(context) ? new SoundModem(context) : new SoundModemFsk(context);
|
||||
return SettingsWrapper.isFreeDvSoundModemModulation(sharedPreferences) ? new SoundModem(context) : new SoundModemFsk(context);
|
||||
case LOOPBACK:
|
||||
default:
|
||||
return new Loopback();
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isFreeDv(Context context) {
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String modemType = sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_TYPE, "1200");
|
||||
return modemType.startsWith("F");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -361,12 +361,12 @@
|
|||
</string-array>
|
||||
|
||||
<string-array name="ports_type_values">
|
||||
<item>loopback</item>
|
||||
<item>bluetooth</item>
|
||||
<item>ble</item>
|
||||
<item>tcp_ip</item>
|
||||
<item>usb</item>
|
||||
<item>sound_modem</item>
|
||||
<item>LOOPBACK</item>
|
||||
<item>BLUETOOTH</item>
|
||||
<item>BLE</item>
|
||||
<item>TCP_IP</item>
|
||||
<item>USB</item>
|
||||
<item>SOUND_MODEM</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="ports_sound_modem_rig_entries">
|
||||
|
|
Ładowanie…
Reference in New Issue