mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
Merge #17460
17460: pkg/arduino_adafruit_sensor: add Adafruit Unified Sensor Driver as package r=benpicco a=gschorcht ### Contribution description This PR provides the [Adafruit Unified Sensor Driver](https://github.com/adafruit/Adafruit_Sensor) as package. There are a number of Adafruit sensor drivers which all use a common base class `Adafruit_Sensor` from the [Adafruit Unified Sensor Driver](https://github.com/adafruit/Adafruit_Sensor). To support such drivers, the Adafruit Unified Sensor Driver is provided as package. Adafruit sensor driver for ST LSM9DS0 will be provided as separat PR as package for demonstration and testing. PR #12518 will be rebased for testing to have an Adafruit sensor driver for a sensor for which there is a native driver in RIOT. ### Testing procedure Use a board that provides the `arduino` feature and flash ``` BOARD=... make -C tests/pkg_arduino_adafruit_sensor flash test ``` PR #12518 can be used as a more complex test for using the package. ### Issues/PRs references Prerequisite for PR #12518 Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
This commit is contained in:
commit
b8b1a605a9
@ -6,6 +6,7 @@
|
||||
#
|
||||
menu "Packages"
|
||||
|
||||
rsource "arduino_adafruit_sensor/Kconfig"
|
||||
rsource "arduino_sdi_12/Kconfig"
|
||||
rsource "c25519/Kconfig"
|
||||
rsource "cayenne-lpp/Kconfig"
|
||||
|
11
pkg/arduino_adafruit_sensor/Kconfig
Normal file
11
pkg/arduino_adafruit_sensor/Kconfig
Normal file
@ -0,0 +1,11 @@
|
||||
# Copyright (c) 2021 Gunar Schorcht
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser
|
||||
# General Public License v2.1. See the file LICENSE in the top level
|
||||
# directory for more details.
|
||||
#
|
||||
|
||||
config PACKAGE_ARDUINO_ADAFRUIT_SENSOR
|
||||
bool "Arduino Adafruit Unified Sensor Driver package"
|
||||
depends on TEST_KCONFIG
|
||||
select MODULE_ARDUINO
|
9
pkg/arduino_adafruit_sensor/Makefile
Normal file
9
pkg/arduino_adafruit_sensor/Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
PKG_NAME=arduino_adafruit_sensor
|
||||
PKG_URL=https://github.com/adafruit/Adafruit_Sensor
|
||||
PKG_VERSION=334044cc0bd087ff93629cef9ae8efc14e88ec73
|
||||
PKG_LICENSE=Apache-2.0
|
||||
|
||||
include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
all:
|
||||
$(QQ)"$(MAKE)" -C $(PKG_SOURCE_DIR) -f $(RIOTBASE)/Makefile.base
|
4
pkg/arduino_adafruit_sensor/Makefile.dep
Normal file
4
pkg/arduino_adafruit_sensor/Makefile.dep
Normal file
@ -0,0 +1,4 @@
|
||||
FEATURES_REQUIRED += arduino
|
||||
FEATURES_REQUIRED += cpp
|
||||
|
||||
USEMODULE += arduino
|
2
pkg/arduino_adafruit_sensor/Makefile.include
Normal file
2
pkg/arduino_adafruit_sensor/Makefile.include
Normal file
@ -0,0 +1,2 @@
|
||||
CFLAGS += "-DARDUINO = 100"
|
||||
INCLUDES += -I$(PKGDIRBASE)/arduino_adafruit_sensor
|
6
pkg/arduino_adafruit_sensor/doc.txt
Normal file
6
pkg/arduino_adafruit_sensor/doc.txt
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* @defgroup pkg_adafruit_sensor Adafruit Unified Sensor Driver
|
||||
* @ingroup pkg
|
||||
* @brief Adafruit Unified Sensor Driver
|
||||
* @see https://github.com/adafruit/Adafruit_Sensor
|
||||
*/
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
5
tests/pkg_arduino_adafruit_sensor/Makefile
Normal file
5
tests/pkg_arduino_adafruit_sensor/Makefile
Normal file
@ -0,0 +1,5 @@
|
||||
include ../Makefile.tests_common
|
||||
|
||||
USEPKG += arduino_adafruit_sensor
|
||||
|
||||
include $(RIOTBASE)/Makefile.include
|
6
tests/pkg_arduino_adafruit_sensor/Makefile.ci
Normal file
6
tests/pkg_arduino_adafruit_sensor/Makefile.ci
Normal file
@ -0,0 +1,6 @@
|
||||
BOARD_INSUFFICIENT_MEMORY := \
|
||||
arduino-duemilanove \
|
||||
arduino-uno \
|
||||
arduino-nano \
|
||||
nucleo-l011k4 \
|
||||
#
|
3
tests/pkg_arduino_adafruit_sensor/app.config.test
Normal file
3
tests/pkg_arduino_adafruit_sensor/app.config.test
Normal file
@ -0,0 +1,3 @@
|
||||
# this file enables modules defined in Kconfig. Do not use this file for
|
||||
# application configuration. This is only needed during migration.
|
||||
CONFIG_PACKAGE_ARDUINO_ADAFRUIT_SENSOR=y
|
49
tests/pkg_arduino_adafruit_sensor/main.cpp
Normal file
49
tests/pkg_arduino_adafruit_sensor/main.cpp
Normal file
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Gunar Schorcht <gunar@schorcht.net>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup tests
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Tests the Adafruit Unified Sensor Drive
|
||||
*
|
||||
* @author Gunar Schorcht <gunar@schorcht.net>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "Adafruit_Sensor.h"
|
||||
|
||||
class ADXL345 : public Adafruit_Sensor
|
||||
{
|
||||
public:
|
||||
bool getEvent(sensors_event_t *) { return false; };
|
||||
void getSensor(sensor_t *sensor);
|
||||
};
|
||||
|
||||
void ADXL345::getSensor(sensor_t *s)
|
||||
{
|
||||
memset(s, 0, sizeof(sensor_t));
|
||||
strncpy(s->name, "ADXL345", ARRAY_SIZE(s->name) - 1);
|
||||
s->version = 1;
|
||||
s->sensor_id = 12345;
|
||||
s->type = SENSOR_TYPE_ACCELEROMETER;
|
||||
s->min_delay = 0;
|
||||
s->min_value = -156.9064F; /* -16g = 156.9064 m/s^2 */
|
||||
s->max_value = 156.9064F; /* 16g = 156.9064 m/s^2 */
|
||||
s->resolution = 0.03923F; /* 4mg = 0.0392266 m/s^2 */
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
ADXL345 adxl345;
|
||||
adxl345.printSensorDetails();
|
||||
}
|
26
tests/pkg_arduino_adafruit_sensor/tests/01-run.py
Executable file
26
tests/pkg_arduino_adafruit_sensor/tests/01-run.py
Executable file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (C) 2021 Gunar Schorchtr <gunar@schorcht.net>
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser
|
||||
# General Public License v2.1. See the file LICENSE in the top level
|
||||
# directory for more details.
|
||||
|
||||
import sys
|
||||
from testrunner import run
|
||||
|
||||
|
||||
def testfunc(child):
|
||||
child.expect_exact('------------------------------------')
|
||||
child.expect_exact('Sensor: ADXL345')
|
||||
child.expect_exact('Type: Acceleration (m/s2)')
|
||||
child.expect_exact('Driver Ver: 1')
|
||||
child.expect_exact('Unique ID: 12345')
|
||||
child.expect_exact('Min Value: -156.90')
|
||||
child.expect_exact('Max Value: 156.90')
|
||||
child.expect_exact('Resolution: 0.03')
|
||||
child.expect_exact('------------------------------------')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(run(testfunc))
|
Loading…
Reference in New Issue
Block a user