]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/write.c
Added support for local message processing and some cleanups.
[lincan.git] / lincan / src / write.c
index 287400304fad118eb7a660af34689de62c081df0..2f32b2ead2fb30ba9e7fdb6530ff92f3f47763c4 100644 (file)
@@ -61,6 +61,8 @@ ssize_t can_write(struct file *file, const char *buffer, size_t length, loff_t *
 
        /* Prepare first message */
        copy_from_user(&msg_buff, buffer, sizeof(struct canmsg_t));
+       /* Automatic selection of extended format if "extended" set and ID>2047 */
+       if (extended) if (msg_buff.id & ~0x7ffl ) msg_buff.flags |= MSG_EXT;
 
        /* If the output buffer is full, return immediately in case O_NONBLOCK
         * has been specified or loop until space becomes available.
@@ -93,6 +95,8 @@ ssize_t can_write(struct file *file, const char *buffer, size_t length, loff_t *
        while (bytes_to_copy > 0) {
                /* Prepare first message */
                copy_from_user(&msg_buff, buffer, sizeof(struct canmsg_t));
+               /* Automatic selection of extended format if "extended" set and ID>2047 */
+               if (extended) if (msg_buff.id & ~0x7ffl ) msg_buff.flags |= MSG_EXT;
                /* Get slot */
                if(canque_get_inslot4id(qends, &qedge, &slot, 
                        0, msg_buff.id, 0) < 0) break;