kopia lustrzana https://github.com/N0BOY/FT8CN
119 wiersze
3.5 KiB
Java
119 wiersze
3.5 KiB
Java
package com.bg7yoz.ft8cn.connector;
|
||
|
||
import android.content.Context;
|
||
import android.util.Log;
|
||
|
||
import com.bg7yoz.ft8cn.database.ControlMode;
|
||
import com.bg7yoz.ft8cn.rigs.BaseRig;
|
||
import com.bg7yoz.ft8cn.serialport.util.SerialInputOutputManager;
|
||
|
||
/**
|
||
* 有线连接方式的Connector,这里是指USB方式的,继承于BaseRigConnector
|
||
*
|
||
* @author BG7YOZ
|
||
* @date 2023-03-20
|
||
*/
|
||
public class CableConnector extends BaseRigConnector {
|
||
private static final String TAG = "CableConnector";
|
||
|
||
//2023-08-16 由DS1UFX提交修改(基于0.9版),用于(tr)uSDX audio over cat的支持。
|
||
public interface OnCableDataReceived {
|
||
void OnWaveReceived(int bufferLen, float[] buffer);
|
||
}
|
||
|
||
private final CableSerialPort cableSerialPort;
|
||
|
||
private final BaseRig cableConnectedRig;
|
||
private OnCableDataReceived onCableDataReceived;
|
||
|
||
public CableConnector(Context context, CableSerialPort.SerialPort serialPort, int baudRate
|
||
//, int controlMode) {
|
||
, int controlMode, BaseRig cableConnectedRig) {
|
||
super(controlMode);
|
||
this.cableConnectedRig = cableConnectedRig;
|
||
cableSerialPort = new CableSerialPort(context, serialPort, baudRate, getOnConnectorStateChanged());
|
||
cableSerialPort.ioListener = new SerialInputOutputManager.Listener() {
|
||
@Override
|
||
public void onNewData(byte[] data) {
|
||
if (getOnConnectReceiveData() != null) {
|
||
getOnConnectReceiveData().onData(data);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void onRunError(Exception e) {
|
||
Log.e(TAG, "CableConnector error: " + e.getMessage());
|
||
getOnConnectorStateChanged().onRunError("与串口失去连接:" + e.getMessage());
|
||
}
|
||
};
|
||
//connect();
|
||
}
|
||
|
||
@Override
|
||
public synchronized void sendData(byte[] data) {
|
||
cableSerialPort.sendData(data);
|
||
}
|
||
|
||
|
||
@Override
|
||
public void setPttOn(boolean on) {
|
||
//只处理RTS和DTR
|
||
switch (getControlMode()) {
|
||
case ControlMode.DTR:
|
||
cableSerialPort.setDTR_On(on);//打开和关闭DTR
|
||
break;
|
||
case ControlMode.RTS:
|
||
cableSerialPort.setRTS_On(on);//打开和关闭RTS
|
||
break;
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void setPttOn(byte[] command) {
|
||
cableSerialPort.sendData(command);//以CAT指令发送PTT
|
||
}
|
||
|
||
|
||
//以下是(tr)uSDX与wave有关的代码,是2023-08-16 由DS1UFX提交修改(基于0.9版),用于(tr)uSDX audio over cat的支持。
|
||
@Override
|
||
public void sendWaveData(byte[] data) {
|
||
sendData(data);
|
||
}
|
||
|
||
// @Override
|
||
// public void sendWaveData(float[] data) {
|
||
// // TODO float to byte
|
||
// byte[] wave = new byte[data.length * 4];
|
||
//
|
||
// sendWaveData(wave);
|
||
// }
|
||
|
||
@Override
|
||
public void receiveWaveData(float[] data) {
|
||
Log.i(TAG, "received wave data");
|
||
|
||
if (onCableDataReceived != null) {
|
||
Log.i(TAG, "call onCableDataReceived.OnWaveReceived");
|
||
onCableDataReceived.OnWaveReceived(data.length, data);
|
||
}
|
||
}
|
||
|
||
public void setOnCableDataReceived(OnCableDataReceived onCableDataReceived) {
|
||
this.onCableDataReceived = onCableDataReceived;
|
||
}
|
||
|
||
|
||
@Override
|
||
public void connect() {
|
||
super.connect();
|
||
cableSerialPort.connect();
|
||
}
|
||
|
||
@Override
|
||
public void disconnect() {
|
||
cableConnectedRig.onDisconnecting();
|
||
super.disconnect();
|
||
cableSerialPort.disconnect();
|
||
}
|
||
}
|