Skip to content

Driver for INA3221 current and power and bus voltage monitor#12055

Merged
maribu merged 3 commits intoRIOT-OS:masterfrom
fabian18:driver-ina3221
Nov 5, 2019
Merged

Driver for INA3221 current and power and bus voltage monitor#12055
maribu merged 3 commits intoRIOT-OS:masterfrom
fabian18:driver-ina3221

Conversation

@fabian18
Copy link
Contributor

Contribution description

This PR adds support for the 3-channel current and bus voltage monitor INA3221.
The driver is integrated into SAUL as well.

Testing procedure

I have used a nucleo-f446re and an INA3221 breakout board with three 100 mOhm shunt resistors.

Test with test application:
  • Configure alert thresholds in tests/driver_ina3221/main.c according to your electrical loads.
    I have used a yellow, a green and a blue LED.
  • Do make flash BOARD=<your_board> and make term BOARD=<your_board>.
  • On success, the application will print a table with measured values and status flags.
  • On failure, it prints an error message and exits.
2019-08-21 15:35:11,182 - INFO # main(): This is RIOT! (Version: 2019.10-devel-422-g891c-driver-ina3221)
2019-08-21 15:35:12,154 - INFO # [SUCCESS] ina3221_init
2019-08-21 15:35:12,156 - INFO # [SUCCESS] ina3221_enable_alert
2019-08-21 15:35:12,162 - INFO # [SUCCESS] ina3221_read_shunt_uV
2019-08-21 15:35:12,165 - INFO # [SUCCESS] ina3221_calculate_current_uA
2019-08-21 15:35:12,169 - INFO # [SUCCESS] ina3221_read_bus_mV
2019-08-21 15:35:12,172 - INFO # [SUCCESS] ina3221_calculate_power_uW
2019-08-21 15:35:12,181 - INFO # [SUCCESS] ina3221_set_enable_sum_channel[SUCCESS] ina3221_read_shunt_sum_uV
2019-08-21 15:35:12,185 - INFO # [SUCCESS] INA3221_TRIGGER_SHUNT_AND_BUS
2019-08-21 15:35:12,284 - INFO # [SUCCESS] ina3221_read_shunt_uV (triggered)
2019-08-21 15:35:12,290 - INFO # [SUCCESS] ina3221_read_bus_mV (triggered)
2019-08-21 15:35:12,294 - INFO # [SUCCESS] ina3221_set_crit_alert_limit
2019-08-21 15:35:12,299 - INFO # [SUCCESS] ina3221_set_warn_alert_limit
2019-08-21 15:35:12,303 - INFO # [SUCCESS] ina3221_set_power_valid_lower_limit
2019-08-21 15:35:12,308 - INFO # [SUCCESS] ina3221_set_power_valid_upper_limit
2019-08-21 15:35:12,312 - INFO # [SUCCESS] ina3221_set_shunt_voltage_sum_alert_limit
2019-08-21 15:35:12,487 - INFO # POWER VALID
2019-08-21 15:35:14,324 - INFO # channel       | shunt [uV]   | bus [mV]     | current [uA] | power [uW]   
2019-08-21 15:35:14,330 - INFO # --------------+--------------+--------------+--------------+--------------
2019-08-21 15:35:14,338 - INFO # 0             |2000          |4816          |20000         |96320         
2019-08-21 15:35:14,343 - INFO # 1             |1400          |4816          |14000         |67424         
2019-08-21 15:35:14,350 - INFO # 2             |1360          |4824          |13600         |65606         
2019-08-21 15:35:14,350 - INFO # 
2019-08-21 15:35:14,356 - INFO # FLAGS: CF1:0 CF2:0 CF3:0 SF:0 WF1:0 WF2:0 WF3:0 PVF:0 TCF:1 CVRF:1
Test with SAUL
  • cd examples/default
  • Do USEMODULE=ina3221 make flash BOARD=<your_board> and make term BOARD=<your_board>
  • In pyterm, type saul to see SAUL commands
