int CmdGetIoName(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	const uint8_t outsize = sizeof(CmdIoName);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead            * tcmd  = (CmdHead *)buffer;
    CmdIoName          *  tio  = (CmdIoName *)GET_CMD_DATA(tcmd);
	CmdIoName          *  rio  = (CmdIoName *)GET_CMD_DATA(cmd);
    //
    datasize = datasize;
    //

    if(!BspReadIoName(rio->io_addr,tio)) {
		//sprintf(tio->io_name,"INPUT%d",rio->io_addr[0]);
        tcmd->cmd_option    = CMD_ACK_OK;
    } else {
      if(THISINFO)printf("CmdGetIoName Failed!!!\r\n");
      tcmd->cmd_option    = CMD_ACK_KO;
    }
	tio->io_addr[0] = rio->io_addr[0];
	tio->io_addr[1] = rio->io_addr[1];
	//
    tcmd->cmd           = CMD_GET_IO_NAME;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = outsize;
    tcmd->data_checksum = CalCheckSum(tio,outsize);
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdGetIoName()\r\n");
    return 0;
}
int CmdSetIoName(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	const uint8_t outsize = sizeof(CmdIoName);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead            * tcmd  = (CmdHead *)buffer;
    CmdIoName          *  tio  = (CmdIoName *)GET_CMD_DATA(tcmd);
	CmdIoName          *  rio  = (CmdIoName *)GET_CMD_DATA(cmd);
    //
    datasize = datasize;
    //
	if(THISINFO)printf("WriteIoname:addr[0]=%d,addr[1]=%d,name=%s",rio->io_addr[0],rio->io_addr[1],rio->io_name);
    if(!BspWriteIoName(rio->io_addr,rio)) {
		memcpy(tio,rio,sizeof(CmdIoName));
        tcmd->cmd_option    = CMD_ACK_OK;
    } else {
      if(THISERROR)printf("CmdGetIoName Failed!!!\r\n");
      tcmd->cmd_option    = CMD_ACK_KO;
    }
	//
    tcmd->cmd           = CMD_SET_IO_NAME;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = outsize;
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdGetIoName()\r\n");
    return 0;
}
int CmdGetInputCtlModeIndex(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	const uint8_t outsize = sizeof(CmdInputModeIndex);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead            * tcmd  = (CmdHead *)buffer;
    CmdInputModeIndex  *  sio  = (CmdInputModeIndex *)GET_CMD_DATA(tcmd);
    CmdInputModeIndex  *   io  = (CmdInputModeIndex *)GET_CMD_DATA(cmd);
    //
    datasize = datasize;
    //
    sio->index = io->index;
    if(!BspReadManualCtlModeIndex(io->index,&sio->mode)) {
      tcmd->cmd_option    = CMD_ACK_OK;
    } else {
      if(THISINFO)printf("BspReadManualCtlModeIndex Failed!!!\r\n");
      tcmd->cmd_option    = CMD_ACK_KO;
    }
    tcmd->cmd           = CMD_GET_INPUT_CTL_MODE_INDEX;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = sizeof(CmdInputModeIndex);
    tcmd->data_checksum = CalCheckSum(sio,sizeof(CmdInputModeIndex));
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdGetInputCtlModeIndex()\r\n");
    return 0;
}
int CmdSetInputCtlModeIndex(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	const uint8_t outsize = 0;
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead            * tcmd  = (CmdHead *)buffer;
    CmdInputModeIndex  *   io  = (CmdInputModeIndex *)GET_CMD_DATA(cmd);
    //
    datasize = datasize;
    if(cmd->cmd_len < sizeof(CmdInputModeIndex)) {
      if(THISERROR)printf("ERROR:CmdSetInputCtlModeIndex cmd->cmd_len ERROR,size(%d)\r\n",cmd->cmd_len);
	  goto error;
    }
    //
    if(!BspWriteManualCtlModeIndex(io->index,io->mode)) {
      tcmd->cmd_option    = CMD_ACK_OK;
    } else {
	  if(THISINFO)printf("BspWriteManualCtlMode Failed!!!\r\n");
error:
      tcmd->cmd_option    = CMD_ACK_KO;
    }
    tcmd->cmd           = CMD_SET_INPUT_CTL_MODE_INDEX;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = 0;
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdSetInputCtlModeIndex()\r\n");
    return 0;
}
int CmdRevertIoOutIndex(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	int rc = -1;
	const uint8_t outsize = sizeof(CmdIobitmap);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead          * tcmd  = (CmdHead *)buffer;
    CmdIobitmap      *  sio  = (CmdIobitmap *)GET_CMD_DATA(tcmd);
    CmdIobitmap      *   io  = (CmdIobitmap *)GET_CMD_DATA(cmd);
    //
    if(datasize < sizeof(CmdIobitmap)) {
      if(THISERROR)printf("ERROR:Cmd CmdSetIoOutBit Datasize ERROR\r\n");
	  tcmd->cmd_option    = CMD_ACK_KO;
      goto error;
    }
    //
    tcmd->cmd_option    = CMD_ACK_OK;	
	//rc = _ioctl(_fileno(sys_varient.iofile), IO_SIG_BITMAP, io->io_msk);
	//rc = _ioctl(_fileno(sys_varient.iofile), IO_OUT_GET, sio->io_msk);
	io_out_convert_bits(0,io->io_msk,32);
	memset(sio->io_msk,0,sizeof(sio->io_msk));
	io_out_get_bits(0,sio->io_msk,32);
	rc = 0;

error:
    tcmd->cmd           = CMD_REV_IO_SOME_BIT;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = outsize;
    tcmd->data_checksum = CalCheckSum(sio,outsize);
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdSetIoOutBit()!\r\n");
    return rc;
}
int CmdSetIpConfig(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	const uint8_t outsize = 0;
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead            * tcmd  = (CmdHead *)buffer;
    CmdIpConfigData    *   io  = (CmdIpConfigData *)GET_CMD_DATA(cmd);
    //
    if(datasize < sizeof(CmdIpConfigData)) {
      if(THISERROR)printf("ERROR:Cmd CmdSetIpConfigData Datasize ERROR,size(%d)",datasize);
      goto error;
    }
    //
    if(!BspWriteIpConfig(io)) {
      tcmd->cmd_option    = CMD_ACK_OK;
    } else {
error:
      tcmd->cmd_option    = CMD_ACK_KO;
    }
    //
    tcmd->cmd           = CMD_SET_IP_CONFIG;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = 0;
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdSetIpConfig()\r\n");
    return 0;
}
int CmdIoFinish(TCPSOCKET * sock,CmdHead * tcmd,int outsize)
{
    tcmd->cmd_len       = outsize;
    tcmd->data_checksum = CalCheckSum(GET_CMD_DATA(tcmd),outsize);
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    //if(THISINFO)printf("CmdIoFinish()\r\n");
    return 0;
}
示例#8
0
void clientSend(TCPSOCKET *sock, char* buffer, int len){
	if (NutTcpSend(sock, buffer, len) != len) {
    LogMsg_P(LOG_INFO, PSTR("Fout bij zenden client data"));
	}
	else{
		LogMsg_P(LOG_INFO, PSTR("Geen Fout bij zenden client data?"));
	}
}
示例#9
0
static int PutString(TCPSOCKET * sock, char * str)
{
    uint16_t len = strlen(str);
    uint16_t n;
    int c;

    for (n = 0; n < len; n += c)
        if ((c = NutTcpSend(sock, str + n, len - n)) < 0)
            return -1;
    return len;
}
int CmdSetIoOutValue(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	int rc = -1;
	const uint8_t outsize = sizeof(CmdIoValue);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead       * tcmd  = (CmdHead *)buffer;
    CmdIoValue    *  sio  = (CmdIoValue *)GET_CMD_DATA(tcmd);
    //
    CmdIoValue    *   io  = (CmdIoValue *)GET_CMD_DATA(cmd);
    //
    if(datasize < sizeof(CmdIoValue)) {
        if(THISERROR)printf("ERROR:Cmd Set Io Value Datasize ERROR\r\n");
        return -1;
    }
    if(io->io_count <= 32) {
		//uint32_t tmp;
		//SetRelayWithDelay(group_arry4_to_uint32(io->io_value));

		//rc = _ioctl(_fileno(sys_varient.iofile), IO_OUT_SET, io->io_value);
		//rc = _ioctl(_fileno(sys_varient.iofile), IO_OUT_GET, sio->io_value);
		                io_out_set_bits(0,io->io_value,32);
		memset(sio->io_value,0,sizeof(sio->io_value));
	    sio->io_count = io_out_get_bits(0,sio->io_value,32);
	    rc = 0;

        tcmd->cmd_option     = CMD_ACK_OK;
        sio->io_count        = io->io_count;
		//tmp = GetIoOut();
        //sio->io_value[0] = (uint8_t)((tmp >> 0) & 0xFF);
	    //sio->io_value[1] = (uint8_t)((tmp >> 8) & 0xFF);
	    //sio->io_value[2] = (uint8_t)((tmp >> 16) & 0xFF);
	    //sio->io_value[3] = (uint8_t)((tmp >> 24) & 0xFF);
    } else {
        if(THISERROR)printf("Cmd Set Io Io Count Error!!\r\n");
        tcmd->cmd_option  = CMD_ACK_KO;
        sio->io_count = 0;
    }
    tcmd->cmd           = CMD_SET_IO_OUT_VALUE;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = outsize;
    tcmd->data_checksum = CalCheckSum(sio,outsize);
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdSetIoOutValue()\r\n");
    return rc;
}
int CmdRevIoOutOneBit(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	int rc = -1;
	const uint8_t outsize = sizeof(CmdIoValue);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
	unsigned int num;
	unsigned char reg;

	CmdIoOneBit      *   io  = (CmdIoOneBit *)GET_CMD_DATA(cmd);

    CmdHead          * tcmd  = (CmdHead *)buffer;
    CmdIoValue       * sio   = (CmdIoValue *)GET_CMD_DATA(tcmd);
    
    //
    if(datasize < sizeof(CmdIoOneBit)) {
      if(THISERROR)printf("ERROR:Cmd CmdSetIoOutOneBit Datasize ERROR\r\n");
	  tcmd->cmd_option    = CMD_ACK_KO;
      goto error;
    }
    //
    tcmd->cmd_option    = CMD_ACK_OK;	
	num = io->io_bitnum[1];
	num <<= 8;
	num += io->io_bitnum[0];
	reg = code_msk[0];
	printf("rev io one bit ,num = %d\r\n",num);
	io_out_convert_bits(num,&reg,1);
	memset(sio->io_value,0,sizeof(sio->io_value));
	sio->io_count = io_out_get_bits(0,sio->io_value,32);
	rc = 0;

error:
    tcmd->cmd           = CMD_REV_IO_ONE_BIT;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = outsize;
    tcmd->data_checksum = CalCheckSum(sio,outsize);
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdSetIoOutBit()!\r\n");
    return rc;
}
int CmdGetIoInValue(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	int rc = -1;
	//uint32_t tmp;
	const uint8_t outsize = sizeof(CmdIoValue);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead       * tcmd  = (CmdHead *)buffer;
    CmdIoValue    *  sio  = (CmdIoValue *)GET_CMD_DATA(tcmd);
    //
    datasize = datasize;
    //
	//rc = _ioctl(_fileno(sys_varient.iofile), GET_IN_NUM, &tmp);
	//sio->io_count = (unsigned char)tmp;
	//if(tmp) {
		//rc = _ioctl(_fileno(sys_varient.iofile), IO_IN_GET, sio->io_value);
	//}
	memset(sio->io_value,0,sizeof(sio->io_value));
	sio->io_count = io_in_get_bits(0,sio->io_value,32);
	rc = 0;

    //sio->io_count    = 8;
    //sio->io_value[0] = (uint32_t)((GetFilterInput() >> 0) & 0xFF);
    //sio->io_value[1] = (uint32_t)((GetFilterInput() >> 8) & 0xFF);
    //sio->io_value[2] = (uint32_t)((GetFilterInput() >> 16) & 0xFF);
    //sio->io_value[3] = (uint32_t)((GetFilterInput() >> 24) & 0xFF);
    //
    tcmd->cmd_option    = CMD_ACK_OK;
    tcmd->cmd           = CMD_GET_IO_IN_VALUE;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = outsize;
    tcmd->data_checksum = CalCheckSum(sio,outsize);
    //
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));

    if(THISINFO)printf("CmdGetIoInValue()!\r\n");
    return rc;
}
int CmdGetIpConfig(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	const uint8_t outsize = sizeof(CmdIpConfigData);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
    CmdHead            * tcmd  = (CmdHead *)buffer;
    CmdIpConfigData    *  sio  = (CmdIpConfigData *)GET_CMD_DATA(tcmd);
    //
    datasize = datasize;
    //
    if(!BspReadIpConfig(sio)) {
      tcmd->cmd_option    = CMD_ACK_OK;
    } else {
      tcmd->cmd_option    = CMD_ACK_KO;
    }
    //
    tcmd->cmd           = CMD_GET_IP_CONFIG;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = sizeof(CmdIpConfigData);
    tcmd->data_checksum = CalCheckSum(sio,sizeof(CmdIpConfigData));
	//
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdGetIpConfig()\r\n");
    return 0;
}
//--------------------------------------------------------------------
int CmdGetIoOutValue(TCPSOCKET * sock,CmdHead * cmd,int datasize)
{
	int rc = -1;
	const uint8_t outsize = sizeof(CmdIoValue);
	uint8_t  buffer[sizeof(CmdHead)+outsize];
	CmdHead       * tcmd  = (CmdHead *)buffer;
	CmdIoValue    *  sio  = (CmdIoValue *)GET_CMD_DATA(tcmd);
	//
    datasize = datasize;
	//
	memset(sio->io_value,0,sizeof(sio->io_value));
	sio->io_count = io_out_get_bits(0,sio->io_value,32);
	rc = 0;
    //
    tcmd->cmd_option    = CMD_ACK_OK;
    tcmd->cmd           = CMD_GET_IO_OUT_VALUE;
    tcmd->cmd_index     = cmd->cmd_index;
    tcmd->cmd_len       = outsize;
    tcmd->data_checksum = CalCheckSum(sio,outsize);
    
    NutTcpSend(sock,tcmd,(int)(sizeof(CmdHead)+outsize));
    if(THISINFO)printf("CmdGetIoOutValue OK\r\n");
    return rc;
}