]> rtime.felk.cvut.cz Git - can-benchmark.git/blobdiff - latester/latester.c
Another bug
[can-benchmark.git] / latester / latester.c
index b0937ba5979a1113faa2f3af7cb4c72ef04d7bad..090676023da5b739e98d9445cafd7d7d1e5cd3c2 100644 (file)
@@ -202,7 +202,7 @@ uint32_t calc_bitmap_crc(uint32_t *bitmap, unsigned start, unsigned end)
     crc_t crc = 0;
     crc = crc_update(crc, bitmap[0] << start, 32 - start);
     crc = crc_update(crc, bitmap[1], 32);
     crc_t crc = 0;
     crc = crc_update(crc, bitmap[0] << start, 32 - start);
     crc = crc_update(crc, bitmap[1], 32);
-    crc = crc_update(crc, bitmap[2], end - 64 > 32 ? 32 : end - 64);
+    crc = crc_update(crc, bitmap[2], end - 64 > 32 ? 32 : end - 64); /* FIXME: This seems to be broken for end < 64 */
     crc = crc_update(crc, bitmap[3], end > 96 ? end - 96 : 0);
     return (uint32_t)htons(crc << 17);
 }
     crc = crc_update(crc, bitmap[3], end > 96 ? end - 96 : 0);
     return (uint32_t)htons(crc << 17);
 }
@@ -251,8 +251,7 @@ unsigned calc_stuff_bits(struct can_frame *frame) {
                        (!!(frame->can_id & CAN_RTR_FLAG)) << 6         |
                        0 << 4                                          |
                        frame->can_dlc & 0xf;
                        (!!(frame->can_id & CAN_RTR_FLAG)) << 6         |
                        0 << 4                                          |
                        frame->can_dlc & 0xf;
-               bitmap[2] = htonl(((uint32_t*)frame->data)[0]);
-               bitmap[3] = htonl(((uint32_t*)frame->data)[1]);
+               memcpy(&bitmap[2], &frame->data, frame->can_dlc);
                start = 27;
                end = 64 + 8*frame->can_dlc;
        } else {
                start = 27;
                end = 64 + 8*frame->can_dlc;
        } else {
@@ -265,8 +264,7 @@ unsigned calc_stuff_bits(struct can_frame *frame) {
                        (!!(frame->can_id & CAN_RTR_FLAG)) << 6 |
                        0 << 4                                  |
                        frame->can_dlc & 0xf;
                        (!!(frame->can_id & CAN_RTR_FLAG)) << 6 |
                        0 << 4                                  |
                        frame->can_dlc & 0xf;
-               bitmap[1] = htonl(((uint32_t*)frame->data)[0]);
-               bitmap[2] = htonl(((uint32_t*)frame->data)[1]);
+               memcpy(&bitmap[1], &frame->data, frame->can_dlc);
                start = 13;
                end = 32 + 8*frame->can_dlc;
        }
                start = 13;
                end = 32 + 8*frame->can_dlc;
        }