2019-08-21 15:27:22,926 - INFO # saul
2019-08-21 15:27:22,927 - INFO # ID     Class           Name
2019-08-21 15:27:22,930 - INFO # #0     SENSE_BTN       Button(B1 User)
2019-08-21 15:27:22,933 - INFO # #1     SENSE_VOLTAGE   INA3221 bus voltage
2019-08-21 15:27:22,936 - INFO # #2     SENSE_CURRENT   INA3221 current
2019-08-21 15:27:22,938 - INFO # #3     SENSE_POWER     INA3221 power
2019-08-21 15:27:22,942 - INFO # #4     SENSE_VOLTAGE   INA3221 shunt voltage sum
2019-08-21 15:31:44,384 - INFO # saul read 2
2019-08-21 15:31:44,390 - INFO # Reading from #2 (INA3221 current|SENSE_CURRENT)
2019-08-21 15:31:44,392 - INFO # Data:  [0]  21200 uA
2019-08-21 15:31:44,393 - INFO #        [1]  12800 uA
2019-08-21 15:31:44,394 - INFO #        [2]  13200 uA

ina3221_test_circuit

Issues/PRs references

None

@fabian18
Copy link
Contributor Author

I want to uncrustify it just before it gets merged.

@maribu maribu self-assigned this Aug 21, 2019
@maribu maribu added Area: drivers Area: Device drivers Type: new feature The issue requests / The PR implemements a new feature for RIOT labels Aug 21, 2019
Copy link
Member

@maribu maribu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First round of reviewing

@maribu
Copy link
Member

maribu commented Aug 21, 2019

It seems the return value of i2c_acquire() and i2c_release() are about to get removed: #10673

@maribu maribu added the Reviewed: 3-testing The PR was tested according to the maintainer guidelines label Sep 13, 2019
Copy link
Member

