コード例 #1
0
ファイル: serial.c プロジェクト: peterhp/meter-station
int serial_open(serial_ctx *sctx) {
	if (!sctx || strlen(sctx->dev) <= 0) { // check param validality
		return -1;
	}

	sctx->fd = open(sctx->dev, O_RDWR | O_NOCTTY);
	if (-1 == sctx->fd) { // fail to open serial port
		return -2;
	}

	if (!isatty(sctx->fd)) { // not a tty
		close(sctx->fd);
		return -3;
	}

	// set serial io model
	serial_set_io_model(sctx);
	// set serial options
	serial_set_opt(sctx);

	if (IO_ASYNC == sctx->io_model) {
		if (serial_rthread_create(sctx) != 0) {
			return -4;
		}
	}

	return 0;
}
コード例 #2
0
ファイル: serial_open.c プロジェクト: zhuguoquan45/smart
int serial_open(struct media_if *med_inf)
{
	struct serial_private *para=(struct serial_private *)med_inf->para;

	if (med_inf->type==MEDIA_SERIAL||med_inf->type==MEDIA_ZIGBEE)
	{
		med_inf->fd=open(para->name,O_RDWR|O_NOCTTY|O_NDELAY);
		PLOG("serial:%s\n",para->name );
	    if(med_inf->fd<=0)
	    {
		    perror("open serial");
		    med_inf->status=CLOSE;
		    return -1;
	    }

	    if(serial_set_opt(med_inf)==-1)
	    {
		    med_inf->status=CLOSE;
		    return -1;
	    }
	    med_inf->status=LIVE;
	    dev_addevent(med_inf);
	}
	return 0;
}