uCAN-LIN / LinUSBConverter

LIN(Local interconnect network) to USB converter with LIN master support compatible with SLCAN.
GNU General Public License v3.0
67 stars 33 forks source link

Function open_lin_net_init() conflict #9

Open iDoka opened 3 years ago

iDoka commented 3 years ago

I try to build last snapshot from github and have conflict with open_lin_net_init() which defined in two different places:

../../Src/lin_slcan.c:40:6: error: conflicting types for 'open_lin_net_init'
   40 | void open_lin_net_init(t_master_frame_table_item *a_slot_array, l_u8 a_slot_array_len);
      |      ^~~~~~~~~~~~~~~~~
In file included from ../../Src/open-LIN-c/open_lin_master_data_layer.h:12,
                 from ../../Src/slcan.h:8,
                 from ../../Src/lin_slcan.c:1:
../../Src/open-LIN-c/open_lin_network_layer.h:31:6: note: previous declaration of 'open_lin_net_init' was here
   31 | void open_lin_net_init(open_lin_frame_slot_t *a_slot_array, l_u8 a_slot_array_len);
      |      ^~~~~~~~~~~~~~~~~
make: *** [build/lin_slcan.o] Error 1

IDK whats wrong with this definition:

$ grep -n open_lin_net_init ../../Src/lin_slcan.c
40:void open_lin_net_init(t_master_frame_table_item *a_slot_array, l_u8 a_slot_array_len);
$ grep -nA10 open_lin_net_init ../../Src/open-LIN-c/open_lin_network_layer.h
31:void open_lin_net_init(open_lin_frame_slot_t *a_slot_array, l_u8 a_slot_array_len);
Lukasz-Juranek commented 3 years ago

When You pull OpenLin submodule You got template of open_lin_cfg.h You need to update it to:

` / GENERAL DEFINES /

define PLATFORM_IS_BIG_ENDIAN

/ HARWARE LAYER DEFINES/

define OPEN_LIN_HW_BREAK_IS_SYNCH_BYTE

// #define OPEN_LIN_AUTO_BAUND

/ NETWORK LAYER DEFINES/ // #define OPEN_LIN_DYNAMIC_IDS

/ TRANSPORT LAYER DEFINES/ // #define OPEN_LIN_TRANSPORT_LAYER `

Yes, I need to update it in repository :)

bridadan commented 2 years ago

I've tried updating my open_lin_cfg.h as you suggested however that doesn't fix the issue. It appears the submodule for open-lin-c and the application don't agree on what the function open_lin_net_init should look like. Any chance you could update this repository to have the correct source? Thanks!

Lukasz-Juranek commented 2 years ago

I've made small update on .gitsubmodules but i do not think this will help You. For open-lin-c i'm using commit Translation update "bcd724b4a61b1f879182c92049a17effa0b3006c" , be shure that You removed from build implementation/unit_test and implementation/x86 if You are building for STM32.

Hope this will help, regards

pt., 10 gru 2021 o 21:24 Brian Daniels @.***> napisał(a):

I've tried updating my open_lin_cfg.h as you suggested however that doesn't fix the issue. It appears the submodule for open-lin-c and the application don't agree on what the function open_lin_net_init should look like. Any chance you could update this repository to have the correct source? Thanks!

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/uCAN-LIN/LinUSBConverter/issues/9#issuecomment-991270475, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7RRASNLNGS4FLWHE56LLLUQJOWRANCNFSM5ANUZGKQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

bridadan commented 2 years ago

I took a look, and I don't believe that will fix the issue. The main issue is in the application, it uses the function open_lin_net_init with the following definition:

void open_lin_net_init(t_master_frame_table_item *a_slot_array, l_u8 a_slot_array_len);

However, in open-lin-c it's defined as:

void open_lin_net_init(open_lin_frame_slot_t *a_slot_array, l_u8 a_slot_array_len);

The types for the argument a_slot_array don't agree, hence the compiler error.

I see that the t_master_frame_table_item struct contains a open_lin_frame_slot_t member: https://github.com/open-LIN/open-LIN-c/blob/ae816c694e18650a779696b72aaa4bd4f797b90c/open_lin_master_data_layer.h#L16

Maybe this member is what needs to be passed in to the function in the application?

Lukasz-Juranek commented 2 years ago

You are right, the definitions do not match, but it compiles on my pc :) and does not even generate a warning on refeeding function or strange implicit casting, anyway it works by chance.

Here is a kind of fix for now https://github.com/uCAN-LIN/LinUSBConverter/tree/open_lin_net_init_dirty_shame_fix

There is some issue with includes that i need to take a look best would be probably to start with decent make... hope will help for now

wt., 14 gru 2021 o 22:41 Brian Daniels @.***> napisał(a):

I took a look, and I don't believe that will fix the issue. The main issue is in the application, it uses the function open_lin_net_init with the following definition:

void open_lin_net_init(t_master_frame_table_item *a_slot_array, l_u8 a_slot_array_len);

However, in open-lin-c it's defined as:

void open_lin_net_init(open_lin_frame_slot_t *a_slot_array, l_u8 a_slot_array_len);

The types for the argument a_slot_array don't agree, hence the compiler error.

I see that the t_master_frame_table_item struct contains a open_lin_frame_slot_t member: https://github.com/open-LIN/open-LIN-c/blob/ae816c694e18650a779696b72aaa4bd4f797b90c/open_lin_master_data_layer.h#L16

Maybe this member is what needs to be passed in to the function in the application?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/uCAN-LIN/LinUSBConverter/issues/9#issuecomment-994051265, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7RRARCKAECEG4ONJSM3O3UQ62XHANCNFSM5ANUZGKQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.