[change]修改工控机重启接口:增加重接所有节点接口 移除重启工控机 重启Docker 关机 接口

This commit is contained in:
xinfengkun
2022-04-27 19:08:39 +08:00
parent b6cde2417d
commit 80648133bb
28 changed files with 336 additions and 179 deletions

View File

@@ -69,4 +69,5 @@ dependencies {
implementation 'org.greenrobot:eventbus:3.2.0'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.mogo.cloud:telematic:1.3.55'
implementation 'com.jcraft:jsch:0.1.55'
}

View File

@@ -57,6 +57,7 @@ public class DataDistribution {
}
public void registerOnAdasClientListener(OnAdasClientListener listener) {
this.listener = null;
this.listener = listener;
// if (!listeners.contains(listener)) {
// listeners.add(listener);

View File

@@ -9,6 +9,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
@@ -113,6 +115,16 @@ public class AutopilotConfigAdapter extends RecyclerView.Adapter<AutopilotConfig
}
holder.setViaData();
holder.del.setVisibility(isShowDel ? View.VISIBLE : View.GONE);
if (mode.isBus) {
holder.bus.setChecked(true);
} else {
holder.taxi.setChecked(true);
}
if (!TextUtils.isEmpty(mode.routeName)) {
holder.route_name.setText(mode.routeName);
}
if (mode.routeID != -1)
holder.route_id.setText(String.valueOf(mode.routeID));
}
//返回Item的数量
@@ -132,14 +144,24 @@ public class AutopilotConfigAdapter extends RecyclerView.Adapter<AutopilotConfig
EditText start_lat;
EditText end_lon;
EditText end_lat;
EditText route_id;
EditText route_name;
TextView num;
TextView del;
ImageView add;
ImageView minus;
ViaPositionAdapter adapter;
RadioGroup car_type;
RadioButton taxi;
RadioButton bus;
MyViewHolder(View itemView) {
super(itemView);
route_id = itemView.findViewById(R.id.route_id);
route_name = itemView.findViewById(R.id.route_name);
car_type = itemView.findViewById(R.id.car_type);
taxi = itemView.findViewById(R.id.taxi);
bus = itemView.findViewById(R.id.bus);
recyclerView = itemView.findViewById(R.id.RecyclerView);
path_name = itemView.findViewById(R.id.path_name);
speed = itemView.findViewById(R.id.speed);
@@ -154,6 +176,12 @@ public class AutopilotConfigAdapter extends RecyclerView.Adapter<AutopilotConfig
add = itemView.findViewById(R.id.add);
minus = itemView.findViewById(R.id.minus);
initRecyclerView();
car_type.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
datas.get(getBindingAdapterPosition()).isBus = checkedId == R.id.bus;
}
});
minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -366,6 +394,53 @@ public class AutopilotConfigAdapter extends RecyclerView.Adapter<AutopilotConfig
}
});
route_name.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
datas.get(getBindingAdapterPosition()).routeName = s.toString().trim();
}
});
route_id.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!TextUtils.isEmpty(s)) {
try {
datas.get(getBindingAdapterPosition()).routeID = Integer.parseInt(s.toString().trim());
} catch (Exception e) {
e.printStackTrace();
speed.setText("");
Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show();
}
} else {
datas.get(getBindingAdapterPosition()).routeID = -1;
}
}
});
}
private void initRecyclerView() {

View File

@@ -31,7 +31,7 @@ public class LineAdapter extends BaseAdapter<AutoPilotMode, LineAdapter.ViewHold
@Override
protected void onBindDataToItem(ViewHolder viewHolder, AutoPilotMode data, int position) {
viewHolder.title.setText(data.name + " " + data.startName + "->" + data.endName);
viewHolder.title.setText("" + (data.isBus ? "Bus" : "Taxi") + "" + data.name + " " + data.startName + "->" + data.endName);
}
@Override

View File

@@ -15,6 +15,9 @@ public class AutoPilotMode {
public Location endLatLon;
public double speedLimit;
public List<Location> wayLatLons;
public int routeID = -1;//道路ID
public String routeName;//道路名称
public boolean isBus = false;//truebus falsetaxi
public List<MessagePad.Location> getWayLatLons() {
if (wayLatLons == null || wayLatLons.isEmpty()) return null;
@@ -52,8 +55,13 @@ public class AutoPilotMode {
}
}
}
return TextUtils.isEmpty(name) || TextUtils.isEmpty(startName) || TextUtils.isEmpty(endName) ||
startLatLon == null || startLatLon.isNull() || endLatLon == null || endLatLon.isNull() ||
speedLimit == 0.0;
if (isBus) {
return TextUtils.isEmpty(name) || TextUtils.isEmpty(startName) || TextUtils.isEmpty(endName) ||
startLatLon == null || startLatLon.isNull() || endLatLon == null || endLatLon.isNull() ||
speedLimit == 0.0 || routeID == -1 || TextUtils.isEmpty(routeName);
} else
return TextUtils.isEmpty(name) || TextUtils.isEmpty(startName) || TextUtils.isEmpty(endName) ||
startLatLon == null || startLatLon.isNull() || endLatLon == null || endLatLon.isNull() ||
speedLimit == 0.0;
}
}

