diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-02-13 23:26:58 +0000 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-02-13 23:31:56 +0000 |
commit | 2fc26a117842428f4148621361c53082ac93722f (patch) | |
tree | a2b4335e7d47c8f51879198e66184d62ff366790 /can_reader.cpp | |
parent | 53f4e096efa72a05b1f469fe082e6fa4b55bca01 (diff) |
New threads management, only one argument needed.
Now CanBus_c object is the main core part to handle
queues and to follow CAN bus reading process.
Change-Id: I33cdfadb06362da4330a572caa1c1cf61d3ab3fd
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'can_reader.cpp')
-rw-r--r-- | can_reader.cpp | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/can_reader.cpp b/can_reader.cpp index 1e6429ec..d9b3e671 100644 --- a/can_reader.cpp +++ b/can_reader.cpp @@ -7,7 +7,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -23,44 +23,44 @@ #include "can-utils.h" -void can_reader(afb_binding_interface *interface, int socket, std::queue <CanMessage_t>& can_message_q) +void can_reader(CanBus_c *can_bus)) { - ssize_t nbytes; + ssize_t nbytes; int maxdlen; - CanMessage_t can_message; + CanMessage_c can_message; + canfd_frame canfd_frame; /* Test that socket is really opened */ - if ( socket < 0) + if ( can_bus->socket < 0) { ERROR(interface, "read_can: Socket unavailable"); return -1; } - while(true) - { - nbytes = read(socket, &canfd_frame, CANFD_MTU); - - switch(nbytes) - { - case CANFD_MTU: - DEBUG(interface, "read_can: Got an CAN FD frame with length %d", canfd_frame.len); - maxdlen = CANFD_MAX_DLEN; - break; - case CAN_MTU: - DEBUG(interface, "read_can: Got a legacy CAN frame with length %d", canfd_frame.len); - maxdlen = CAN_MAX_DLEN; - break; - default: - if (errno == ENETDOWN) - ERROR(interface, "read_can: %s interface down", device); - - ERROR(interface, "read_can: Error reading CAN bus"); - return -2; - } + while(true) + { + nbytes = read(can_bus->socket, &canfd_frame, CANFD_MTU); - can_message.convert_canfd_frame_to_CanMessage(canfd_frame); + switch(nbytes) + { + case CANFD_MTU: + DEBUG(interface, "read_can: Got an CAN FD frame with length %d", canfd_frame.len); + maxdlen = CANFD_MAX_DLEN; + break; + case CAN_MTU: + DEBUG(interface, "read_can: Got a legacy CAN frame with length %d", canfd_frame.len); + maxdlen = CAN_MAX_DLEN; + break; + default: + if (errno == ENETDOWN) + ERROR(interface, "read_can: %s interface down", device); + + ERROR(interface, "read_can: Error reading CAN bus"); + return -2; + } + can_message.convert_from_canfd_frame(canfd_frame); - can_message_q.push(can_message); - } -}
\ No newline at end of file + can_message_q.push(can_message); + } +} |