2023-02-26 05:21:16 +00:00
|
|
|
|
package com.bg7yoz.ft8cn.rigs;
|
|
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
|
import android.util.Log;
|
|
|
|
|
|
2023-07-09 05:02:45 +00:00
|
|
|
|
import com.bg7yoz.ft8cn.Ft8Message;
|
2023-08-15 04:42:44 +00:00
|
|
|
|
import com.bg7yoz.ft8cn.GeneralVariables;
|
2023-03-24 16:43:34 +00:00
|
|
|
|
import com.bg7yoz.ft8cn.connector.FlexConnector;
|
2023-02-26 05:21:16 +00:00
|
|
|
|
import com.bg7yoz.ft8cn.flex.FlexCommand;
|
|
|
|
|
import com.bg7yoz.ft8cn.flex.FlexRadio;
|
2023-08-15 04:42:44 +00:00
|
|
|
|
import com.bg7yoz.ft8cn.ft8transmit.GenerateFT8;
|
2023-02-26 05:21:16 +00:00
|
|
|
|
|
2023-08-15 04:42:44 +00:00
|
|
|
|
public class FlexNetworkRig extends BaseRig {
|
|
|
|
|
private static final String TAG = "FlexNetworkRig";
|
2023-02-26 05:21:16 +00:00
|
|
|
|
private int commandSeq = 1;//指令的序列
|
|
|
|
|
private FlexCommand flexCommand;
|
|
|
|
|
private String commandStr;
|
2023-08-15 04:42:44 +00:00
|
|
|
|
|
2023-02-26 05:21:16 +00:00
|
|
|
|
//private final int ctrAddress=0xE0;//接收地址,默认0xE0;电台回复命令有时也可以是0x00
|
|
|
|
|
//private byte[] dataBuffer=new byte[0];//数据缓冲区
|
|
|
|
|
@SuppressLint("DefaultLocale")
|
|
|
|
|
public void sendCommand(FlexCommand command, String cmdContent) {
|
|
|
|
|
if (getConnector().isConnected()) {
|
|
|
|
|
commandSeq++;
|
|
|
|
|
flexCommand = command;
|
|
|
|
|
commandStr = String.format("C%d%03d|%s\n", commandSeq, command.ordinal()
|
|
|
|
|
, cmdContent);
|
|
|
|
|
getConnector().sendData(commandStr.getBytes());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressLint("DefaultLocale")
|
|
|
|
|
public synchronized void commandSliceTune(int sliceOder, String freq) {
|
|
|
|
|
sendCommand(FlexCommand.SLICE_TUNE, String.format("slice t %d %s", sliceOder, freq));
|
|
|
|
|
}
|
2023-08-15 04:42:44 +00:00
|
|
|
|
|
2023-02-26 05:21:16 +00:00
|
|
|
|
@SuppressLint("DefaultLocale")
|
|
|
|
|
public synchronized void commandSliceSetMode(int sliceOder, FlexRadio.FlexMode mode) {
|
|
|
|
|
sendCommand(FlexCommand.SLICE_SET_TX_ANT, String.format("slice s %d mode=%s", sliceOder, mode.toString()));
|
|
|
|
|
}
|
2023-08-15 04:42:44 +00:00
|
|
|
|
|
2023-02-26 05:21:16 +00:00
|
|
|
|
@Override
|
|
|
|
|
public void setPTT(boolean on) {
|
2023-03-24 16:43:34 +00:00
|
|
|
|
getConnector().setPttOn(on);
|
2023-02-26 05:21:16 +00:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isConnected() {
|
2023-08-15 04:42:44 +00:00
|
|
|
|
if (getConnector() == null) {
|
2023-02-26 05:21:16 +00:00
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return getConnector().isConnected();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void setUsbModeToRig() {
|
2023-08-15 04:42:44 +00:00
|
|
|
|
if (getConnector() != null) {
|
2023-02-26 05:21:16 +00:00
|
|
|
|
commandSliceSetMode(0, FlexRadio.FlexMode.DIGU);//设置操作模式
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@SuppressLint("DefaultLocale")
|
|
|
|
|
@Override
|
|
|
|
|
public void setFreqToRig() {
|
2023-08-15 04:42:44 +00:00
|
|
|
|
if (getConnector() != null) {
|
|
|
|
|
commandSliceTune(0, String.format("%.3f", getFreq() / 1000000f));
|
2023-02-26 05:21:16 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onReceiveData(byte[] data) {
|
|
|
|
|
//ToastMessage.show("--"+byteToStr(data));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void readFreqFromRig() {
|
2023-08-15 04:42:44 +00:00
|
|
|
|
if (getConnector() != null) {
|
2023-02-26 05:21:16 +00:00
|
|
|
|
//getConnector().sendData(IcomRigConstant.setReadFreq(ctrAddress, getCivAddress()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-24 16:43:34 +00:00
|
|
|
|
@Override
|
2023-07-09 05:02:45 +00:00
|
|
|
|
public void sendWaveData(Ft8Message message) {
|
|
|
|
|
|
2023-08-15 04:42:44 +00:00
|
|
|
|
if (getConnector() != null) {
|
|
|
|
|
float[] data = GenerateFT8.generateFt8(message, GeneralVariables.getBaseFrequency()
|
|
|
|
|
, 24000);//flex音频的采样率是24000,todo 此处可改为动态设置24000,48000
|
|
|
|
|
if (data == null) {
|
|
|
|
|
setPTT(false);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
getConnector().sendWaveData(data);
|
|
|
|
|
}
|
2023-03-24 16:43:34 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-02-26 05:21:16 +00:00
|
|
|
|
@Override
|
|
|
|
|
public String getName() {
|
|
|
|
|
return "FlexRadio series";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getFrequencyStr() {
|
|
|
|
|
return BaseRigOperation.getFrequencyStr(getFreq());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public FlexNetworkRig() {
|
|
|
|
|
Log.d(TAG, "FlexRadio: Create.");
|
|
|
|
|
}
|
|
|
|
|
}
|