View File

@@ -15,7 +15,7 @@
* limitations under the License.
*/
package com.zhidao.support.adas.high.common;
package com.zhidao.adas.client.ssh;
import java.math.BigInteger;

View File

@@ -1,8 +1,10 @@
package com.zhidao.support.adas.high.common;
package com.zhidao.adas.client.ssh;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.security.KeyFactory;

View File

@@ -1,4 +1,4 @@
package com.zhidao.support.adas.high.common;
package com.zhidao.adas.client.ssh;
import android.text.TextUtils;
@@ -6,7 +6,7 @@ import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.zhidao.support.adas.high.bean.SSHResult;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

View File

@@ -0,0 +1,65 @@
package com.zhidao.adas.client.ssh;
import android.text.TextUtils;
import com.zhidao.support.adas.high.common.ThreadPoolManager;
public class SSHManager {
private OnSShListener listener;
public interface OnSShListener {
/**
* 向IPC发送命令返回结果
*
* @param info
*/
void onSSHResult(SSHResult info);
}
private String ipcConnectedIp;
private SSH ssh;
public void shutdownIPC() {
sendIPCCmd("sudo -S shutdown -h now");
}
public void rebootIPC() {
sendIPCCmd("sudo -S reboot");
}
public void rebootAPDocker() {
sendIPCCmd("docker restart autocar_default_1");
}
private void sendIPCCmd(final String cmd) {
if (ssh == null) {
if (TextUtils.isEmpty(ipcConnectedIp)) {
if (listener != null) {
listener.onSSHResult(new SSHResult(SSHResult.RESULT_CODE.IP_UNKNOWN, cmd, "IPC IP未知"));
}
return;
}
ThreadPoolManager.getsInstance().execute(new Runnable() {
@Override
public void run() {
ssh = new SSH();
String encodePwd = SSHTool.getEncodePwd();
String privateKey = SSHTool.getPrivateKey();
try {
String pwd = RSATool.decodeByPrivateKey(encodePwd, Base64.decodeBase64(privateKey));
ssh.connect(ipcConnectedIp, 22, "reset", pwd);
SSHResult result = ssh.exec(cmd, pwd);
if (listener != null)
listener.onSSHResult(result);
} catch (Exception e) {
if (listener != null)
listener.onSSHResult(new SSHResult(SSHResult.RESULT_CODE.ERROR, cmd, e.getMessage()));
e.printStackTrace();
}
ssh.disConnect();
ssh = null;
}
});
}
}
}

View File