@maribu maribu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks pretty good in general and works reliable for me. I have some suggestions to improve further:

  • Move static inline functions from drivers/ina3221/ina3221.c e.g. to drives/ina3221/include/ina3221_internal.h. That way you can include that file from the test and move the test code guarded by an #ifdef ... #endif from drivers/ina3221/ina3221.c to the driver
  • Some functions of the user facing API can be made a bit easier to use without increasing ROM size, by adding static inline functions as wrapper in front of the implementation. E.g. that could be used to create a bitmask in the static inline function, which is than passed to the implementing function. (See inline comments for more details)
  • The use of submodules could make the code a bit cleaner, by moving the code guarded by #ifdef MODULE_INA3221_WITH_ALERTS to its own file
  • Some style issues need to be fixed
    • No use of CamelCase (e.g. use int32_t in_uv or int32_t in_u_v instead of int32_t in_uV)
    • White space errors (e.g. trailing new line). The CI (travis) will tell you about this, or you can check for this by running make static-test in the root of the Repo. But beware: This will rebase your code on top of master. So run e.g. git checkout -b tmp-for-static-test to create a new temporary branch that make static-test can mess up, and that can be removed later.
    • Missing spaces e.g. between if and (. You can use uncrustify to address these.

Copy link
Member

@maribu maribu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See inline comments regarding internal pull ups.

@maribu
Copy link
Member

maribu commented Oct 7, 2019

Rebase, uncrustify and squash?

@fabian18
Copy link
Contributor Author

fabian18 commented Oct 7, 2019

Yes

@fabian18 fabian18 force-pushed the driver-ina3221 branch 2 times, most recently from f2e66b5 to 644967b Compare October 15, 2019 18:10
@fabian18
Copy link
Contributor Author

I guarded the alert module members in ina3221_t with a preprocessor statement to save some ROM if the module ina3221_alerts is not used.

@maz3max
Copy link
Contributor

maz3max commented Oct 23, 2019

Tested successfully with one sensor using SAUL in the default example, BOARD=esp32-mh-et-live-minikit.
I will test and report the behaviour with the direct driver interface and with two sensors soon!

.name =
ina3221_saul_info[i * INA3221_SAUL_DRIVERS_NUM + j].name,
.driver =
&ina3221_saul_drivers[i * INA3221_SAUL_DRIVERS_NUM + j]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
&ina3221_saul_drivers[i * INA3221_SAUL_DRIVERS_NUM + j]
&ina3221_saul_drivers[j]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh yes, because every device has the same SAUL driver. But the same applies for the driver name.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not the driver name, but the device names. An end user adding more entries to ina3221_params will also have to add the same number of names to ina3221_saul_info.

(If the names would be reused, the user would have trouble to tell the devices apart.)

},
(saul_driver_t) {
.read = read_shunt_voltage_sum,
.write = saul_notsup,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if this is a good idea, but I just drop this here to let you decide on this:

How about adding a write function to control the enabled channels. E.g. you could say that 1 (== 0b001) is channel 1, 2 (== 0b010) is channel two, and 4 (==0b100) is channel three. If I would write 0, all channels would be disabled for the sum. Writing 5 (== 0b101) would enable 1 and 3, but not channel 2. etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a great idea. I will add this soon.

@maz3max
Copy link
Contributor

maz3max commented Oct 25, 2019

EDIT: Tested version 0598711 - works partially:
default example on esp32-mh-et-live-minikit works with one and with two connected sensors, but the names are not correct:

2019-10-25 13:59:35,503 # ID	Class		Name
2019-10-25 13:59:35,504 # #0	ACT_SWITCH	LED
2019-10-25 13:59:35,505 # #1	SENSE_VOLTAGE	INA3221 (U2) bus voltage
2019-10-25 13:59:35,507 # #2	SENSE_CURRENT	INA3221 (U2) current
2019-10-25 13:59:35,508 # #3	SENSE_POWER	INA3221 (U2) power
2019-10-25 13:59:35,509 # #4	SENSE_VOLTAGE	INA3221 (U2) shunt voltage sum
2019-10-25 13:59:35,511 # #5	SENSE_VOLTAGE	INA3221 (U2) bus voltage
2019-10-25 13:59:35,512 # #6	SENSE_CURRENT	INA3221 (U2) current
2019-10-25 13:59:35,514 # #7	SENSE_POWER	INA3221 (U2) power
2019-10-25 13:59:35,515 # #8	SENSE_VOLTAGE	INA3221 (U2) shunt voltage sum

There should be U3 for the second sensor.

The driver_ina3221 test also works (using only the first sensor).

This custom params file was used to configure for two sensors:
ina3221_params.zip

@maribu
Copy link
Member

maribu commented Oct 25, 2019

EDIT: Tested version 0598711 - works partially:
default example on esp32-mh-et-live-minikit works with one and with two connected sensors, but the names are not correct:

This is expected. See comment above. Once that is addressed, we should finally be able to merge :-)

@maz3max
Copy link
Contributor

maz3max commented Oct 29, 2019

Tested feae100 - works completely:
Ran the included test, output:

2019-10-29 16:16:01,425 # FLAGS: CF1:1 CF2:0 CF3:0 SF:1 WF1:1 WF2:0 WF3:0 PVF:0 TCF:1 CVRF:1
2019-10-29 16:16:01,427 # --------------+--------------+--------------+--------------+--------------
2019-10-29 16:16:02,452 # channel       | shunt [uV]   | bus [mV]     | current [uA] | power [uW]   
2019-10-29 16:16:02,455 # --------------+--------------+--------------+--------------+--------------
2019-10-29 16:16:02,455 # 0             |44640         |4920          |446400        |2194320       
2019-10-29 16:16:02,472 # 1             |880           |3288          |8800          |28934         
2019-10-29 16:16:02,473 # 2             |960           |3296          |9600          |31642         
2019-10-29 16:16:02,474 # 
2019-10-29 16:16:02,475 # FLAGS: CF1:1 CF2:0 CF3:0 SF:1 WF1:1 WF2:0 WF3:0 PVF:0 TCF:1 CVRF:1
2019-10-29 16:16:02,494 # --------------+--------------+--------------+--------------+--------------
2019-10-29 16:16:02,496 # channel       | shunt [uV]   | bus [mV]     | current [uA] | power [uW]   
2019-10-29 16:16:02,498 # --------------+--------------+--------------+--------------+--------------
2019-10-29 16:16:02,499 # 0             |44320         |4920          |443200        |2179560       
2019-10-29 16:16:02,517 # 1             |880           |3288          |8800          |28934         
2019-10-29 16:16:02,519 # 2             |960           |3296          |9600          |31642         
2019-10-29 16:16:02,519 # 
2019-10-29 16:16:02,520 # FLAGS: CF1:1 CF2:0 CF3:0 SF:1 WF1:1 WF2:0 WF3:0 PVF:0 TCF:1 CVRF:1
2019-10-29 16:16:02,522 # --------------+--------------+--------------+--------------+--------------
2019-10-29 16:16:04,532 # channel       | shunt [uV]   | bus [mV]     | current [uA] | power [uW]   
2019-10-29 16:16:04,534 # --------------+--------------+--------------+--------------+--------------
2019-10-29 16:16:04,536 # 0             |44600         |4920          |446000        |2194320       
2019-10-29 16:16:04,553 # 1             |880           |3288          |8800          |28934         
2019-10-29 16:16:04,555 # 2             |960           |3296          |9600          |31642         

