2023-08-15 05:18:25 +00:00
|
|
|
|
package com.bg7yoz.ft8cn.connector;
|
|
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
|
import android.util.Log;
|
|
|
|
|
|
|
|
|
|
import com.bg7yoz.ft8cn.database.ControlMode;
|
2023-08-06 16:14:57 +00:00
|
|
|
|
import com.bg7yoz.ft8cn.rigs.BaseRig;
|
2023-08-15 05:18:25 +00:00
|
|
|
|
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-06 18:56:34 +00:00
|
|
|
|
public interface OnCableDataReceived {
|
|
|
|
|
void OnWaveReceived(int bufferLen,float[] buffer);
|
|
|
|
|
}
|
2023-08-15 05:18:25 +00:00
|
|
|
|
|
|
|
|
|
private final CableSerialPort cableSerialPort;
|
2023-08-06 16:14:57 +00:00
|
|
|
|
private final BaseRig cableConnectedRig;
|
2023-08-06 18:56:34 +00:00
|
|
|
|
private OnCableDataReceived onCableDataReceived;
|
2023-08-15 05:18:25 +00:00
|
|
|
|
|
|
|
|
|
public CableConnector(Context context,CableSerialPort.SerialPort serialPort, int baudRate
|
2023-08-06 16:14:57 +00:00
|
|
|
|
, int controlMode, BaseRig cableConnectedRig) {
|
2023-08-15 05:18:25 +00:00
|
|
|
|
super(controlMode);
|
2023-08-06 16:14:57 +00:00
|
|
|
|
this.cableConnectedRig = cableConnectedRig;
|
2023-08-15 05:18:25 +00:00
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-07 13:27:13 +00:00
|
|
|
|
@Override
|
|
|
|
|
public void sendWaveData(byte[] data) {
|
|
|
|
|
sendData(data);
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-06 07:10:16 +00:00
|
|
|
|
@Override
|
|
|
|
|
public void sendWaveData(float[] data) {
|
|
|
|
|
// TODO float to byte
|
2023-08-07 13:27:13 +00:00
|
|
|
|
byte[] wave = new byte[data.length * 2];
|
|
|
|
|
sendWaveData(data);
|
2023-08-06 07:10:16 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-08-06 18:56:34 +00:00
|
|
|
|
@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;
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-15 05:18:25 +00:00
|
|
|
|
@Override
|
|
|
|
|
public void connect() {
|
|
|
|
|
super.connect();
|
|
|
|
|
cableSerialPort.connect();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void disconnect() {
|
2023-08-06 16:14:57 +00:00
|
|
|
|
cableConnectedRig.onDisconnecting();
|
2023-08-15 05:18:25 +00:00
|
|
|
|
super.disconnect();
|
|
|
|
|
cableSerialPort.disconnect();
|
|
|
|
|
}
|
|
|
|
|
}
|