hc
2024-03-26 e0728245c89800c2038c23308f2d88969d5b41c8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Description: This patch fixes the "multiple definition of" errors with gcc10
 
Signed-off-by: Michael Fischer <mf@go-sys.de>
 
diff -purN python-rpi-gpio.org/source/common.c python-rpi-gpio/source/common.c
--- python-rpi-gpio.org/source/common.c    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/common.c    2020-08-07 09:31:33.948575964 +0200
@@ -28,6 +28,9 @@
 const int pin_to_gpio_rev1[41] = {-1, -1, -1, 0, -1, 1, -1, 4, 14, -1, 15, 17, 18, 21, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
 const int pin_to_gpio_rev2[41] = {-1, -1, -1, 2, -1, 3, -1, 4, 14, -1, 15, 17, 18, 27, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
 const int pin_to_gpio_rev3[41] = {-1, -1, -1, 2, -1, 3, -1, 4, 14, -1, 15, 17, 18, 27, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, 5, -1, 6, 12, 13, -1, 19, 16, 26, 20, -1, 21 };
+const int (*pin_to_gpio)[41];
+int gpio_direction[54];
+rpi_info rpiinfo;
 int setup_error = 0;
 int module_setup = 0;
 
diff -purN python-rpi-gpio.org/source/common.h python-rpi-gpio/source/common.h
--- python-rpi-gpio.org/source/common.h    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/common.h    2020-08-07 09:31:33.948575964 +0200
@@ -30,14 +30,14 @@ SOFTWARE.
 #define I2C          42
 #define PWM          43
 
-int gpio_mode;
-const int pin_to_gpio_rev1[41];
-const int pin_to_gpio_rev2[41];
-const int pin_to_gpio_rev3[41];
-const int (*pin_to_gpio)[41];
-int gpio_direction[54];
-rpi_info rpiinfo;
-int setup_error;
-int module_setup;
+extern int gpio_mode;
+extern const int pin_to_gpio_rev1[41];
+extern const int pin_to_gpio_rev2[41];
+extern const int pin_to_gpio_rev3[41];
+extern const int (*pin_to_gpio)[41];
+extern int gpio_direction[54];
+extern rpi_info rpiinfo;
+extern int setup_error;
+extern int module_setup;
 int check_gpio_priv(void);
 int get_gpio_number(int channel, unsigned int *gpio);
diff -purN python-rpi-gpio.org/source/constants.c python-rpi-gpio/source/constants.c
--- python-rpi-gpio.org/source/constants.c    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/constants.c    2020-08-07 09:32:15.522196618 +0200
@@ -21,6 +21,7 @@
 */
 
 #include "Python.h"
+#define CONSTANTS_C
 #include "constants.h"
 #include "common.h"
 #include "c_gpio.h"
diff -purN python-rpi-gpio.org/source/constants.h python-rpi-gpio/source/constants.h
--- python-rpi-gpio.org/source/constants.h    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/constants.h    2020-08-07 09:32:15.522196618 +0200
@@ -23,22 +23,28 @@ SOFTWARE.
 #define PY_PUD_CONST_OFFSET 20
 #define PY_EVENT_CONST_OFFSET 30
 
-PyObject *high;
-PyObject *low;
-PyObject *input;
-PyObject *output;
-PyObject *pwm;
-PyObject *serial;
-PyObject *i2c;
-PyObject *spi;
-PyObject *unknown;
-PyObject *board;
-PyObject *bcm;
-PyObject *pud_off;
-PyObject *pud_up;
-PyObject *pud_down;
-PyObject *rising_edge;
-PyObject *falling_edge;
-PyObject *both_edge;
+#ifdef CONSTANTS_C
+#define MAYBE_EXTERN
+#else
+#define MAYBE_EXTERN extern
+#endif
+
+MAYBE_EXTERN PyObject *high;
+MAYBE_EXTERN PyObject *low;
+MAYBE_EXTERN PyObject *input;
+MAYBE_EXTERN PyObject *output;
+MAYBE_EXTERN PyObject *pwm;
+MAYBE_EXTERN PyObject *serial;
+MAYBE_EXTERN PyObject *i2c;
+MAYBE_EXTERN PyObject *spi;
+MAYBE_EXTERN PyObject *unknown;
+MAYBE_EXTERN PyObject *board;
+MAYBE_EXTERN PyObject *bcm;
+MAYBE_EXTERN PyObject *pud_off;
+MAYBE_EXTERN PyObject *pud_up;
+MAYBE_EXTERN PyObject *pud_down;
+MAYBE_EXTERN PyObject *rising_edge;
+MAYBE_EXTERN PyObject *falling_edge;
+MAYBE_EXTERN PyObject *both_edge;
 
 void define_constants(PyObject *module);
diff -purN python-rpi-gpio.org/source/event_gpio.c python-rpi-gpio/source/event_gpio.c
--- python-rpi-gpio.org/source/event_gpio.c    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/event_gpio.c    2020-08-07 09:42:05.564483136 +0200
@@ -57,7 +57,7 @@ struct callback
 };
 struct callback *callbacks = NULL;
 
-pthread_t threads;
+static pthread_t threads;
 int event_occurred[54] = { 0 };
 int thread_running = 0;
 int epfd_thread = -1;
diff -purN python-rpi-gpio.org/source/py_pwm.h python-rpi-gpio/source/py_pwm.h
--- python-rpi-gpio.org/source/py_pwm.h    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/py_pwm.h    2020-08-07 09:38:49.445646807 +0200
@@ -20,5 +20,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR
 SOFTWARE.
 */
 
-PyTypeObject PWMType;
+extern PyTypeObject PWMType;
 PyTypeObject *PWM_init_PWMType(void);
diff -purN python-rpi-gpio.org/source/soft_pwm.c python-rpi-gpio/source/soft_pwm.c
--- python-rpi-gpio.org/source/soft_pwm.c    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/soft_pwm.c    2020-08-07 09:42:40.753160437 +0200
@@ -25,7 +25,7 @@ SOFTWARE.
 #include <time.h>
 #include "c_gpio.h"
 #include "soft_pwm.h"
-pthread_t threads;
+static pthread_t threads;
 
 struct pwm
 {
diff -purN python-rpi-gpio.org/source/soft_pwm.h python-rpi-gpio/source/soft_pwm.h
--- python-rpi-gpio.org/source/soft_pwm.h    2019-07-21 14:41:22.000000000 +0200
+++ python-rpi-gpio/source/soft_pwm.h    2020-08-07 09:39:25.916811352 +0200
@@ -26,4 +26,4 @@ void pwm_set_duty_cycle(unsigned int gpi
 void pwm_set_frequency(unsigned int gpio, float freq);
 void pwm_start(unsigned int gpio);
 void pwm_stop(unsigned int gpio);
-int pwm_exists(unsigned int gpio);
+extern int pwm_exists(unsigned int gpio);