@@ -1,10 +1,22 @@
package com.zhidao.support.adas.high.bean;
package com.zhidao.adas.client.ssh;
import com.zhidao.adas.client.DataDistribution;
import com.zhidao.adas.client.bean.MySSHResult;
import com.zhidao.support.adas.high.common.CupidLogUtils;
/**
* SSH返回结果
*/
public class SSHResult {
public void onSSHResult(final SSHResult info) {
MySSHResult result = new MySSHResult(info.toString(), 0);
DataDistribution.getInstance().addData(result);
// showToastCenter("IPC命令下发结果" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg);
// CupidLogUtils.w(TAG, "IPC命令下发结果" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg);
}
public interface RESULT_CODE {
/**
* 工控机IP未知

View File

@@ -1,4 +1,4 @@
package com.zhidao.support.adas.high.common;
package com.zhidao.adas.client.ssh;
public class SSHTool {
static {

View File

@@ -15,8 +15,8 @@ import androidx.recyclerview.widget.SimpleItemAnimator;
import com.zhidao.adas.client.R;
import com.zhidao.adas.client.adapter.LineAdapter;
import com.zhidao.adas.client.base.BaseAdapter;
import com.zhidao.adas.client.bean.UpdateDataEvent;
import com.zhidao.adas.client.bean.AutoPilotMode;
import com.zhidao.adas.client.bean.UpdateDataEvent;
import com.zhidao.adas.client.utils.Constants;
import com.zhidao.support.adas.high.AdasManager;
@@ -109,6 +109,10 @@ public class AutoPilotModeDialog extends Dialog {
builder.setSpeedLimit(data.speedLimit);
builder.setVehicleType(9);
builder.setIsSpeakVoice(true);
if (data.isBus) {
builder.setRouteID(data.routeID);
builder.setRouteName(data.routeName);
}
AdasManager.getInstance().sendAutoPilotModeReq(1, 0, builder.build());
AutoPilotModeDialog.this.dismiss();
}

View File

@@ -189,7 +189,7 @@ public class AutopilotConfigActivity extends BaseActivity {
});
} else {
builder.setTitle("保存失败")
.setMessage("请输入必填项\n所有输入框均必填\uD83E\uDD2A")
.setMessage("请输入必填项\n所有输入框均必填\uD83E\uDD2A\n(Bus必须输入道路名称和道路ID)")
.setPositiveButton("确认",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {

View File

@@ -12,7 +12,6 @@ import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
@@ -73,7 +72,7 @@ import com.zhidao.support.adas.high.OnAdasConnectStatusListener;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.OnMultiDeviceListener;
import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo;
import com.zhidao.support.adas.high.bean.SSHResult;
import com.zhidao.adas.client.ssh.SSHResult;
import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.common.ProtocolStatus;
@@ -472,9 +471,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
titleBtnData.add("数据采集end");
titleBtnData.add("发送信号灯");
titleBtnData.add("自动驾驶限速");
titleBtnData.add("重启Docker");
titleBtnData.add("重启IPC");
titleBtnData.add("关机");
titleBtnData.add("重启所有节点");
titleBtnData.add("采集类型");
titleBtnData.add("打开演示模式");
titleBtnData.add("关闭演示模式");
@@ -711,13 +708,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
return status;
}
@Override
public void onSSHResult(final SSHResult info) {
MySSHResult result = new MySSHResult(info.toString(), 0);
DataDistribution.getInstance().addData(result);
showToastCenter("IPC命令下发结果" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg);
CupidLogUtils.w(TAG, "IPC命令下发结果" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg);
}
@Override
public void onError(ProtocolStatus status, byte[] bytes) {
@@ -819,9 +810,6 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
private void initAdas() {
CupidLogUtils.e(TAG, "--->初始化");
AdasOptions options;
@@ -1084,26 +1072,19 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
break;
case 8:
//重启Docker
AdasManager.getInstance().rebootAPDocker();
//重启所有节点
AdasManager.getInstance().sendSystemCmdReq(MessagePad.SystemCmdType.SYSTEMCMD_REBOOT);
break;
case 9:
//重启IPC
AdasManager.getInstance().rebootIPC();
break;
case 10:
//关机
AdasManager.getInstance().shutdownIPC();
break;
case 11:
//采集类型
AdasManager.getInstance().sendRecordCause(recordKey, recordFileName, "1", "变道有干扰");
break;
case 12:
case 10:
//打开演示模式
AdasManager.getInstance().sendDemoModeReq(1);
break;
case 13:
case 11:
//关闭演示模式
AdasManager.getInstance().sendDemoModeReq(0);
break;

View File

@@ -20,6 +20,79 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<RadioGroup
android:id="@+id/car_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/taxi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Taxi" />
<RadioButton
android:id="@+id/bus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bus" />
</RadioGroup>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:layout_toStartOf="@id/speed"
android:text="道路名称:"
android:textColor="#000"
android:textSize="16sp" />
<EditText
android:id="@+id/route_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/hint_speed"
android:hint="路线名称"
android:inputType="text"
android:maxLines="1"
android:textColor="#000"
android:textSize="25sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="5dp"
android:layout_toStartOf="@id/speed"
android:text="道路ID"
android:textColor="#000"
android:textSize="16sp" />
<EditText
android:id="@+id/route_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/hint_speed"
android:hint="路线名称"
android:inputType="number"
android:maxLines="1"
android:textColor="#000"
android:textSize="25sp" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

View File

@@ -16,6 +16,6 @@
android:gravity="center"
android:text="INFO"
android:textColor="@drawable/item_text_color"
android:textSize="16sp" />
android:textSize="14sp" />
</LinearLayout>

View File

@@ -310,11 +310,11 @@ class MoGoAutopilotProvider :
}
override fun setIPCShutDown() {
AdasManager.getInstance().shutdownIPC()
// AdasManager.getInstance().shutdownIPC()
}
override fun setIPCReboot() {
AdasManager.getInstance().rebootAPDocker()
// AdasManager.getInstance().rebootAPDocker()
}
override fun recordCause(key: String?, name: String?, id: String?, reason: String?) {

View File

@@ -39,7 +39,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
import com.zhidao.support.adas.high.AdasManager
import com.zhidao.support.adas.high.OnAdasListener
import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo
import com.zhidao.support.adas.high.bean.SSHResult
import com.zhidao.support.adas.high.common.ProtocolStatus
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD
@@ -326,13 +325,13 @@ class MoGoAdasListenerImpl : OnAdasListener {
}
}
override fun onSSHResult(info: SSHResult?) {
if (info != null && "docker restart autocar_default_1" == info.cmd) {
showDockerRebootResult(info.code, info.msg)
} else {
CallerLogger.w("$M_ADAS_IMPL$TAG", "onSSHResult : result info is null")
}
}
// override fun onSSHResult(info: com.zhidao.adas.client.ssh.SSHResult?) {
// if (info != null && "docker restart autocar_default_1" == info.cmd) {
// showDockerRebootResult(info.code, info.msg)
// } else {
// CallerLogger.w("$M_ADAS_IMPL$TAG", "onSSHResult : result info is null")
// }
// }
override fun onError(status: ProtocolStatus, bytes: ByteArray) {

View File

@@ -34,6 +34,7 @@ enum MessageType
MsgTypeTrafficLightData = 0x1010c; //发送红绿灯数据到工控机
MsgTypeWarn = 0x1010d; //预警数据
MsgTypeArrivalNotification = 0x1010e; //到站提醒
MsgTypeSystemCmdReq = 0x1010f; //系统命令请求, 比如系统重启,启用新镜像
}
message Header
@@ -279,6 +280,19 @@ message ArrivalNotification
Location endLocation = 2;
}
// message definition for MsgTypeSystemCmdReq
enum SystemCmdType {
SYSTEMCMD_NONE = 0;
SYSTEMCMD_REBOOT = 1;
SYSTEMCMD_EMPLOY_NEW_IMAGE = 2;
SYSTEMCMD_SHUT_DOWN = 3;
}
message SystemCmdReq
{
SystemCmdType cmdType = 1; //
}

View File

@@ -83,21 +83,14 @@
~~~
~~~java
/**
* 向工控机发送关机命令
* 系统命令请求, 比如系统重启,启用新镜像
*
* @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点
* SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像)
* SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机
* @return boolean
*/
AdasManager.getInstance().shutdownIPC();
~~~
~~~java
/**
* 向工控机发送重启命令
*/
AdasManager.getInstance().rebootIPC();
~~~
~~~java
/**
* 向工控机发送重启自动驾驶Docker命令
*/
AdasManager.getInstance().rebootAPDocker();
AdasManager.getInstance().sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type);
~~~
~~~java
/**

View File

@@ -83,7 +83,7 @@ dependencies {
// implementation 'com.google.protobuf:protobuf-java:3.6.1'
// implementation 'com.google.protobuf:protoc:3.6.1'
// implementation 'com.google.protobuf:protobuf-java-util:3.6.1'
implementation 'com.jcraft:jsch:0.1.55'
// api project(path: ':lib_recorder')
// api "com.zhidao.support.recorder:recorder:1.0.0.3"

View File

@@ -13,19 +13,13 @@ import androidx.annotation.NonNull;
import com.google.gson.Gson;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.bean.BaseInfo;
import com.zhidao.support.adas.high.bean.SSHResult;
import com.zhidao.support.adas.high.common.Base64;
import com.zhidao.support.adas.high.common.Constants;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.common.DigitalTrans;
import com.zhidao.support.adas.high.common.IPCFixationIPHelper;
import com.zhidao.support.adas.high.common.MessageType;
import com.zhidao.support.adas.high.common.ProtocolStatus;
import com.zhidao.support.adas.high.common.RSATool;
import com.zhidao.support.adas.high.common.RegexUtils;
import com.zhidao.support.adas.high.common.SSH;
import com.zhidao.support.adas.high.common.SSHTool;
import com.zhidao.support.adas.high.common.ThreadPoolManager;
import com.zhidao.support.adas.high.msg.IMsg;
import com.zhidao.support.adas.high.msg.MyMessageFactory;
import com.zhidao.support.adas.high.protocol.RawData;
@@ -87,7 +81,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
* 工控机连接配置
*/
private final AdasOptions adasOptions;
private SSH ssh;
/**
* 已经链接成功的工控机IP 未连接未null
*/
@@ -200,53 +194,6 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
}
}
private void sendIPCCmd(final String cmd) {
if (ssh == null) {
if (TextUtils.isEmpty(ipcConnectedIp)) {
if (mAdasListener != null) {
mAdasListener.onSSHResult(new SSHResult(SSHResult.RESULT_CODE.IP_UNKNOWN, cmd, "IPC IP未知"));
}
return;
}
ThreadPoolManager.getsInstance().execute(new Runnable() {
@Override
public void run() {
ssh = new SSH();
String encodePwd = SSHTool.getEncodePwd();
String privateKey = SSHTool.getPrivateKey();
try {
String pwd = RSATool.decodeByPrivateKey(encodePwd, Base64.decodeBase64(privateKey));
ssh.connect(ipcConnectedIp, 22, "reset", pwd);
SSHResult result = ssh.exec(cmd, pwd);
if (mAdasListener != null)
mAdasListener.onSSHResult(result);
} catch (Exception e) {
if (mAdasListener != null)
mAdasListener.onSSHResult(new SSHResult(SSHResult.RESULT_CODE.ERROR, cmd, e.getMessage()));
e.printStackTrace();
}
ssh.disConnect();
ssh = null;
}
});
}
}
@Override
public void shutdownIPC() {
sendIPCCmd("sudo -S shutdown -h now");
}
@Override
public void rebootIPC() {
sendIPCCmd("sudo -S reboot");
}
@Override
public void rebootAPDocker() {
sendIPCCmd("docker restart autocar_default_1");
}
@Override
public String getIpcConnectedIp() {
return ipcConnectedIp;
@@ -747,5 +694,21 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
MessagePad.TrafficLightData req = builder.build();
return sendWsMessage(MessageType.TYPE_SEND_TRAFFIC_LIGHT_DATA.typeCode, req.toByteArray());
}
/**
* 系统命令请求, 比如系统重启,启用新镜像
*
* @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点
* SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像)
* SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机
* @return boolean
*/
@Override
public boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type) {
MessagePad.SystemCmdReq.Builder builder = MessagePad.SystemCmdReq.newBuilder();
builder.setCmdType(type);
MessagePad.SystemCmdReq req = builder.build();
return sendWsMessage(MessageType.TYPE_SEND_SYSTEM_CMD_REQ.typeCode, req.toByteArray());
}
}

