1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
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:
bors[bot] 2023-01-15 10:44:24 +00:00 committed by GitHub
commit b8b1a605a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 122 additions and 0 deletions

View File

@ -6,6 +6,7 @@
#
menu "Packages"
rsource "arduino_adafruit_sensor/Kconfig"
rsource "arduino_sdi_12/Kconfig"
rsource "c25519/Kconfig"
rsource "cayenne-lpp/Kconfig"

View 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

View 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

View File

@ -0,0 +1,4 @@
FEATURES_REQUIRED += arduino
FEATURES_REQUIRED += cpp
USEMODULE += arduino

View File

@ -0,0 +1,2 @@
CFLAGS += "-DARDUINO = 100"
INCLUDES += -I$(PKGDIRBASE)/arduino_adafruit_sensor

View 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
*/

View File

@ -0,0 +1,5 @@
include ../Makefile.tests_common
USEPKG += arduino_adafruit_sensor
include $(RIOTBASE)/Makefile.include

View File

@ -0,0 +1,6 @@
BOARD_INSUFFICIENT_MEMORY := \
arduino-duemilanove \
arduino-uno \
arduino-nano \
nucleo-l011k4 \
#

View 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

View 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();
}

View 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))