Extract len_done from BAP_Frame
authornorly <ny-git@enpas.org>
Wed, 22 Mar 2017 21:49:41 +0000 (22:49 +0100)
committernorly <ny-git@enpas.org>
Wed, 22 Mar 2017 21:49:41 +0000 (22:49 +0100)
vw-bap.c
vw-bap.h

index a8036d7c63170ee41be3c7374964ccf2444f4ff5..52c37e853a82b664a05a768b4a87a12873d5d076 100644 (file)
--- a/vw-bap.c
+++ b/vw-bap.c
@@ -100,9 +100,9 @@ struct BAP_Frame* vw_bap_handle_can_frame(struct BAP_RXer *bap, struct can_frame
                        }
 
                        memcpy(&bap_frame->data[0], &frame->data[frame->can_dlc - this_len], this_len);
-                       bap_frame->len_done = this_len;
+                       bap->len_done[mfchannel] = this_len;
 
-                       if (bap_frame->len_done == bap_frame->len) {
+                       if (bap->len_done[mfchannel] == bap_frame->len) {
                                /* Frame is complete, remove from buffer */
                                bap->mfchannel[mfchannel] = NULL;
                                return bap_frame;
@@ -123,7 +123,7 @@ struct BAP_Frame* vw_bap_handle_can_frame(struct BAP_RXer *bap, struct can_frame
 
                        this_len = frame->can_dlc - 1;
 
-                       if ((bap_frame->len_done + this_len) > bap_frame->len) {
+                       if ((bap->len_done[mfchannel] + this_len) > bap_frame->len) {
                                printf("bap_handle_can_frame: len_done + this_len > len\n");
 
                                free(bap_frame);
@@ -132,12 +132,12 @@ struct BAP_Frame* vw_bap_handle_can_frame(struct BAP_RXer *bap, struct can_frame
                                return NULL;
                        }
 
-                       memcpy(&bap_frame->data[bap_frame->len_done],
+                       memcpy(&bap_frame->data[bap->len_done[mfchannel]],
                                &frame->data[frame->can_dlc - this_len],
                                this_len);
-                       bap_frame->len_done += this_len;
+                       bap->len_done[mfchannel] += this_len;
 
-                       if (bap_frame->len_done == bap_frame->len) {
+                       if (bap->len_done[mfchannel] == bap_frame->len) {
                                /* Frame is complete, remove from buffer */
                                bap->mfchannel[mfchannel] = NULL;
                                return bap_frame;
@@ -165,7 +165,6 @@ struct BAP_Frame* vw_bap_handle_can_frame(struct BAP_RXer *bap, struct can_frame
                bap_frame->len = this_len;
 
                memcpy(&bap_frame->data[0], &frame->data[frame->can_dlc - this_len], this_len);
-               bap_frame->len_done = this_len;
 
                return bap_frame;
        }
index 0c8690fbdaa1c7896aedad593e8e9bda0eecceb4..02101048a3f8b03e905ce5b1441e802ba29c7435 100644 (file)
--- a/vw-bap.h
+++ b/vw-bap.h
@@ -15,13 +15,14 @@ struct BAP_Frame {
        BAP_SubNode subnode;
        BAP_SubFunction function;
        BAP_FrameLen len;
-       BAP_FrameLen len_done;
+
        char data[4096];
 };
 
 
 struct BAP_RXer {
        struct BAP_Frame *mfchannel[8];
+       BAP_FrameLen len_done[8];
 };