View File

@@ -182,41 +182,6 @@ public class AdasManager implements IAdasNetCommApi {
}
}
/**
* 向工控机发送关机命令
* 目前提供的账号没有关机权限
*/
@Override
@Deprecated
public void shutdownIPC() {
if (mChannel != null) {
mChannel.shutdownIPC();
}
}
/**
* 向工控机发送重启命令
* 目前提供的账号没有重启权限
*/
@Override
@Deprecated
public void rebootIPC() {
if (mChannel != null) {
mChannel.rebootIPC();
}
}
/**
* 向工控机发送重启自动驾驶Docker命令
*/
@Override
public void rebootAPDocker() {
if (mChannel != null) {
mChannel.rebootAPDocker();
}
}
/**
* 解析工控机发送过来的数据
* 多设备时使用
@@ -412,6 +377,19 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.sendGlobalPathReq();
}
/**
* 系统命令请求, 比如系统重启,启用新镜像
*
* @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点
* SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像)
* SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机
* @return boolean
*/
@Override
public boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type) {
return mChannel != null && mChannel.sendSystemCmdReq(type);
}
/**
* 获取工控机固定IP列表
*

View File

@@ -170,6 +170,16 @@ public interface IAdasNetCommApi {
*/
boolean sendGlobalPathReq();
/**
* 系统命令请求, 比如系统重启,启用新镜像
*
* @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点
* SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像)
* SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机
* @return boolean
*/
boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type);
// TODO 需求暂停 待讨论
// boolean getRoutes();
@@ -181,24 +191,10 @@ public interface IAdasNetCommApi {
@Deprecated
void sendBaseInfo(BaseInfo info);
/**
* 向工控机发送关机命令
*/
void shutdownIPC();
/**
* 向工控机发送重启命令
*/
void rebootIPC();
/**
* 向工控机发送重启自动驾驶Docker命令
*/
void rebootAPDocker();
/**
* 解析工控机发送过来的数据
* 多设备时使用
*
* @param bytes 数据
*/
void parseIPCData(byte[] bytes);
@@ -209,5 +205,4 @@ public interface IAdasNetCommApi {
void setEnableLog(boolean isEnableLog);
}

View File

@@ -1,7 +1,6 @@
package com.zhidao.support.adas.high;
import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo;
import com.zhidao.support.adas.high.bean.SSHResult;
import com.zhidao.support.adas.high.common.ProtocolStatus;
import chassis.VehicleStateOuterClass;
@@ -84,7 +83,7 @@ public interface OnAdasListener {
/**
* 他车轨迹预测
*
* @param header 头
* @param header
* @param predictionObjects 他车轨迹预测数据
*/
void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects);
@@ -148,13 +147,6 @@ public interface OnAdasListener {
@Deprecated
void onUpgradeStateInfo(IPCUpgradeStateInfo info);
/**
* 向IPC发送命令返回结果
*
* @param info
*/
void onSSHResult(SSHResult info);
/**
* 数据错误
*

View File

@@ -37,6 +37,7 @@ public enum MessageType {
@Deprecated
TYPE_RECEIVE_WARN(MessagePad.MessageType.MsgTypeWarn, "预警数据"),
TYPE_RECEIVE_ARRIVAL_NOTIFICATION(MessagePad.MessageType.MsgTypeArrivalNotification, "到站提醒"),
TYPE_SEND_SYSTEM_CMD_REQ(MessagePad.MessageType.MsgTypeSystemCmdReq, "系统命令请求, 比如系统重启,启用新镜像"),
/**
* 工控机升级状态