Skip to content

Commit 1471ef6

Browse files
committed
drv/led: move internals to separate header file
This makes the intent clearer and discourages improper use of the API.
1 parent 5b5135d commit 1471ef6

File tree

7 files changed

+43
-21
lines changed

7 files changed

+43
-21
lines changed

lib/pbio/drv/core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
#include <contiki.h>
55

66
#include <pbdrv/battery.h>
7-
#include <pbdrv/led.h>
87

98
#include "counter/counter.h"
9+
#include "led/led.h"
1010
#include "pwm/pwm.h"
1111

1212
/** Initializes all enabled drivers. */

lib/pbio/drv/led/led.h

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// SPDX-License-Identifier: MIT
2+
// Copyright (c) 2020 The Pybricks Authors
3+
4+
// LED driver internal types and functions
5+
6+
#ifndef _PBDRV_LED_LED_H_
7+
#define _PBDRV_LED_LED_H_
8+
9+
#include <pbdrv/config.h>
10+
#include <pbdrv/led.h>
11+
#include <pbio/color.h>
12+
#include <pbio/error.h>
13+
14+
typedef struct {
15+
pbio_error_t (*set_hsv)(pbdrv_led_dev_t *dev, const pbio_color_hsv_t *hsv);
16+
} pbdrv_led_funcs_t;
17+
18+
/** LED device instance. */
19+
struct _pbdrv_led_dev_t {
20+
/** Platform-specific data */
21+
const void *pdata;
22+
/** Driver-specific callbacks. */
23+
const pbdrv_led_funcs_t *funcs;
24+
};
25+
26+
#if PBDRV_CONFIG_LED
27+
28+
void pbdrv_led_init();
29+
30+
#else // PBDRV_CONFIG_LED
31+
32+
#define pbdrv_led_init()
33+
34+
#endif // PBDRV_CONFIG_LED
35+
36+
#endif // _PBDRV_LED_LED_H_

lib/pbio/drv/led/led_core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "led_dual.h"
1616
#include "led_ev3dev.h"
1717
#include "led_pwm.h"
18+
#include "led.h"
1819

1920
#ifndef PBDRV_CONFIG_LED_NUM_DEV
2021
#error "Must define PBDRV_CONFIG_LED_NUM_DEV"

lib/pbio/drv/led/led_dual.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <pbio/math.h>
1818

1919
#include "led_dual.h"
20+
#include "led.h"
2021

2122
#ifndef PBDRV_CONFIG_LED_DUAL_NUM_DEV
2223
#error "Must define PBDRV_CONFIG_LED_DUAL_NUM_DEV"

lib/pbio/drv/led/led_ev3dev.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <pbio/error.h>
1616

1717
#include "led_ev3dev.h"
18+
#include "led.h"
1819

1920
#define NUM_LEDS 4
2021

lib/pbio/drv/led/led_pwm.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <pbio/math.h>
1818

1919
#include "led_pwm.h"
20+
#include "led.h"
2021

2122
#ifndef PBDRV_CONFIG_LED_PWM_NUM_DEV
2223
#error "Must define PBDRV_CONFIG_LED_PWM_NUM_DEV"

lib/pbio/include/pbdrv/led.h

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,14 @@
1919

2020
typedef struct _pbdrv_led_dev_t pbdrv_led_dev_t;
2121

22-
typedef struct {
23-
pbio_error_t (*set_hsv)(pbdrv_led_dev_t *dev, const pbio_color_hsv_t *hsv);
24-
} pbdrv_led_funcs_t;
25-
26-
/** LED device instance. */
27-
struct _pbdrv_led_dev_t {
28-
/** Platform-specific data */
29-
const void *pdata;
30-
/** Driver-specific callbacks. */
31-
const pbdrv_led_funcs_t *funcs;
32-
};
33-
3422
#if PBDRV_CONFIG_LED
3523

36-
/** @cond INTERNAL */
37-
void pbdrv_led_init();
38-
/** @endcond */
39-
4024
pbio_error_t pbdrv_led_get_dev(uint8_t id, pbdrv_led_dev_t **dev);
4125
pbio_error_t pbdrv_led_set_hsv(pbdrv_led_dev_t *dev, const pbio_color_hsv_t *hsv);
4226
pbio_error_t pbdrv_led_on(pbdrv_led_dev_t *dev, pbio_color_t color);
4327
pbio_error_t pbdrv_led_off(pbdrv_led_dev_t *dev);
4428

45-
#else
46-
47-
#define pbdrv_led_init()
29+
#else // PBDRV_CONFIG_LED
4830

4931
static inline pbio_error_t pbdrv_led_get_dev(uint8_t id, pbdrv_led_dev_t **dev) {
5032
*dev = NULL;
@@ -63,7 +45,7 @@ static inline pbio_error_t pbdrv_led_off(pbdrv_led_dev_t *dev) {
6345
return PBIO_ERROR_NOT_SUPPORTED;
6446
}
6547

66-
#endif
48+
#endif // PBDRV_CONFIG_LED
6749

6850
#endif // _PBDRV_LED_H_
6951

0 commit comments

Comments
 (0)