package com.genersoft.iot.vmp.web.gb28181; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.genersoft.iot.vmp.gb28181.bean.Device; 
 | 
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; 
 | 
import com.genersoft.iot.vmp.storager.IVideoManagerStorager; 
 | 
import org.slf4j.Logger; 
 | 
import org.slf4j.LoggerFactory; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
/** 
 | 
 * API兼容:设备控制 
 | 
 */ 
 | 
@CrossOrigin 
 | 
@RestController 
 | 
@RequestMapping(value = "/api/v1/control") 
 | 
public class ApiControlController { 
 | 
  
 | 
    private final static Logger logger = LoggerFactory.getLogger(ApiControlController.class); 
 | 
  
 | 
    @Autowired 
 | 
    private SIPCommander cmder; 
 | 
  
 | 
    @Autowired 
 | 
    private IVideoManagerStorager storager; 
 | 
  
 | 
    /** 
 | 
     * 设备控制 - 云台控制 
 | 
     * @param serial 设备编号 
 | 
     * @param command 控制指令 允许值: left, right, up, down, upleft, upright, downleft, downright, zoomin, zoomout, stop 
 | 
     * @param channel 通道序号 
 | 
     * @param code 通道编号 
 | 
     * @param speed 速度(0~255) 默认值: 129 
 | 
     * @return 
 | 
     */ 
 | 
    @RequestMapping(value = "/ptz") 
 | 
    private JSONObject list(String serial,String command, 
 | 
                            @RequestParam(required = false)Integer channel, 
 | 
                            @RequestParam(required = false)String code, 
 | 
                            @RequestParam(required = false)Integer speed){ 
 | 
  
 | 
        if (logger.isDebugEnabled()) { 
 | 
            logger.debug("模拟接口> 设备云台控制 API调用,deviceId:{} ,channelId:{} ,command:{} ,speed:{} ", 
 | 
                    serial, code, command, speed); 
 | 
        } 
 | 
        if (channel == null) {channel = 0;} 
 | 
        if (speed == null) {speed = 0;} 
 | 
        Device device = storager.queryVideoDevice(serial); 
 | 
        if (device == null) { 
 | 
            JSONObject result = new JSONObject(); 
 | 
            result.put("error","device[ " + serial + " ]未找到"); 
 | 
            return result; 
 | 
        } 
 | 
        int cmdCode = 0; 
 | 
        switch (command){ 
 | 
            case "left": 
 | 
                cmdCode = 2; 
 | 
                break; 
 | 
            case "right": 
 | 
                cmdCode = 1; 
 | 
                break; 
 | 
            case "up": 
 | 
                cmdCode = 8; 
 | 
                break; 
 | 
            case "down": 
 | 
                cmdCode = 4; 
 | 
                break; 
 | 
            case "upleft": 
 | 
                cmdCode = 10; 
 | 
                break; 
 | 
            case "upright": 
 | 
                cmdCode = 9; 
 | 
                break; 
 | 
            case "downleft": 
 | 
                cmdCode = 6; 
 | 
                break; 
 | 
            case "downright": 
 | 
                cmdCode = 5; 
 | 
                break; 
 | 
            case "zoomin": 
 | 
                cmdCode = 16; 
 | 
                break; 
 | 
            case "zoomout": 
 | 
                cmdCode = 32; 
 | 
                break; 
 | 
            case "stop": 
 | 
                cmdCode = 0; 
 | 
                break; 
 | 
            default: 
 | 
                break; 
 | 
        } 
 | 
        // 默认值 50 
 | 
        cmder.frontEndCmd(device, code, cmdCode, speed, speed, speed); 
 | 
        return null; 
 | 
    } 
 | 
} 
 |