Skip to content

Commit 2752594

Browse files
authored
Merge pull request #16 from mutablelogic/dev
Added updates for GPIO
2 parents f57b44f + dc3832a commit 2752594

File tree

27 files changed

+189
-219
lines changed

27 files changed

+189
-219
lines changed

README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@ Whenever you target a different board, use `make clean` before `make picotool` a
7676

7777
## References
7878

79-
* Pico SDK
80-
* Repository https://github.com/raspberrypi/pico-sdk
81-
* Documentation (in PDF) https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-c-sdk.pdf
82-
83-
79+
* Pico SDK
80+
* Repository https://github.com/raspberrypi/pico-sdk
81+
* Documentation (in PDF) https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-c-sdk.pdf

examples/picofuse/gpio_in/run.c

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,30 @@
11
#include <picofuse/picofuse.h>
22

3-
int run(fuse_t *fuse)
3+
/* @brief Callback when there is a rising or falling edge on GPIO pin
4+
*/
5+
void gpio_callback(fuse_t *self, fuse_event_t *evt, void *user_data)
46
{
5-
// GPIO Pin 26 input
6-
fuse_gpio_t *pin = fuse_new_gpio(fuse, 26, FUSE_GPIO_IN);
7-
assert(pin);
7+
assert(self);
8+
assert(evt);
9+
assert(user_data);
10+
11+
// Print the event
12+
fuse_printf(self, "Event: evt=%v user_data=%p\n", evt, user_data);
13+
}
14+
15+
int run(fuse_t *self)
16+
{
17+
// Initialize picofuse
18+
picofuse_init(self);
19+
20+
// GPIO inputs
21+
assert(fuse_retain(self, fuse_new_gpio(self, 23, FUSE_GPIO_IN)));
22+
assert(fuse_retain(self, fuse_new_gpio(self, 12, FUSE_GPIO_PULLUP)));
23+
assert(fuse_retain(self, fuse_new_gpio(self, 13, FUSE_GPIO_PULLUP)));
24+
assert(fuse_retain(self, fuse_new_gpio(self, 14, FUSE_GPIO_PULLUP)));
25+
26+
// Register a callback
27+
assert(fuse_register_callback(self, FUSE_EVENT_GPIO, 0, gpio_callback));
828

929
return 0;
1030
}

include/fuse/device.h

Lines changed: 0 additions & 35 deletions
This file was deleted.

include/fuse/event.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#ifndef FUSE_EVENT_H
77
#define FUSE_EVENT_H
88

9+
#include "value.h"
10+
911
// Define the event types
1012
#define FUSE_EVENT_NULL 0x00 ///< NULL event
1113
#define FUSE_EVENT_TIMER 0x01 ///< Timer event

include/fuse/flags.h

Lines changed: 0 additions & 40 deletions
This file was deleted.

include/fuse/fuse.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
typedef struct fuse_application fuse_t;
1414

1515
#include "assert.h"
16-
#include "device.h"
1716
#include "event.h"
1817
#include "list.h"
1918
#include "magic.h"
@@ -22,6 +21,7 @@ typedef struct fuse_application fuse_t;
2221
#include "printf.h"
2322
#include "random.h"
2423
#include "sleep.h"
24+
#include "str.h"
2525
#include "timer.h"
2626
#include "value.h"
2727

include/fuse/random.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99
#ifndef FUSE_RANDOM_H
1010
#define FUSE_RANDOM_H
11+
1112
#include <stdint.h>
1213

1314
/** @brief Return a random unsigned 32 bit number

include/fuse/string.h renamed to include/fuse/str.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/** @file string.h
1+
/** @file str.h
22
* @brief String storage and manipulation
33
*
44
* This file contains the function prototypes for working with UTF-8 strings

include/fuse/value.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
#include "fuse.h"
1010
#include <stdint.h>
11+
#include <stddef.h>
12+
#include <stdbool.h>
1113

1214
/** @brief The representation of a fuse value
1315
*/
@@ -68,19 +70,19 @@ fuse_value_t *fuse_new_value_ex(fuse_t *self, const uint16_t magic, const void *
6870
* This method increments the reference count of the value, to take ownership of the value.
6971
*
7072
* @param self The fuse instance
71-
* @param value The value to retain
73+
* @param value The value to retain, which must be a fuse_value_t*
7274
* @return The retained value, or NULL if the value could not be retained
7375
*/
74-
fuse_value_t *fuse_retain(fuse_t *self, fuse_value_t *value);
76+
fuse_value_t *fuse_retain(fuse_t *self, void *value);
7577

7678
/** @brief Release a value and destroy it if the reference count reaches 0
7779
*
7880
* This method decrements the reference count of the value. When it reaches zero, it is
7981
* freed.
8082
*
8183
* @param self The fuse instance
82-
* @param ptr The value to release
84+
* @param ptr The value to release, which must be a fuse_value_t*
8385
*/
84-
void fuse_release(fuse_t *self, fuse_value_t *value);
86+
void fuse_release(fuse_t *self, void *value);
8587

8688
#endif /* FUSE_VALUE_H */

include/picofuse/gpio.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ typedef enum
2727
#define fuse_new_gpio(self, pin, func) \
2828
((fuse_gpio_t *)fuse_new_gpio_ex((self), (pin), (func), __FILE__, __LINE__))
2929
#else
30-
#define fuse_new_gpio((self, pin, func)((fuse_gpio_t *)fuse_new_gpio_ex((self), (pin), (func), 0, 0))
30+
#define fuse_new_gpio(self, pin, func) \
31+
((fuse_gpio_t *)fuse_new_gpio_ex((self), (pin), (func), 0, 0))
3132
#endif
3233

3334
/** @brief An opaque event object

0 commit comments

Comments
 (0)