FT8CN/ft8CN/app/src/main/java/com/bg7yoz/ft8cn/rigs/FlexNetworkRig.java

114 wiersze
3.3 KiB
Java
Czysty Wina Historia

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.bg7yoz.ft8cn.rigs;
import android.annotation.SuppressLint;
import android.util.Log;
import com.bg7yoz.ft8cn.Ft8Message;
import com.bg7yoz.ft8cn.GeneralVariables;
import com.bg7yoz.ft8cn.connector.FlexConnector;
import com.bg7yoz.ft8cn.flex.FlexCommand;
import com.bg7yoz.ft8cn.flex.FlexRadio;
import com.bg7yoz.ft8cn.ft8transmit.GenerateFT8;
public class FlexNetworkRig extends BaseRig {
private static final String TAG = "FlexNetworkRig";
private int commandSeq = 1;//指令的序列
private FlexCommand flexCommand;
private String commandStr;
//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));
}
@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()));
}
@Override
public void setPTT(boolean on) {
getConnector().setPttOn(on);
}
@Override
public boolean isConnected() {
if (getConnector() == null) {
return false;
}
return getConnector().isConnected();
}
@Override
public void setUsbModeToRig() {
if (getConnector() != null) {
commandSliceSetMode(0, FlexRadio.FlexMode.DIGU);//设置操作模式
}
}
@SuppressLint("DefaultLocale")
@Override
public void setFreqToRig() {
if (getConnector() != null) {
commandSliceTune(0, String.format("%.3f", getFreq() / 1000000f));
}
}
@Override
public void onReceiveData(byte[] data) {
//ToastMessage.show("--"+byteToStr(data));
}
@Override
public void readFreqFromRig() {
if (getConnector() != null) {
//getConnector().sendData(IcomRigConstant.setReadFreq(ctrAddress, getCivAddress()));
}
}
@Override
public void sendWaveData(Ft8Message message) {
if (getConnector() != null) {
float[] data = GenerateFT8.generateFt8(message, GeneralVariables.getBaseFrequency()
, 24000);//flex音频的采样率是24000todo 此处可改为动态设置2400048000
if (data == null) {
setPTT(false);
return;
}
getConnector().sendWaveData(data);
}
}
@Override
public String getName() {
return "FlexRadio series";
}
public String getFrequencyStr() {
return BaseRigOperation.getFrequencyStr(getFreq());
}
public FlexNetworkRig() {
Log.d(TAG, "FlexRadio: Create.");
}
}