Пример #1
0
int rcmIfSendPacketSerial(void *pkt, unsigned size)
{
    int i;
    unsigned short val;

    // send sync bytes
    i = serWrite("\xa5\xa5", 2);
    if (i < 0)
        return ERR;

    // send size bytes
    val = htons(size);
    i = serWrite(&val, sizeof(val));
    if (i < 0)
        return ERR;

    // send packet
    i = serWrite(pkt, size);
    if (i < 0)
        return ERR;

    // send CRC for serial port
    if (rcmIf == rcmIfSerial)
    {
        val = crc16(pkt, size);
        val = htons(val);
        if (serWrite(&val, sizeof(val)) < 0)
            return ERR;
    }
    return OK;
}
Пример #2
0
void_t vt_raw(virtualtouch_s* vt)
{
    dbg_function();
    
    if ( vt->eamflags & VT_EAMF_TIME )
    {
        sensor_s m;
        uint_t alpha = mm_alpha(vt->countalpha);
        uint_t ahpla = 1000 - mm_alpha(vt->countalpha);

        serWrite(vt, PROTO_READ);
        m.sx = serRead16(vt);
        m.dx = serRead16(vt);
        m.up = serRead16(vt);
        m.dw = serRead16(vt);
    
        vt->time.dx = (alpha * m.dx + ahpla * vt->time.dx)/1000;
        vt->time.dw = (alpha * m.dw + ahpla * vt->time.dw)/1000;
        vt->time.sx = (alpha * m.sx + ahpla * vt->time.sx)/1000;
        vt->time.up = (alpha * m.up + ahpla * vt->time.up)/1000;
    }
    else
    {
        serWrite(vt, PROTO_READ);
        vt->time.sx = serRead16(vt);
        vt->time.dx = serRead16(vt);
        vt->time.up = serRead16(vt);
        vt->time.dw = serRead16(vt);
    }
    
    
    dbg_info("time: sx(%5u) dx(%5u) up(%5u) dw(%5u)", vt->time.sx, vt->time.dx, vt->time.up, vt->time.dw);
    dbg_return(0);
}
Пример #3
0
int serWriteLine (int fd, int flags, const char *line) {
    char buf[256];
    int written=0;

    written = serWrite (fd, strlen(line), (const uint8_t *) line);
    if (written > 0 && (flags & 1))
        serReadLine(fd, sizeof(buf), buf);
    return written;
}
Пример #4
0
int serWriteChar (int fd, const uint8_t c) {
    return serWrite (fd, 1, &c);
}