Param01.java 3.72 KB
package com.bsth.socket.protocol;

import com.bsth.util.ConvertUtil;

import java.nio.ByteBuffer;

/**
 * @author Hill
 * 车载终端控制
 * 0x01 远程升级命令参数
 */
public class Param01 implements IMessage82Param {

    /**
     * 升级url地址
     */
    private String url;

    /**
     * 拨号点名称
     */
    private String dialName;

    /**
     * 拨号用户名
     */
    private String dialUsername;

    /**
     * 拨号密码
     */
    private String dialPassword;

    /**
     * 地址(IP或域名 实际应该只能用IPV6或IPV4) 6
     * IPV4时前两个字节为0
     */
    private byte[] address = new byte[6];

    /**
     * 端口 0-65531
     */
    private short port;

    /**
     * 生产厂商代码 4
     * 大写英文字母、数字组合
     */
    private String companyCode;

    /**
     * 硬件版本 5
     */
    private String hardwareVer;

    /**
     * 固件版本 5
     */
    private String firmwareVer;

    /**
     * 连接到升级服务器时限 0-60000
     * 分辨率 1min
     * 在时限前应连回远程服务与管理平台
     */
    private short timeLimit;

    @Override
    public byte[] write() {
        byte[] urlBytes = url == null ? new byte[0] : url.getBytes();
        byte[] dialNameBytes = dialName == null ? new byte[0] : dialName.getBytes();
        byte[] dialUsernameBytes = dialUsername == null ? new byte[0] : dialUsername.getBytes();
        byte[] dialPasswordBytes = dialPassword == null ? new byte[0] : dialPassword.getBytes();
        ByteBuffer buf = ByteBuffer.allocate(33 + urlBytes.length + dialNameBytes.length + dialUsernameBytes.length + dialPasswordBytes.length);
        buf.put(urlBytes);
        buf.putChar(';');
        buf.put(dialNameBytes);
        buf.putChar(';');
        buf.put(dialUsernameBytes);
        buf.putChar(';');
        buf.put(dialPasswordBytes);
        buf.putChar(';');
        buf.put(address);
        buf.putShort(port);
        buf.put(ConvertUtil.string2ascii(companyCode, 4));
        buf.put(ConvertUtil.string2ascii(hardwareVer, 5));
        buf.put(ConvertUtil.string2ascii(firmwareVer, 5));
        buf.putShort(timeLimit);

        return buf.array();
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getDialName() {
        return dialName;
    }

    public void setDialName(String dialName) {
        this.dialName = dialName;
    }

    public String getDialUsername() {
        return dialUsername;
    }

    public void setDialUsername(String dialUsername) {
        this.dialUsername = dialUsername;
    }

    public String getDialPassword() {
        return dialPassword;
    }

    public void setDialPassword(String dialPassword) {
        this.dialPassword = dialPassword;
    }

    public byte[] getAddress() {
        return address;
    }

    public void setAddress(byte[] address) {
        this.address = address;
    }

    public short getPort() {
        return port;
    }

    public void setPort(short port) {
        this.port = port;
    }

    public String getCompanyCode() {
        return companyCode;
    }

    public void setCompanyCode(String companyCode) {
        this.companyCode = companyCode;
    }

    public String getHardwareVer() {
        return hardwareVer;
    }

    public void setHardwareVer(String hardwareVer) {
        this.hardwareVer = hardwareVer;
    }

    public String getFirmwareVer() {
        return firmwareVer;
    }

    public void setFirmwareVer(String firmwareVer) {
        this.firmwareVer = firmwareVer;
    }

    public short getTimeLimit() {
        return timeLimit;
    }

    public void setTimeLimit(short timeLimit) {
        this.timeLimit = timeLimit;
    }
}