package com.dev.ntm.cmd;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.Random;
|
|
import com.Ecb_Aes;
|
|
public class NTM_ComBuf
|
{
|
NTM_Cmd m_CMD = new NTM_Cmd();
|
|
public NTM_Cmd getNTMCmd()
|
{
|
return m_CMD;
|
}
|
|
public boolean putByteBuffer(final ByteBuffer bf)
|
{
|
if(false == m_CMD.putByteBuffer(bf))
|
return false;
|
|
return true;
|
}
|
|
public static ByteBuffer makeNTMCommBuf(int addr, short cmd, ByteBuffer bf_cmd,
|
ByteBuffer bf_inf, boolean aes_en)
|
{
|
NTM_Cmd m_CMD = new NTM_Cmd();
|
|
int inf_len = 0;
|
if(null != bf_inf) {
|
inf_len = bf_inf.limit();
|
}
|
|
ByteBuffer buffer = ByteBuffer.allocate(m_CMD.BYTE_LEN + inf_len + 32); //¶àÉèÖÃ32×Ö½Ú¿Õ¼ä
|
buffer.order(ByteOrder.LITTLE_ENDIAN); //ÉèÖÃByteBufferµÄ×Ö½ÚÐò
|
|
m_CMD.makeCmd(addr, cmd, inf_len);
|
buffer.put(m_CMD.getByteBuffer(bf_cmd, bf_inf));
|
|
if(true == aes_en) {
|
Random rd = new Random();
|
if(0 == (buffer.position()%Ecb_Aes.AES_BLOCK_SIZE)) {
|
for(int n=0; n<(Ecb_Aes.AES_BLOCK_SIZE/4); n++) {
|
buffer.putInt(rd.nextInt());
|
}
|
} else {
|
int cnt = Ecb_Aes.AES_BLOCK_SIZE - (buffer.position()%Ecb_Aes.AES_BLOCK_SIZE);
|
for(int n=0; n<cnt; n++) {
|
buffer.put((byte) rd.nextInt());
|
}
|
}
|
}
|
|
buffer.flip();
|
|
return buffer;
|
}
|
}
|
/***************************************************************************************
|
****************************** end of file (FBS_ComBuf) ********************************
|
***************************************************************************************/
|