Ran the default example with two connected sensors to test SAUL interface:

saul
2019-10-29 16:08:55,084 # saul
2019-10-29 16:08:55,086 # ID	Class		Name
2019-10-29 16:08:55,087 # #0	ACT_SWITCH	LED
2019-10-29 16:08:55,089 # #1	SENSE_VOLTAGE	INA3221 (U2) bus voltage
2019-10-29 16:08:55,090 # #2	SENSE_CURRENT	INA3221 (U2) current
2019-10-29 16:08:55,091 # #3	SENSE_POWER	INA3221 (U2) power
2019-10-29 16:08:55,093 # #4	SENSE_VOLTAGE	INA3221 (U2) shunt voltage sum
2019-10-29 16:08:55,094 # #5	SENSE_VOLTAGE	INA3221 (U3) bus voltage
2019-10-29 16:08:55,096 # #6	SENSE_CURRENT	INA3221 (U3) current
2019-10-29 16:08:55,099 # #7	SENSE_POWER	INA3221 (U3) power
2019-10-29 16:08:55,101 # #8	SENSE_VOLTAGE	INA3221 (U3) shunt voltage sum
> saul read 1
2019-10-29 16:09:02,137 #  saul read 1
2019-10-29 16:09:02,138 # Reading from #1 (INA3221 (U2) bus voltage|SENSE_VOLTAGE)
2019-10-29 16:09:02,138 # Data:	[0]   4920 mV
2019-10-29 16:09:02,138 # 	[1]   3296 mV
2019-10-29 16:09:02,139 # 	[2]   3296 mV
> saul read 2
2019-10-29 16:09:03,548 #  saul read 2
2019-10-29 16:09:03,551 # Reading from #2 (INA3221 (U2) current|SENSE_CURRENT)
2019-10-29 16:09:03,552 # Data:	[0] 0.4504A
2019-10-29 16:09:03,553 # 	[1] 0.0088A
2019-10-29 16:09:03,554 # 	[2] 0.0096A
> saul read 3
2019-10-29 16:09:05,629 #  saul read 3
2019-10-29 16:09:05,632 # Reading from #3 (INA3221 (U2) power|SENSE_POWER)
2019-10-29 16:09:05,633 # Data:	[0] 2.1845W
2019-10-29 16:09:05,633 # 	[1] 0.0290W
2019-10-29 16:09:05,634 # 	[2] 0.0316W
> saul read 4
2019-10-29 16:09:06,784 #  saul read 4
2019-10-29 16:09:06,785 # Reading from #4 (INA3221 (U2) shunt voltage sum|SENSE_VOLTAGE)
2019-10-29 16:09:06,785 # Data:	          0 uV
> saul read 5
2019-10-29 16:09:07,874 #  saul read 5
2019-10-29 16:09:07,877 # Reading from #5 (INA3221 (U3) bus voltage|SENSE_VOLTAGE)
2019-10-29 16:09:07,878 # Data:	[0]   3296 mV
2019-10-29 16:09:07,880 # 	[1]   3296 mV
2019-10-29 16:09:07,881 # 	[2]   3296 mV
> saul read 6
2019-10-29 16:09:08,861 #  saul read 6
2019-10-29 16:09:08,862 # Reading from #6 (INA3221 (U3) current|SENSE_CURRENT)
2019-10-29 16:09:08,863 # Data:	[0]      0 uA
2019-10-29 16:09:08,864 # 	[1]      0 uA
2019-10-29 16:09:08,865 # 	[2]   2400 uA
> saul read 7
2019-10-29 16:09:09,906 #  saul read 7
2019-10-29 16:09:09,909 # Reading from #7 (INA3221 (U3) power|SENSE_POWER)
2019-10-29 16:09:09,910 # Data:	[0]      0 uW
2019-10-29 16:09:09,911 # 	[1]      0 uW
2019-10-29 16:09:09,912 # 	[2]   7910 uW
> saul read 8
2019-10-29 16:09:11,182 #  saul read 8
2019-10-29 16:09:11,186 # Reading from #8 (INA3221 (U3) shunt voltage sum|SENSE_VOLTAGE)
2019-10-29 16:09:11,187 # Data:	          0 uV
> saul write 8 7
2019-10-29 16:21:24,539 #  saul write 8 7
2019-10-29 16:21:24,540 # Writing to device #8 - INA3221 (U3) shunt voltage sum
2019-10-29 16:21:24,541 # Data:	          7
2019-10-29 16:21:24,542 # data successfully written to device #8
> saul read 8
2019-10-29 16:21:30,196 #  saul read 8
2019-10-29 16:21:30,197 # Reading from #8 (INA3221 (U3) shunt voltage sum|SENSE_VOLTAGE)
2019-10-29 16:21:30,198 # Data:	        240 uV

