On Tue, 8 Apr 2025 at 14:49, Xiang Xiao <xiaoxiang781...@gmail.com> wrote:

> On Wed, Apr 9, 2025 at 2:02 AM Lwazi Dube <lwa...@gmail.com> wrote:
>
> > On Tue, 8 Apr 2025 at 13:32, Xiang Xiao <xiaoxiang781...@gmail.com>
> wrote:
> >
> > > On Wed, Apr 9, 2025 at 1:16 AM Lwazi Dube <lwa...@gmail.com> wrote:
> > >
> > > > On Tue, 8 Apr 2025 at 05:23, Sebastien Lorquet <sebast...@lorquet.fr
> >
> > > > wrote:
> > > >
> > > > > Hello,
> > > > >
> > > > > Nathan proposal to have a kconfig, with a default to the historical
> > > > > algorithm, is a good solution.
> > > > >
> > > >
> > > > Kconfig will work if you mean this:
> > > >
> > > > int16_t crc16(FAR const uint8_t *src, size_t len)
> > > > {
> > > > #if defined(CONFIG_CRC16_IBM)
> > > >   return crc16ibmpart(src, len, 0);
> > > > #elif defined(CONFIG_CRC16_XMODEM)
> > > >   return crc16xmodempart(src, len, 0);
> > > > #endif
> > > > }
> > > >
> > >
> > > It's a very bad idea to use Kconfig to change the function's behaviour
> > like
> > > this.
> > >
> > For example, y/zmodem calls crc16 which expects the result same as
> > > crc16xmodempart.
> > > With this change, y/zmodem works fine when you select
> > CONFIG_CRC16_XMODEM,
> > > but stops working when you select CONFIG_CRC16_IBM.
> > > To make y/zmodem working with any choice, you have to change crc16 to
> > > crc16xmodempart.
> > > All code which calls crc16 before, must change to either crc16ibmpart
> or
> > > crc16xmodempart, which means crc16 can't be used in any portable code.
> > > Do you really want this behaviour?
> > >
> > No. Going forward, you should call crc16 if you want IBM. Otherwise call
> > the right thing.
> >
> Kconfig was for preserving historical nuttx behaviour for those who don't
> > want to keep up with upstream. It is not perfect.
> >
>
> So, we should change onewire_crc16 to crc16 per your suggestion:
>
> https://github.com/apache/nuttx/blob/master/drivers/1wire/1wire_crc.c#L73-L98
> When a user upgraded to this version with CONFIG_CRC16_XMODEM, 1wire driver
> stopped working suddenly.
> Changing the function behaviour by Kconfig doesn't improve any
> compatibility, but makes the user write the portable code very hard.
>
Agreed.
Someone else suggested Kconfig. I agreed and typed the code to make sure I
understood what they meant.
I think you have given enough reasons for me to abandon the Kconfig idea.
And there is enough resistance in the replies :)

Reply via email to