Lte3000Client.java 2.31 KB
package com.example.mina.client.box.lte3000;

import com.example.mina.client.base.AbstractClient;
import com.example.mina.client.entity.AbstractClientMessage;
import com.example.mina.client.entity.Command;
import com.example.mina.client.entity.Lte3000Message;
import com.example.mina.client.property.ClientProperty;
import com.example.mina.server.entity.Lte3000DataBuffer;
import com.example.mina.server.util.Lte3000CommandHelper;

/**
 * @author dy
 * @date 2021/3/10
 */
public class Lte3000Client extends AbstractClient {

    public Lte3000Client(ClientProperty clientProperty) {
        this.clientProperty= clientProperty;
    }

    @Override
    protected void init(AbstractClientMessage abstractClientMessage) {
        protocolCodecFactory = new Lte3000ByteFactory();
        abstractVirtualBoxClientHandler = new Lte3000ClientHandler(abstractClientMessage, hardwareDataBuffer);
    }

    @Override
    protected void initHardwareDataBuffer() {
        hardwareDataBuffer = new Lte3000DataBuffer(32, 32, 30);
    }

    @Override
    protected void initClientMessage() {
        abstractClientMessage = new Lte3000Message();
        abstractClientMessage.setHost(clientProperty.getHost());
        abstractClientMessage.setPort(clientProperty.getPort());
        for (int i = 0; i < this.hardwareDataBuffer.getMaxRow(); i++) {
            abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetCross(i + 1)));
        }

        // query attenuation
        // the LTE attenuation is bound to column
        for (int j = 0; j < this.hardwareDataBuffer.getMaxCol(); j++) {
            abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetAttn(j + 1)));
        }

    }


    public void setAttenuation(int row, int col, int atten) {
        //ioSession.write("abcdfd".getBytes());
        byte[] cmd;
        if (row == 0) {
            cmd = Lte3000CommandHelper.genCommandSetAttn(col, atten);
        }else{
            cmd = Lte3000CommandHelper.genCommandSetCross(row, col);
        }
        ioSession.write(cmd);
    }


    public int getAttenuation(int col) {
        return hardwareDataBuffer.getOffset(col);
    }

    @Override
    public Boolean reset() {
        return null;
    }

    @Override
    public int[][] getAll() {
        return new int[0][];
    }

}