@maribu
Copy link
Member

maribu commented Oct 30, 2019

Can you rename the commit message of the last commit? Something like drivers/ina3221: Add SAUL integration. (The first line of a commit message should have the following format <subsystem>/<module>: <abstract> or <subsystem>: <abstract>.)

@maribu maribu added Reviewed: 1-fundamentals The fundamentals of the PR were reviewed according to the maintainer guidelines Reviewed: 2-code-design The code design of the PR was reviewed according to the maintainer guidelines Reviewed: 4-code-style The adherence to coding conventions by the PR were reviewed according to the maintainer guidelines labels Oct 30, 2019
@fabian18
Copy link
Contributor Author

Can you rename the commit message of the last commit? Something like drivers/ina3221: Add SAUL integration. (The first line of a commit message should have the following format <subsystem>/<module>: <abstract> or <subsystem>: <abstract>.)

done

@maribu maribu added Reviewed: 5-documentation The documentation details of the PR were reviewed according to the maintainer guidelines CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Oct 30, 2019
@maribu
Copy link
Member

maribu commented Oct 30, 2019

The build of the test failed on some boards for two reasons:

  1. Some MCUs do not use PORT_A in GPIO_PIN(). The easiest way to get it compiling is to use something like GPIO_PIN(0, 0) as defaults. You can also have something like ifeq (nucleo-f767zi,$(BOARD)) and give than the configuration you are using for development of the driver - as typically the author of the driver is the most frequent user of the corresponding test, it is common to let her/him free hand at providing the default config, as long as it can be overwritten via environment variables. This should be squashed into the commit of the test.
  2. A lot of boards have too little RAM and/or ROM. You will need to rebase this PR to catch all of the boards. Those boards should be added to Makefile.ci using the same format as is given in the other tests. This can be a separate commit or squashed into the commit of the test.

@fabian18
Copy link
Contributor Author

fabian18 commented Nov 1, 2019

I tried to compile for all boards in make info-boards and none of them seems to have insufficient memory (However, we will see ...). But i had to add #include periph/gpio.h in the ina3221 public header. I thought that would be included with the I2C header automatically, which must have been the case for my nucleo-f446re.

@fabian18
Copy link
Contributor Author

fabian18 commented Nov 4, 2019

I see in Murdock, the build process still fails for esp8266 boards.

Copy link
Member

