Esempio n. 1
0
static void *serial_thread_handler(void *arg)
{
    Connector *thiz = (Connector *)arg;
    EventListener listener = thiz->open_listener;
    PrivInfo *priv = (PrivInfo *)thiz->priv;

    if ((priv->fd = open(priv->serial_port, O_RDWR | O_NOCTTY)) == -1)
    {
        if (listener.cb_func != NULL)
        {
            listener.cb_func(strerror(errno), listener.ctx);
        }
        perror("open serial fail");
    }

    serial_set_raw_mode(priv->fd);
    serial_set_speed(priv->fd, priv->baud_rate);
    serial_set_parity(priv->fd, DATA_BITS, PARITY_TYPE, STOP_BITS);

    priv->status = 1;

    if (listener.cb_func != NULL)
    {
        listener.cb_func(NULL, listener.ctx);
    }

    pthread_exit(NULL);
}
Esempio n. 2
0
int
serial_posix_setup(const char *device, int baud, serial **serialobj)
{

    /* open serial */
    *serialobj = serial_create();
    if (*serialobj == NULL) {
        printf("Unable to instantiate object: serial\n");
        goto fail;
    }

    if (serial_open(*serialobj, device) < 0) {
        printf("Unable to open serial devicer\n");
        goto fail;
    }

    if (serial_set_speed(*serialobj, baud) < 0) {
        printf("Unable to set serial speedr\n");
        goto fail;
    }

    if (serial_set_timeout(*serialobj, 10000) < 0) {
        printf("Unable to set timeoutr\n");
        goto fail;
    }

    if (serial_set_cts_flow(*serialobj, 1) < 0) {
        printf("Unable to set flow controlr\n");
        goto fail;
    }
    printf("%s is opened\n", device);
    return (0);

fail:
    serial_close(*serialobj);
    serial_destroy(*serialobj);
    return (1);
}