From 810039cfc9d0a9d0b7e430147997d16d59b4236b Mon Sep 17 00:00:00 2001 From: stream Date: Tue, 2 Sep 2025 17:11:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8E=A5=E5=85=A5=E8=BE=B9=E7=BC=98?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=A7=A6=E6=8E=A7=EF=BC=8C=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=B8=AD=E6=8C=87=E5=AE=9A=E5=9D=90=E6=A0=87=E7=82=B9=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E6=A0=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmvr/web/controller/TestController.java | 43 + .../client/manage/GrpcServiceManager.java | 2 + .../edge/client/service/EdgeHlcService.java | 16 + .../service/impl/EdgeCameraServiceImpl.java | 20 +- .../service/impl/EdgeHlcServiceImpl.java | 84 + .../src/main/java/cmvr/api/HlcCommand.java | 1942 +++++++++++++++++ .../main/java/cmvr/api/HlcServiceGrpc.java | 276 +++ .../java/cmvr/api/HlcServiceOuterClass.java | 40 + .../src/main/proto/cmvr/api/hlc_command.proto | 24 + .../src/main/proto/cmvr/api/hlc_service.proto | 9 + .../llm/service/impl/LLMTouchServiceImpl.java | 49 +- .../cmvr/system/util/CarPathFinderUtil.java | 8 +- .../flow/runtime/engine/FlowTaskEngine.java | 9 - .../runtime/engine/FlowTaskRuntimeEntry.java | 8 +- .../edge/EdgeCameraOperateService.java | 19 +- .../operator/llm/LLMTouchOperateService.java | 5 + 16 files changed, 2498 insertions(+), 56 deletions(-) create mode 100644 cmvr-iot-admin/src/main/java/com/cmvr/web/controller/TestController.java create mode 100644 cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeHlcService.java create mode 100644 cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeHlcServiceImpl.java create mode 100644 cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcCommand.java create mode 100644 cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceGrpc.java create mode 100644 cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceOuterClass.java create mode 100644 cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_command.proto create mode 100644 cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_service.proto diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/TestController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/TestController.java new file mode 100644 index 0000000..f18652e --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/TestController.java @@ -0,0 +1,43 @@ +package com.cmvr.web.controller; + +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.edge.client.service.EdgeHlcService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; + +@Api(tags = "通用--测试") +@RestController +@RequestMapping("/common/test") +@RequiredArgsConstructor +public class TestController extends BaseController { + + private final EdgeHlcService edgeHlcService; + + @ApiOperation("图片标注") + @PostMapping("/mark") + public AjaxResult mark( + @RequestPart("image") MultipartFile image, + @RequestParam("x") Integer x, + @RequestParam("y") Integer y + ) { + try { + File tempFile = File.createTempFile("upload_", "_" + image.getOriginalFilename()); + image.transferTo(tempFile); + edgeHlcService.markPoint(tempFile,x,y); + } catch (IOException e) { + throw new RuntimeException(e); + } + return AjaxResult.ok(); + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcServiceManager.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcServiceManager.java index ee4474d..4176c5d 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcServiceManager.java +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/manage/GrpcServiceManager.java @@ -56,6 +56,7 @@ public class GrpcServiceManager { clientFactories.put(DexHandServiceGrpc.DexHandServiceStub.class, new GrpcClientFactory<>(DexHandServiceGrpc::newStub)); // 注册机械臂服务的stub clientFactories.put(HumanoidRobotServiceGrpc.HumanoidRobotServiceBlockingStub.class, new GrpcClientFactory<>(HumanoidRobotServiceGrpc::newBlockingStub)); + clientFactories.put(HlcServiceGrpc.HlcServiceBlockingStub.class, new GrpcClientFactory<>(HlcServiceGrpc::newBlockingStub)); } @@ -81,6 +82,7 @@ public class GrpcServiceManager { String grpcAddress = getGrpcServiceAddress(terminalId); return ManagedChannelBuilder.forTarget(grpcAddress) .usePlaintext() + .maxInboundMessageSize(50 * 1024 * 1024) // 50MB .build(); } diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeHlcService.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeHlcService.java new file mode 100644 index 0000000..2194037 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/EdgeHlcService.java @@ -0,0 +1,16 @@ +package com.cmvr.edge.client.service; + + +import java.io.File; + +public interface EdgeHlcService { + /** + * 触控 + */ + public String touch(File image, String terminalId, String deviceId, int x, int y, double maxForce); + + /** + * 图片标注 + */ + public void markPoint(File image, int x, int y); +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeCameraServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeCameraServiceImpl.java index 9b1f2e7..4f191cd 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeCameraServiceImpl.java +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeCameraServiceImpl.java @@ -161,29 +161,29 @@ public class EdgeCameraServiceImpl implements EdgeCameraService, EdgeStreamServi // 彩色图和深度图 CameraCommand.FrameData frame = feedback.getColorFrame(); - CameraCommand.FrameData depthFrame = feedback.getDepthFrame(); +// CameraCommand.FrameData depthFrame = feedback.getDepthFrame(); if (!feedback.hasColorFrame() || frame.getWidth() <= 0 || frame.getHeight() <= 0) { throw new GlobalException("响应图片数据无效"); } String filePath = saveImage(frame.getData(), frame.getWidth(), frame.getHeight(), false); - String deepFilePath = saveImage(depthFrame.getData(), depthFrame.getWidth(), depthFrame.getHeight(), true); - List result = new ArrayList<>(); +// String deepFilePath = saveImage(depthFrame.getData(), depthFrame.getWidth(), depthFrame.getHeight(), true); +// List result = new ArrayList<>(); try { MultipartFile file = convertFileToMultipartFile(filePath); - MultipartFile deepFile = convertFileToMultipartFile(deepFilePath); - String imageUrl = sysFileService.uploadFile(file, FileType.IMAGE.code()); - result.add(imageUrl); - String deepImageUrl = sysFileService.uploadFile(deepFile, FileType.IMAGE.code()); - result.add(deepImageUrl); +// MultipartFile deepFile = convertFileToMultipartFile(deepFilePath); + return sysFileService.uploadFile(file, FileType.IMAGE.code()); +// result.add(imageUrl); +// String deepImageUrl = sysFileService.uploadFile(deepFile, FileType.IMAGE.code()); +// result.add(deepImageUrl); } catch (IOException e) { throw new GlobalException("图片上传失败: " + e.getMessage()); } finally { deleteTempFile(filePath); - deleteTempFile(deepFilePath); +// deleteTempFile(deepFilePath); // todo 暂时不关闭摄像头 // stop(terminalId, deviceId); } - return JSON.toJSONString(result); +// return JSON.toJSONString(result); } // 缓冲区和收集状态 diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeHlcServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeHlcServiceImpl.java new file mode 100644 index 0000000..2704735 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeHlcServiceImpl.java @@ -0,0 +1,84 @@ +package com.cmvr.edge.client.service.impl; + +import cmvr.api.HlcCommand; +import cmvr.api.HlcServiceGrpc; +import com.alibaba.fastjson2.JSON; +import com.cmvr.edge.client.manage.GrpcServiceManager; +import com.cmvr.edge.client.service.EdgeHlcService; +import com.cmvr.edge.client.utils.EdgeCommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +@Slf4j +@Service +@RequiredArgsConstructor +public class EdgeHlcServiceImpl implements EdgeHlcService { + + private final GrpcServiceManager grpcServiceManager; + + @Override + public String touch(File image, String terminalId, String deviceId, int x, int y, double maxForce) { + HlcServiceGrpc.HlcServiceBlockingStub stub = grpcServiceManager.getGrpcClient(terminalId, HlcServiceGrpc.HlcServiceBlockingStub.class); + HlcCommand.Touch.Request request = HlcCommand.Touch.Request.newBuilder() + .setHeader(EdgeCommonUtil.buildRequest(deviceId)) + .setU(x) + .setV(y) + .setMaxForce(maxForce) + .build(); + String response = JSON.toJSONString(stub.touch(request).getHeader()); + log.info("触控调用成功,响应结果:{}", response); + markPoint(image,x,y); + return response; + } + + /** + * 在图片中指定坐标点进行标注 + * + * @param imageFile 原始图片文件 + * @param x 坐标 X + * @param y 坐标 Y + */ + @Override + public void markPoint(File imageFile, int x, int y) { + // 读入图片 + BufferedImage image; + try { + image = ImageIO.read(imageFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + Graphics2D g = image.createGraphics(); + + // 抗锯齿 + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + // 设置画笔颜色 + g.setColor(Color.GREEN); + + // 半径 + int radius = 5; + // 画实心圆 + g.fillOval(x - radius, y - radius, radius * 2, radius * 2); + + g.dispose(); + + // 输出文件 + String outPath = imageFile.getParent() + File.separator + + "marked_" + imageFile.getName(); + File outFile = new File(outPath); + + try { + ImageIO.write(image, "png", outFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + log.info("图片标注成功:{}", outPath); + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcCommand.java new file mode 100644 index 0000000..5e99b5d --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcCommand.java @@ -0,0 +1,1942 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/hlc_command.proto + +package cmvr.api; + +public final class HlcCommand { + private HlcCommand() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface TouchOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Touch) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code cmvr.api.Touch} + */ + public static final class Touch extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Touch) + TouchOrBuilder { + private static final long serialVersionUID = 0L; + // Use Touch.newBuilder() to construct. + private Touch(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Touch() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Touch(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.HlcCommand.Touch.class, cmvr.api.HlcCommand.Touch.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Touch.Request) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 触点坐标,unit: ms
+       * 
+ * + * int32 u = 2; + * @return The u. + */ + int getU(); + + /** + *
+       * 垂直坐标
+       * 
+ * + * int32 v = 3; + * @return The v. + */ + int getV(); + + /** + *
+       * 触控时允许的最大作用力,unit: N
+       * 
+ * + * double max_force = 4; + * @return The maxForce. + */ + double getMaxForce(); + } + /** + * Protobuf type {@code cmvr.api.Touch.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Touch.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.HlcCommand.Touch.Request.class, cmvr.api.HlcCommand.Touch.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int U_FIELD_NUMBER = 2; + private int u_; + /** + *
+       * 触点坐标,unit: ms
+       * 
+ * + * int32 u = 2; + * @return The u. + */ + @java.lang.Override + public int getU() { + return u_; + } + + public static final int V_FIELD_NUMBER = 3; + private int v_; + /** + *
+       * 垂直坐标
+       * 
+ * + * int32 v = 3; + * @return The v. + */ + @java.lang.Override + public int getV() { + return v_; + } + + public static final int MAX_FORCE_FIELD_NUMBER = 4; + private double maxForce_; + /** + *
+       * 触控时允许的最大作用力,unit: N
+       * 
+ * + * double max_force = 4; + * @return The maxForce. + */ + @java.lang.Override + public double getMaxForce() { + return maxForce_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (u_ != 0) { + output.writeInt32(2, u_); + } + if (v_ != 0) { + output.writeInt32(3, v_); + } + if (java.lang.Double.doubleToRawLongBits(maxForce_) != 0) { + output.writeDouble(4, maxForce_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (u_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, u_); + } + if (v_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, v_); + } + if (java.lang.Double.doubleToRawLongBits(maxForce_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(4, maxForce_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.HlcCommand.Touch.Request)) { + return super.equals(obj); + } + cmvr.api.HlcCommand.Touch.Request other = (cmvr.api.HlcCommand.Touch.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (getU() + != other.getU()) return false; + if (getV() + != other.getV()) return false; + if (java.lang.Double.doubleToLongBits(getMaxForce()) + != java.lang.Double.doubleToLongBits( + other.getMaxForce())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (37 * hash) + U_FIELD_NUMBER; + hash = (53 * hash) + getU(); + hash = (37 * hash) + V_FIELD_NUMBER; + hash = (53 * hash) + getV(); + hash = (37 * hash) + MAX_FORCE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getMaxForce())); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.HlcCommand.Touch.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.Touch.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Touch.Request) + cmvr.api.HlcCommand.Touch.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.HlcCommand.Touch.Request.class, cmvr.api.HlcCommand.Touch.Request.Builder.class); + } + + // Construct using cmvr.api.HlcCommand.Touch.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + u_ = 0; + + v_ = 0; + + maxForce_ = 0D; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Request getDefaultInstanceForType() { + return cmvr.api.HlcCommand.Touch.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Request build() { + cmvr.api.HlcCommand.Touch.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Request buildPartial() { + cmvr.api.HlcCommand.Touch.Request result = new cmvr.api.HlcCommand.Touch.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + result.u_ = u_; + result.v_ = v_; + result.maxForce_ = maxForce_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.HlcCommand.Touch.Request) { + return mergeFrom((cmvr.api.HlcCommand.Touch.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.HlcCommand.Touch.Request other) { + if (other == cmvr.api.HlcCommand.Touch.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.getU() != 0) { + setU(other.getU()); + } + if (other.getV() != 0) { + setV(other.getV()); + } + if (other.getMaxForce() != 0D) { + setMaxForce(other.getMaxForce()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 16: { + u_ = input.readInt32(); + + break; + } // case 16 + case 24: { + v_ = input.readInt32(); + + break; + } // case 24 + case 33: { + maxForce_ = input.readDouble(); + + break; + } // case 33 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private int u_ ; + /** + *
+         * 触点坐标,unit: ms
+         * 
+ * + * int32 u = 2; + * @return The u. + */ + @java.lang.Override + public int getU() { + return u_; + } + /** + *
+         * 触点坐标,unit: ms
+         * 
+ * + * int32 u = 2; + * @param value The u to set. + * @return This builder for chaining. + */ + public Builder setU(int value) { + + u_ = value; + onChanged(); + return this; + } + /** + *
+         * 触点坐标,unit: ms
+         * 
+ * + * int32 u = 2; + * @return This builder for chaining. + */ + public Builder clearU() { + + u_ = 0; + onChanged(); + return this; + } + + private int v_ ; + /** + *
+         * 垂直坐标
+         * 
+ * + * int32 v = 3; + * @return The v. + */ + @java.lang.Override + public int getV() { + return v_; + } + /** + *
+         * 垂直坐标
+         * 
+ * + * int32 v = 3; + * @param value The v to set. + * @return This builder for chaining. + */ + public Builder setV(int value) { + + v_ = value; + onChanged(); + return this; + } + /** + *
+         * 垂直坐标
+         * 
+ * + * int32 v = 3; + * @return This builder for chaining. + */ + public Builder clearV() { + + v_ = 0; + onChanged(); + return this; + } + + private double maxForce_ ; + /** + *
+         * 触控时允许的最大作用力,unit: N
+         * 
+ * + * double max_force = 4; + * @return The maxForce. + */ + @java.lang.Override + public double getMaxForce() { + return maxForce_; + } + /** + *
+         * 触控时允许的最大作用力,unit: N
+         * 
+ * + * double max_force = 4; + * @param value The maxForce to set. + * @return This builder for chaining. + */ + public Builder setMaxForce(double value) { + + maxForce_ = value; + onChanged(); + return this; + } + /** + *
+         * 触控时允许的最大作用力,unit: N
+         * 
+ * + * double max_force = 4; + * @return This builder for chaining. + */ + public Builder clearMaxForce() { + + maxForce_ = 0D; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Touch.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Touch.Request) + private static final cmvr.api.HlcCommand.Touch.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.HlcCommand.Touch.Request(); + } + + public static cmvr.api.HlcCommand.Touch.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.Touch.Response) + com.google.protobuf.MessageOrBuilder { + + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.Touch.Response} + */ + public static final class Response extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.Touch.Response) + ResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use Response.newBuilder() to construct. + private Response(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Response() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Response(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Response_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Response_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.HlcCommand.Touch.Response.class, cmvr.api.HlcCommand.Touch.Response.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.HlcCommand.Touch.Response)) { + return super.equals(obj); + } + cmvr.api.HlcCommand.Touch.Response other = (cmvr.api.HlcCommand.Touch.Response) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Response parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch.Response parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch.Response parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.HlcCommand.Touch.Response prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.Touch.Response} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Touch.Response) + cmvr.api.HlcCommand.Touch.ResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Response_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Response_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.HlcCommand.Touch.Response.class, cmvr.api.HlcCommand.Touch.Response.Builder.class); + } + + // Construct using cmvr.api.HlcCommand.Touch.Response.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_Response_descriptor; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Response getDefaultInstanceForType() { + return cmvr.api.HlcCommand.Touch.Response.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Response build() { + cmvr.api.HlcCommand.Touch.Response result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Response buildPartial() { + cmvr.api.HlcCommand.Touch.Response result = new cmvr.api.HlcCommand.Touch.Response(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.HlcCommand.Touch.Response) { + return mergeFrom((cmvr.api.HlcCommand.Touch.Response)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.HlcCommand.Touch.Response other) { + if (other == cmvr.api.HlcCommand.Touch.Response.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Touch.Response) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Touch.Response) + private static final cmvr.api.HlcCommand.Touch.Response DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.HlcCommand.Touch.Response(); + } + + public static cmvr.api.HlcCommand.Touch.Response getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Response parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch.Response getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.HlcCommand.Touch)) { + return super.equals(obj); + } + cmvr.api.HlcCommand.Touch other = (cmvr.api.HlcCommand.Touch) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.HlcCommand.Touch parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.HlcCommand.Touch parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.HlcCommand.Touch parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.HlcCommand.Touch parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.HlcCommand.Touch prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.Touch} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.Touch) + cmvr.api.HlcCommand.TouchOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.HlcCommand.Touch.class, cmvr.api.HlcCommand.Touch.Builder.class); + } + + // Construct using cmvr.api.HlcCommand.Touch.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.HlcCommand.internal_static_cmvr_api_Touch_descriptor; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch getDefaultInstanceForType() { + return cmvr.api.HlcCommand.Touch.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch build() { + cmvr.api.HlcCommand.Touch result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch buildPartial() { + cmvr.api.HlcCommand.Touch result = new cmvr.api.HlcCommand.Touch(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.HlcCommand.Touch) { + return mergeFrom((cmvr.api.HlcCommand.Touch)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.HlcCommand.Touch other) { + if (other == cmvr.api.HlcCommand.Touch.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.Touch) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.Touch) + private static final cmvr.api.HlcCommand.Touch DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.HlcCommand.Touch(); + } + + public static cmvr.api.HlcCommand.Touch getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Touch parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.HlcCommand.Touch getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Touch_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Touch_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Touch_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Touch_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_Touch_Response_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_Touch_Response_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\032cmvr/api/hlc_command.proto\022\010cmvr.api\032\025" + + "cmvr/api/common.proto\"\252\001\n\005Touch\032c\n\007Reque" + + "st\022/\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHea" + + "der.Request\022\t\n\001u\030\002 \001(\005\022\t\n\001v\030\003 \001(\005\022\021\n\tmax" + + "_force\030\004 \001(\001\032<\n\010Response\0220\n\006header\030\001 \001(\013" + + "2 .cmvr.api.CommandHeader.Feedbackb\006prot" + + "o3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.Common.getDescriptor(), + }); + internal_static_cmvr_api_Touch_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_cmvr_api_Touch_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Touch_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_Touch_Request_descriptor = + internal_static_cmvr_api_Touch_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_Touch_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Touch_Request_descriptor, + new java.lang.String[] { "Header", "U", "V", "MaxForce", }); + internal_static_cmvr_api_Touch_Response_descriptor = + internal_static_cmvr_api_Touch_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_Touch_Response_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_Touch_Response_descriptor, + new java.lang.String[] { "Header", }); + cmvr.api.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceGrpc.java new file mode 100644 index 0000000..72b901f --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceGrpc.java @@ -0,0 +1,276 @@ +package cmvr.api; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler (version 1.52.0)", + comments = "Source: cmvr/api/hlc_service.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class HlcServiceGrpc { + + private HlcServiceGrpc() {} + + public static final String SERVICE_NAME = "cmvr.api.HlcService"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getTouchMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "touch", + requestType = cmvr.api.HlcCommand.Touch.Request.class, + responseType = cmvr.api.HlcCommand.Touch.Response.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getTouchMethod() { + io.grpc.MethodDescriptor getTouchMethod; + if ((getTouchMethod = HlcServiceGrpc.getTouchMethod) == null) { + synchronized (HlcServiceGrpc.class) { + if ((getTouchMethod = HlcServiceGrpc.getTouchMethod) == null) { + HlcServiceGrpc.getTouchMethod = getTouchMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "touch")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.HlcCommand.Touch.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.HlcCommand.Touch.Response.getDefaultInstance())) + .setSchemaDescriptor(new HlcServiceMethodDescriptorSupplier("touch")) + .build(); + } + } + } + return getTouchMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static HlcServiceStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public HlcServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new HlcServiceStub(channel, callOptions); + } + }; + return HlcServiceStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static HlcServiceBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public HlcServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new HlcServiceBlockingStub(channel, callOptions); + } + }; + return HlcServiceBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static HlcServiceFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public HlcServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new HlcServiceFutureStub(channel, callOptions); + } + }; + return HlcServiceFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class HlcServiceImplBase implements io.grpc.BindableService { + + /** + */ + public void touch(cmvr.api.HlcCommand.Touch.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getTouchMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getTouchMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.HlcCommand.Touch.Request, + cmvr.api.HlcCommand.Touch.Response>( + this, METHODID_TOUCH))) + .build(); + } + } + + /** + */ + public static final class HlcServiceStub extends io.grpc.stub.AbstractAsyncStub { + private HlcServiceStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected HlcServiceStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new HlcServiceStub(channel, callOptions); + } + + /** + */ + public void touch(cmvr.api.HlcCommand.Touch.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getTouchMethod(), getCallOptions()), request, responseObserver); + } + } + + /** + */ + public static final class HlcServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private HlcServiceBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected HlcServiceBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new HlcServiceBlockingStub(channel, callOptions); + } + + /** + */ + public cmvr.api.HlcCommand.Touch.Response touch(cmvr.api.HlcCommand.Touch.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getTouchMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class HlcServiceFutureStub extends io.grpc.stub.AbstractFutureStub { + private HlcServiceFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected HlcServiceFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new HlcServiceFutureStub(channel, callOptions); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture touch( + cmvr.api.HlcCommand.Touch.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getTouchMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_TOUCH = 0; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final HlcServiceImplBase serviceImpl; + private final int methodId; + + MethodHandlers(HlcServiceImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_TOUCH: + serviceImpl.touch((cmvr.api.HlcCommand.Touch.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + default: + throw new AssertionError(); + } + } + } + + private static abstract class HlcServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + HlcServiceBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return cmvr.api.HlcServiceOuterClass.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("HlcService"); + } + } + + private static final class HlcServiceFileDescriptorSupplier + extends HlcServiceBaseDescriptorSupplier { + HlcServiceFileDescriptorSupplier() {} + } + + private static final class HlcServiceMethodDescriptorSupplier + extends HlcServiceBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + HlcServiceMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (HlcServiceGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new HlcServiceFileDescriptorSupplier()) + .addMethod(getTouchMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceOuterClass.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceOuterClass.java new file mode 100644 index 0000000..d25d4c6 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/HlcServiceOuterClass.java @@ -0,0 +1,40 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: cmvr/api/hlc_service.proto + +package cmvr.api; + +public final class HlcServiceOuterClass { + private HlcServiceOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\032cmvr/api/hlc_service.proto\022\010cmvr.api\032\032" + + "cmvr/api/hlc_command.proto2H\n\nHlcService" + + "\022:\n\005touch\022\027.cmvr.api.Touch.Request\032\030.cmv" + + "r.api.Touch.Responseb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + cmvr.api.HlcCommand.getDescriptor(), + }); + cmvr.api.HlcCommand.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_command.proto new file mode 100644 index 0000000..7c39ced --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_command.proto @@ -0,0 +1,24 @@ +syntax = "proto3"; + +import "cmvr/api/common.proto"; + +package cmvr.api; + + +message Touch{ + message Request{ + CommandHeader.Request header = 1; + // 触点坐标,unit: ms + int32 u = 2; // 水平坐标 + int32 v = 3; // 垂直坐标 + + // 触控时允许的最大作用力,unit: N + double max_force = 4; + } + + message Response{ + CommandHeader.Feedback header= 1; + } + +} + diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_service.proto new file mode 100644 index 0000000..7e14032 --- /dev/null +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/hlc_service.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +import "cmvr/api/hlc_command.proto"; + +package cmvr.api; + +service HlcService{ + rpc touch(Touch.Request) returns (Touch.Response); +} \ No newline at end of file diff --git a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LLMTouchServiceImpl.java b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LLMTouchServiceImpl.java index 4002c1e..764f8c8 100644 --- a/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LLMTouchServiceImpl.java +++ b/cmvr-iot-api/cmvr-iot-llm/src/main/java/com/cmvr/llm/service/impl/LLMTouchServiceImpl.java @@ -1,6 +1,8 @@ package com.cmvr.llm.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; @@ -8,12 +10,14 @@ import com.cmvr.common.exception.GlobalException; import com.cmvr.common.utils.http.CallAPIUtil; import com.cmvr.llm.config.APIProperties; import com.cmvr.llm.service.LLMTouchService; +import com.cmvr.llm.util.LargeModelFileUploadUtil; import com.cmvr.system.domain.vo.CarIcon; import com.cmvr.system.service.CarPathFinderService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.io.File; +import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -95,26 +99,29 @@ public class LLMTouchServiceImpl implements LLMTouchService { String iconName = nextStepIcon.getIconName(); try { // 上传截图 -// byte[] imageBytes = FileUtil.readBytes(image); -// imageUrl = LargeModelFileUploadUtil.uploadFile(imageBytes); -// -// // 拼接图标路径,例如 icons/honda/sedan/空调控制.png -// String iconPath = StrUtil.format("icon/{}/{}/{}.png", manufacturer, vehType, iconName); -// -// // 从 resources 加载图标文件 -// InputStream iconStream = this.getClass().getClassLoader().getResourceAsStream(iconPath); -// if (iconStream == null) { -// throw new GlobalException("未找到图标资源文件:" + iconPath); -// } -// -// // 上传图标 -// byte[] iconBytes = IoUtil.readBytes(iconStream); -// iconImageUrl = LargeModelFileUploadUtil.uploadFile(iconBytes); - imageUrl = "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload/full/5d/a3/07244360c69636d5c146e5470d8d5ddf12ceed2643ffd892b7b7a5c4aaeb&IsAnonymous=true"; - iconImageUrl = - iconName.equals("驾驶偏好") ? - "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload/full/a4/1b/6a7319709844c0f483a1d7adcfdbbff478ff5e34bed9ecff5d8fd407f3ac&IsAnonymous=true" - : "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload%2Ffull%2Ff1%2Fb9%2F8fb5f96f0299ccef60511eb8f7cfdcec890e563bc8e00854e63484086953&IsAnonymous=true"; + byte[] imageBytes = FileUtil.readBytes(image); + imageUrl = LargeModelFileUploadUtil.uploadFile(imageBytes); + + // 拼接图标路径,例如 icons/honda/sedan/空调控制.png + String iconPath = StrUtil.format("icon/{}/{}/{}.png", manufacturer, vehType, iconName); + + // 从 resources 加载图标文件 + InputStream iconStream = this.getClass().getClassLoader().getResourceAsStream(iconPath); + if (iconStream == null) { + throw new GlobalException("未找到图标资源文件:" + iconPath); + } + + // 上传图标 + byte[] iconBytes = IoUtil.readBytes(iconStream); + // 设置的icon +// iconImageUrl = "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload%2Ffull%2F8f%2F1a%2F1b0b791926b89d1c748c9cb1280bb3e4697543b3a715e692565107442c9c&IsAnonymous=true"; + iconImageUrl = LargeModelFileUploadUtil.uploadFile(iconBytes); +// imageUrl = "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload%2Ffull%2F88%2F99%2Fe4452191c9706d107c17b27dc0a08e13a3a1a85a261eec802ae85c11f26c&IsAnonymous=true"; +// imageUrl = "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload/full/5d/a3/07244360c69636d5c146e5470d8d5ddf12ceed2643ffd892b7b7a5c4aaeb&IsAnonymous=true"; +// iconImageUrl = +// iconName.equals("驾驶偏好") ? +// "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload/full/a4/1b/6a7319709844c0f483a1d7adcfdbbff478ff5e34bed9ecff5d8fd407f3ac&IsAnonymous=true" +// : "https://aiagentplatform.cmft.com/api/proxy/down?Action=Download&Version=2022-01-01&Path=upload%2Ffull%2Ff1%2Fb9%2F8fb5f96f0299ccef60511eb8f7cfdcec890e563bc8e00854e63484086953&IsAnonymous=true"; } catch (Exception e) { throw new GlobalException("上传图标或截图失败:" + e.getMessage()); } @@ -128,7 +135,7 @@ public class LLMTouchServiceImpl implements LLMTouchService { } // 7) 返回 - result.put("isFinish", false); + result.put("isFinish", path.size() == 1); result.put("coordinates", coordinates); return result; diff --git a/cmvr-iot-system/src/main/java/com/cmvr/system/util/CarPathFinderUtil.java b/cmvr-iot-system/src/main/java/com/cmvr/system/util/CarPathFinderUtil.java index f00d439..3b445a0 100644 --- a/cmvr-iot-system/src/main/java/com/cmvr/system/util/CarPathFinderUtil.java +++ b/cmvr-iot-system/src/main/java/com/cmvr/system/util/CarPathFinderUtil.java @@ -1,5 +1,6 @@ package com.cmvr.system.util; +import cn.hutool.core.util.ObjUtil; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.cmvr.system.domain.vo.CarIcon; @@ -52,7 +53,7 @@ public class CarPathFinderUtil { } } - uiMap.put(ui.getUiName(), ui); + uiMap.put(ui.getUiImage(), ui); } return uiMap; @@ -83,7 +84,10 @@ public class CarPathFinderUtil { } for (CarIcon icon : currentUi.getIcons()) { - if (icon.getIconName().equals(targetFeature)) { + if (ObjUtil.isEmpty(icon.getIconImage())) { + continue; + } + if (icon.getIconImage().equals(targetFeature)) { currentPath.add(icon); return currentPath; } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskEngine.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskEngine.java index 540bedd..8f40178 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskEngine.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskEngine.java @@ -51,14 +51,6 @@ public class FlowTaskEngine { context.setRunParams(jsonObject); } flowTaskExecutor.executeGraph(message, item, latch::countDown); -// flowTaskExecutor.executeGraph(message, item, () -> { -// try { -// // 可以放一些 per-item 回调逻辑 -// } finally { -// latch.countDown(); -// } -// }); - try { latch.await(); // 等待该检测项的子流程全部完成 } catch (InterruptedException e) { @@ -66,7 +58,6 @@ public class FlowTaskEngine { log.error("检测项执行被中断:itemId={}", itemId, e); break; } -// flowTaskExecutor.executeGraph(message, item, onFinished); } } } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java index 48ab150..46597ec 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java @@ -64,7 +64,7 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { try { // 注册上下文 - registerTaskContext(instId, taskId, terminalId, null, RunModeEnum.NORMAL, details, taskExecuteNormalVO.getRunParams()); + registerTaskContext(instId, taskId, terminalId, null, RunModeEnum.NORMAL, taskExecuteNormalVO.getRunParams()); // 异步提交执行 flowTaskAsyncDispatcher.submit(instId, taskId, terminalId, RunModeEnum.NORMAL, details); @@ -115,7 +115,7 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { List details = CollUtil.newArrayList(teQueryTaskDetailDTO); // 注册上下文 - registerTaskContext(instId, taskId, terminalId, itemId, RunModeEnum.TRIAL, details, runParams); + registerTaskContext(instId, taskId, terminalId, itemId, RunModeEnum.TRIAL, runParams); // 异步调度执行(与正式任务一致,只是模式为 TRIAL) flowTaskAsyncDispatcher.submit(instId, taskId, terminalId, RunModeEnum.TRIAL, details); @@ -139,7 +139,6 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { private TeTaskInst createAndSaveTaskInstance(String taskId, String terminalId, RunModeEnum runMode) { TeTaskInst instance = new TeTaskInst(); instance.setTaskId(taskId); -// instance.setConfig(JSON.toJSONString(taskExecuteVO.getConfig())); instance.setTerminalId(terminalId); instance.setRunMode(runMode.name()); instance.setStatus(String.valueOf(TaskStatusEnum.RUNNING.getCode())); @@ -154,8 +153,7 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { * 注册上下文 */ private void registerTaskContext(String instId, String taskId, String terminalId, - String itemId, RunModeEnum mode, List details, - JSONObject runParams) { + String itemId, RunModeEnum mode, JSONObject runParams) { TaskContext ctx = new TaskContext(); ctx.setInstId(instId); ctx.setTaskId(taskId); diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeCameraOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeCameraOperateService.java index 4e7539e..09b6964 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeCameraOperateService.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/edge/EdgeCameraOperateService.java @@ -55,16 +55,17 @@ public class EdgeCameraOperateService implements EdgeOperateService { } case CAMERA_GETRGBIMAGE: { - String imageUrl; +// String imageUrl; // String imageUrl = StrUtil.format("id为 [{}] 的相机拍照了", deviceId); - if (message.getLoopNum() <= 1) { - // 车辆控制调节 - imageUrl = "http://192.168.1.100:9000/cmvr-iot/FILE/20250821/1755761816340.jpg"; - } else { - // 驾驶偏好 - imageUrl = "http://192.168.1.100:9000/cmvr-iot/FILE/20250822/1755849654731.jpg"; - } -// String imageUrl = edgeCameraService.getRGBImage(terminalId, deviceId); +// if (message.getLoopNum() <= 1) { +// // 车辆控制调节 +// imageUrl = "http://192.168.1.100:9000/cmvr-iot/FILE/20250821/1755761816340.jpg"; +// } else { +// // 驾驶偏好 +// imageUrl = "http://192.168.1.100:9000/cmvr-iot/FILE/20250822/1755849654731.jpg"; +// } +// String imageUrl = "http://192.168.1.100:9000/cmvr-iot/IMAGE/20250901/1756718594725.jpg"; + String imageUrl = edgeCameraService.getRGBDImages(terminalId, deviceId); JSONArray imageUrls = new JSONArray(); if (ObjUtil.isNotEmpty(upstreamOutput)) { diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMTouchOperateService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMTouchOperateService.java index 14882e9..d9f6cd0 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMTouchOperateService.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/operator/llm/LLMTouchOperateService.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson2.JSONObject; import com.cmvr.common.config.properties.MinioProperties; import com.cmvr.common.core.minio.MinioService; import com.cmvr.common.exception.GlobalException; +import com.cmvr.edge.client.service.EdgeHlcService; import com.cmvr.llm.service.LLMTouchService; import com.cmvr.test.enums.ActionEnum; import com.cmvr.test.flow.builder.FlowNodeWrapper; @@ -27,6 +28,7 @@ public class LLMTouchOperateService implements LLMOperateService { private final MinioService minioService; private final MinioProperties minioProps; private final LLMTouchService llmTouchService; + private final EdgeHlcService edgeHlcService; @Override public boolean supports(ActionEnum action) { @@ -38,6 +40,8 @@ public class LLMTouchOperateService implements LLMOperateService { ActionEnum action = message.getAction(); String instId = message.getInstId(); JSONObject inputParams = message.getInputParams(); + String deviceId = inputParams.getString("deviceId"); + String terminalId = message.getTerminalId(); JSONObject output = new JSONObject(); switch (action) { @@ -76,6 +80,7 @@ public class LLMTouchOperateService implements LLMOperateService { output.put("coordinates", cal); // todo 获取坐标后调用边缘系统 + edgeHlcService.touch(image, terminalId, "hlc01", x, y, 100d); } catch (Exception e) { throw new RuntimeException(e); }