SlimeVR/SlimeVR-Tracker-ESP

BMI160 Library dependency was not documented

RexaOnGit opened this issue · 4 comments

I discovered that the BMI160 library was copied and modified from the following repository. All credit for the register mapping, function names, and general structure goes to contributors on corelibs-arduino101 (which was forked by sgbihu from arduino/ArduinoCore-arc32).

There was no dependency added to the firmware, and no fork was created from the original repo. I have performed a diff between the original library and the one in SlimeVR-Tracker-ESP -- the changes are significant, and much of the code was deleted. It appears that the main point of the changes was to offload more of the code base to the I2C library made by Jeff Rowberg (which is here). The screenshot below summarizes what happened fairly well:
image
Here is an example of how the remaining functions were changed:
image

Besides this, some blank lines and functions not used by SlimeVR were removed.

I'm not sure if any action is needed or can be taken, but I wanted to somehow document what happened and give credit to the original developer of the BMI160 library we use.

UPDATE: The BMI160 library that was referenced is licensed by Intel under a General Public License (version 2.1). It is stated that we do not want to use any libraries with this type of license. What action is needed?

re discord: Rexa is working on refactoring the bmi code to be based on an MIT licensed driver, to remove the LGPL dependency

My fork of SlimeVR firmware is here, and my fork of the new BMI160 library is here. I am about midway through refactoring with the new library.

UPDATE: The DF robot library for BMI160 had too many issues. The new plan is as follows:

  1. Make a general IMU communication manager (it will only pull in I2C dev for now)
  2. Build a new BMI160 library from scratch
  3. Validate the new library and communication manager
  4. Split into dependencies

Progress will be visible in my fork.