FT8CN/ft8cn/app/src/main/java/com/bg7yoz/ft8cn/connector/BaseRigConnector.java

156 wiersze
4.4 KiB
Java
Czysty Zwykły widok Historia

package com.bg7yoz.ft8cn.connector;
/**
* USB线FLEXICOM
*
* @author BG7YOZ
* @date 2023-03-20
*/
import com.bg7yoz.ft8cn.rigs.OnConnectReceiveData;
import com.bg7yoz.ft8cn.rigs.OnRigStateChanged;
public class BaseRigConnector {
private boolean connected;//是否处于连接状态
private OnConnectReceiveData onConnectReceiveData;//当接收到数据后的动作
private int controlMode;//控制模式
private OnRigStateChanged onRigStateChanged;
private final OnConnectorStateChanged onConnectorStateChanged=new OnConnectorStateChanged() {
@Override
public void onDisconnected() {
if (onRigStateChanged!=null){
onRigStateChanged.onDisconnected();
}
connected=false;
}
@Override
public void onConnected() {
if (onRigStateChanged!=null){
onRigStateChanged.onConnected();
}
connected=true;
}
@Override
public void onRunError(String message) {
if (onRigStateChanged!=null){
onRigStateChanged.onRunError(message);
}
connected=false;
}
};
public BaseRigConnector(int controlMode) {
this.controlMode=controlMode;
}
/**
*
* @param data
*/
public synchronized void sendData(byte[] data){};
/**
* PTTON OFF,RTSDTR线CableConnector
* @param on ON
*/
public void setPttOn(boolean on){};
/**
* 使PTT
* @param command
*/
public void setPttOn(byte[] command){};
public void setControlMode(int mode){
controlMode=mode;
}
public int getControlMode() {
return controlMode;
}
public void setOnConnectReceiveData(OnConnectReceiveData receiveData){
onConnectReceiveData=receiveData;
}
/**
* 2023-08-16 DS1UFX0.9(tr)uSDX audio over cat
* 16int32float
* @param data byte16int
*/
public void sendWaveData(byte[] data){
float[] waveFloat=new float[data.length/2];
for (int i = 0; i <waveFloat.length ; i++) {
waveFloat[i]=readShortBigEndianData(data,i*2)/32768.0f;
}
sendWaveData(waveFloat);
}
public void sendWaveData(float[] data){
//留给网络方式发送音频流
}
public void sendFt8A91(byte[] a91,float baseFreq){
//用于给x6100的ft8cns模式
}
public void setRFVolume(int volume){
//用于给x6100的ft8cns模式
}
//2023-08-16 由DS1UFX提交修改基于0.9版),用于(tr)uSDX audio over cat的支持。
public void receiveWaveData(byte[] data){
float[] waveFloat=new float[data.length/2];
for (int i = 0; i <waveFloat.length ; i++) {
waveFloat[i]=readShortBigEndianData(data,i*2)/32768.0f;
}
receiveWaveData(waveFloat);
}
public void receiveWaveData(short[] data){
float[] waveFloat=new float[data.length];
for (int i = 0; i <waveFloat.length ; i++) {
waveFloat[i]=data[i]/32768.0f;
}
receiveWaveData(waveFloat);
}
public void receiveWaveData(float[] data){
}
public OnConnectReceiveData getOnConnectReceiveData() {
return onConnectReceiveData;
}
public void connect(){
}
public void disconnect(){
}
public OnRigStateChanged getOnRigStateChanged() {
return onRigStateChanged;
}
public void setOnRigStateChanged(OnRigStateChanged onRigStateChanged) {
this.onRigStateChanged = onRigStateChanged;
}
public OnConnectorStateChanged getOnConnectorStateChanged() {
return onConnectorStateChanged;
}
public boolean isConnected(){
return connected;
}
/**
* Short
*
* @param data
* @param start
* @return Int16
*/
public static short readShortBigEndianData(byte[] data, int start) {
if (data.length - start < 2) return 0;
return (short) ((short) data[start] & 0xff
| ((short) data[start + 1] & 0xff) << 8);
}
}