@maribu maribu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Travis found some spelling issues. Also some #includes use the wrong format, see inline comments

Comment on lines +21 to +22
#include <periph/gpio.h>
#include <xtimer.h>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are RIOT specific, and should use quotes (e.g. #include "xtimer.h")


#include <periph/gpio.h>
#include <xtimer.h>
#include "string.h"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is provided by the standard c lib, it should be #include <string.h>.

The difference between <> and "" in the include is that with "" #include will first check the local folder for headers with that name, and then will fall back to the system header paths (e.g. those provided by the standard c lib). With <> the search will start directly in the system header paths.

Usign "" instead of <> risks that a same named file in the local folder is accidentally included, when the intention was to include a system header.

Comment on lines +97 to +113
#define INA3221_PARAMS { \
.i2c = INA3221_PARAM_I2C, \
.addr = INA3221_PARAM_ADDR, \
.pin_warn = INA3221_PARAM_PIN_WRN, \
.pin_crit = INA3221_PARAM_PIN_CRT, \
.pin_tc = INA3221_PARAM_PIN_TC, \
.pin_pv = INA3221_PARAM_PIN_PV, \
.gpio_config = (INA3221_PARAM_INT_PU_PIN_WRN << INA3221_ALERT_WRN) | \
(INA3221_PARAM_INT_PU_PIN_CRT << INA3221_ALERT_CRT) | \
(INA3221_PARAM_INT_PU_PIN_TC << INA3221_ALERT_TC) | \
(INA3221_PARAM_INT_PU_PIN_PV << INA3221_ALERT_PV), \
.config = INA3221_PARAM_CONFIG, \
.rshunt_mohm = { \
INA3221_PARAM_RSHUNT_MOHM_CH1, \
INA3221_PARAM_RSHUNT_MOHM_CH2, \
INA3221_PARAM_RSHUNT_MOHM_CH3 \
} \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uncrustify messed up the alignment of the back slashes here. (The tool cannot be configured to get this right.) Can you fix this manually? They should be placed on a column name that is a multiple of 4; unlike other indents which should be 4*n+1.

@fabian18
Copy link
Contributor Author

fabian18 commented Nov 4, 2019

So the compiler for esp8266 does not seem to accept it if members of an anonymous struct are initialized directly.

@maribu
Copy link
Member

maribu commented Nov 4, 2019

@gschorcht: Maybe you could have a look why the initialize is not accepted by the ESP8266 toolchain? It seems to work with every other toolchain including the ESP32 (where it not only builds but also runs fine).

@gschorcht
Copy link
Contributor

gschorcht commented Nov 4, 2019

I can compile it with ESP8266 toolchain without any problem. Murdock is also happy.

@maribu
Copy link
Member

maribu commented Nov 4, 2019

Oh, sorry. @fabian18 fixed it that instant I wrote you. Sorry for the fuzz!

@gschorcht
Copy link
Contributor

No problem.

@fabian18 fabian18 force-pushed the driver-ina3221 branch 2 times, most recently from da189b7 to 7e8cce8 Compare November 5, 2019 11:40
Copy link
Member

@maribu maribu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK

@maribu maribu merged commit 4d279ae into RIOT-OS:master Nov 5, 2019
@maribu
Copy link
Member

maribu commented Nov 5, 2019

🎉

@fabian18
Copy link
Contributor Author

fabian18 commented Nov 5, 2019

Thank You

@fabian18 fabian18 deleted the driver-ina3221 branch November 5, 2019 13:53
@fjmolinas fjmolinas added this to the Release 2020.01 milestone Dec 13, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: drivers Area: Device drivers CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Reviewed: 1-fundamentals The fundamentals of the PR were reviewed according to the maintainer guidelines Reviewed: 2-code-design The code design of the PR was reviewed according to the maintainer guidelines Reviewed: 3-testing The PR was tested according to the maintainer guidelines Reviewed: 4-code-style The adherence to coding conventions by the PR were reviewed according to the maintainer guidelines Reviewed: 5-documentation The documentation details of the PR were reviewed according to the maintainer guidelines Type: new feature The issue requests / The PR implemements a new feature for RIOT

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants