X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=can_reader.cpp;h=d9b3e6714f263c0cabbcc0f09f1c5856ddae1880;hb=9e11d2500f4a41afa2f293baee77f71b90652153;hp=35ea79e640f4a32c8101d482a810208389d6d7a3;hpb=49402dc57ea61f6885a4f6a6b10597da099ad31f;p=apps%2Flow-level-can-service.git diff --git a/can_reader.cpp b/can_reader.cpp index 35ea79e..d9b3e67 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, @@ -21,54 +21,46 @@ #include -void can_reader(afb_binding_interface *interface, int socket, std::queue & can_message_q) +#include "can-utils.h" + +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; - } - - /* - * TODO: thread handle - if (parse_can_frame(can_message, &canfd_frame, maxdlen)) - { - ERROR(interface, "read_can: Can't parse the can frame. ID: %i, DLC: %i, DATA: %s", - canfd_frame.can_id, canfd_frame.len, canfd_frame.data); - return -4; - } - */ + 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); - } + can_message_q.push(can_message); + } }