X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=ll-can-binding.h;h=df2c5cd64f878b384f656a16bcc87ca0f61e1635;hb=c77d764709de4afdd2a5f5cf7a88ab01ffd12cc7;hp=6280cc4cbf95330ac1e83684ba6fbac86918b922;hpb=7a15d9138cd18bee2835467c5854d25e16b8f1ce;p=apps%2Fagl-service-can-low-level.git diff --git a/ll-can-binding.h b/ll-can-binding.h index 6280cc4c..df2c5cd6 100644 --- a/ll-can-binding.h +++ b/ll-can-binding.h @@ -1,15 +1,19 @@ -/* max. number of CAN interfaces given on the cmdline */ -#define MAXSOCK 16 - -/* buffer sizes for CAN frame string representations */ -#define CL_ID (sizeof("12345678##1")) -#define CL_DATA sizeof(".AA") -#define CL_BINDATA sizeof(".10101010") - - /* CAN FD ASCII hex short representation with DATA_SEPERATORs */ -#define CL_CFSZ (2*CL_ID + 64*CL_DATA) - -#define CANID_DELIM '#' +/* + * Copyright (C) 2015, 2016 "IoT.bzh" + * Author "Romain Forlot" + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * 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 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ /* * Interface between the daemon and the binding @@ -75,32 +79,6 @@ can_event *can_events_list; /* TODO : Add help comments :p */ static int connect_to_event_loop(); -const char hex_asc_upper[] = "0123456789ABCDEF"; - -#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0F)] -#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xF0) >> 4] - -static inline void put_hex_byte(char *buf, __u8 byte) -{ - buf[0] = hex_asc_upper_hi(byte); - buf[1] = hex_asc_upper_lo(byte); -} - -static inline void _put_id(char *buf, int end_offset, canid_t id) -{ - /* build 3 (SFF) or 8 (EFF) digit CAN identifier */ - while (end_offset >= 0) { - buf[end_offset--] = hex_asc_upper[id & 0xF]; - id >>= 4; - } -} - -#define put_sff_id(buf, id) _put_id(buf, 2, id) -#define put_eff_id(buf, id) _put_id(buf, 7, id) - -static void parse_can_frame(openxc_CanMessage *can_message, struct canfd_frame *canfd_frame, int maxdlen); - - // Initialize default can_handler values static struct can_handler can_handler = { .socket = -1, @@ -109,3 +87,12 @@ static struct can_handler can_handler = { }; static void send_event(); + +static int retry( int(*func)()); + +static int parse_can_frame(openxc_CanMessage *can_message, struct canfd_frame *canfd_frame, int maxdlen); + +#ifdef openxc_CanMessage_init_default +#undef openxc_CanMessage_init_default +#endif +openxc_CanMessage openxc_CanMessage_init_default = {.has_bus = false, .bus = 0, .has_id = false, .id = 0, .has_data = false, .data = {0, {0}}, .has_frame_format = false, .frame_format = (openxc_CanMessage_FrameFormat)0};