cleanup: include/: move led_strip.h to drivers/led_strip.h

move led_strip.h to drivers/led_strip.h and
create a shim for backward-compatibility.

No functional changes to the headers.
A warning in the shim can be controlled with CONFIG_COMPAT_INCLUDES.

Related to #16539

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2019-06-25 15:53:56 -04:00
parent a14ef3bf01
commit afa85cdc0f
10 changed files with 142 additions and 127 deletions

View file

@ -5,7 +5,7 @@
*/
#include <errno.h>
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <spi.h>
struct apa102_data {

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <errno.h>
#include <string.h>

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <string.h>

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <string.h>

129
include/drivers/led_strip.h Normal file
View file

@ -0,0 +1,129 @@
/*
* Copyright (c) 2017 Linaro Limited
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DRIVERS_LED_STRIP_H_
#define ZEPHYR_INCLUDE_DRIVERS_LED_STRIP_H_
/**
* @file
* @brief Public API for controlling linear strips of LEDs.
*
* This library abstracts the chipset drivers for individually
* addressable strips of LEDs.
*/
#include <zephyr/types.h>
#include <device.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Color value for a single RGB LED.
*
* Individual strip drivers may ignore lower-order bits if their
* resolution in any channel is less than a full byte.
*/
struct led_rgb {
#ifdef CONFIG_LED_STRIP_RGB_SCRATCH
/*
* Pad/scratch space needed by some drivers. Users should
* ignore.
*/
u8_t scratch;
#endif
/** Red channel */
u8_t r;
/** Green channel */
u8_t g;
/** Blue channel */
u8_t b;
};
/**
* @typedef led_api_update_rgb
* @brief Callback API for updating an RGB LED strip
*
* @see led_strip_update_rgb() for argument descriptions.
*/
typedef int (*led_api_update_rgb)(struct device *dev, struct led_rgb *pixels,
size_t num_pixels);
/**
* @typedef led_api_update_channels
* @brief Callback API for updating channels without an RGB interpretation.
*
* @see led_strip_update_channels() for argument descriptions.
*/
typedef int (*led_api_update_channels)(struct device *dev, u8_t *channels,
size_t num_channels);
/**
* @brief LED strip driver API
*
* This is the mandatory API any LED strip driver needs to expose.
*/
struct led_strip_driver_api {
led_api_update_rgb update_rgb;
led_api_update_channels update_channels;
};
/**
* @brief Update an LED strip made of RGB pixels
*
* Important:
* This routine may overwrite @a pixels.
*
* This routine immediately updates the strip display according to the
* given pixels array.
*
* @param dev LED strip device
* @param pixels Array of pixel data
* @param num_pixels Length of pixels array
* @return 0 on success, negative on error
* @warning May overwrite @a pixels
*/
static inline int led_strip_update_rgb(struct device *dev,
struct led_rgb *pixels,
size_t num_pixels) {
const struct led_strip_driver_api *api =
(const struct led_strip_driver_api *)dev->driver_api;
return api->update_rgb(dev, pixels, num_pixels);
}
/**
* @brief Update an LED strip on a per-channel basis.
*
* Important:
* This routine may overwrite @a channels.
*
* This routine immediately updates the strip display according to the
* given channels array. Each channel byte corresponds to an
* individually addressable color channel or LED. Channels
* are updated linearly in strip order.
*
* @param dev LED strip device
* @param channels Array of per-channel data
* @param num_channels Length of channels array
* @return 0 on success, negative on error
* @warning May overwrite @a channels
*/
static inline int led_strip_update_channels(struct device *dev,
u8_t *channels,
size_t num_channels) {
const struct led_strip_driver_api *api =
(const struct led_strip_driver_api *)dev->driver_api;
return api->update_channels(dev, channels, num_channels);
}
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_INCLUDE_DRIVERS_LED_STRIP_H_ */

View file

@ -1,129 +1,15 @@
/*
* Copyright (c) 2017 Linaro Limited
* Copyright (c) 2019 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_LED_STRIP_H_
#define ZEPHYR_INCLUDE_LED_STRIP_H_
/**
* @file
* @brief Public API for controlling linear strips of LEDs.
*
* This library abstracts the chipset drivers for individually
* addressable strips of LEDs.
*/
#include <zephyr/types.h>
#include <device.h>
#ifdef __cplusplus
extern "C" {
#ifndef CONFIG_COMPAT_INCLUDES
#warning "This header file has moved, include <drivers/led_strip.h> instead."
#endif
/**
* @brief Color value for a single RGB LED.
*
* Individual strip drivers may ignore lower-order bits if their
* resolution in any channel is less than a full byte.
*/
struct led_rgb {
#ifdef CONFIG_LED_STRIP_RGB_SCRATCH
/*
* Pad/scratch space needed by some drivers. Users should
* ignore.
*/
u8_t scratch;
#endif
/** Red channel */
u8_t r;
/** Green channel */
u8_t g;
/** Blue channel */
u8_t b;
};
#include <drivers/led_strip.h>
/**
* @typedef led_api_update_rgb
* @brief Callback API for updating an RGB LED strip
*
* @see led_strip_update_rgb() for argument descriptions.
*/
typedef int (*led_api_update_rgb)(struct device *dev, struct led_rgb *pixels,
size_t num_pixels);
/**
* @typedef led_api_update_channels
* @brief Callback API for updating channels without an RGB interpretation.
*
* @see led_strip_update_channels() for argument descriptions.
*/
typedef int (*led_api_update_channels)(struct device *dev, u8_t *channels,
size_t num_channels);
/**
* @brief LED strip driver API
*
* This is the mandatory API any LED strip driver needs to expose.
*/
struct led_strip_driver_api {
led_api_update_rgb update_rgb;
led_api_update_channels update_channels;
};
/**
* @brief Update an LED strip made of RGB pixels
*
* Important:
* This routine may overwrite @a pixels.
*
* This routine immediately updates the strip display according to the
* given pixels array.
*
* @param dev LED strip device
* @param pixels Array of pixel data
* @param num_pixels Length of pixels array
* @return 0 on success, negative on error
* @warning May overwrite @a pixels
*/
static inline int led_strip_update_rgb(struct device *dev,
struct led_rgb *pixels,
size_t num_pixels) {
const struct led_strip_driver_api *api =
(const struct led_strip_driver_api *)dev->driver_api;
return api->update_rgb(dev, pixels, num_pixels);
}
/**
* @brief Update an LED strip on a per-channel basis.
*
* Important:
* This routine may overwrite @a channels.
*
* This routine immediately updates the strip display according to the
* given channels array. Each channel byte corresponds to an
* individually addressable color channel or LED. Channels
* are updated linearly in strip order.
*
* @param dev LED strip device
* @param channels Array of per-channel data
* @param num_channels Length of channels array
* @return 0 on success, negative on error
* @warning May overwrite @a channels
*/
static inline int led_strip_update_channels(struct device *dev,
u8_t *channels,
size_t num_channels) {
const struct led_strip_driver_api *api =
(const struct led_strip_driver_api *)dev->driver_api;
return api->update_channels(dev, channels, num_channels);
}
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_INCLUDE_LED_STRIP_H_ */
#endif /* ZEPHYR_INCLUDE_LED_STRIP_H_ */

View file

@ -13,7 +13,7 @@
LOG_MODULE_REGISTER(main);
#include <zephyr.h>
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <device.h>
#include <spi.h>
#include <misc/util.h>

View file

@ -12,7 +12,7 @@
LOG_MODULE_REGISTER(main);
#include <zephyr.h>
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <device.h>
#include <spi.h>
#include <misc/util.h>

View file

@ -13,7 +13,7 @@
LOG_MODULE_REGISTER(main);
#include <zephyr.h>
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <device.h>
#include <spi.h>
#include <misc/util.h>

View file

@ -22,7 +22,7 @@
#include <sys/crc.h>
#include <drivers/gpio.h>
#include <led_strip.h>
#include <drivers/led_strip.h>
#include <spi.h>
#include <uart.h>
#include <usb/usb_device.h>