1313#ifndef __OWNG_ARDUINO_ESP8266__
1414#define __OWNG_ARDUINO_ESP8266__
1515
16+ #include < assert.h>
1617#include " Arduino.h"
1718#include " OneWireNg_BitBang.h"
1819
20+ #define __READ_GPIO (pin ) \
21+ (pin < 16 ? GPIP(pin) : pin == 16 ? (GP16I & 0x01 ) : 1 )
22+
1923#define __WRITE_GPIO (pin, st ) \
2024 if (pin < 16 ) { \
2125 if (st) GPOS = (1 << pin); else GPOC = (1 << pin); \
@@ -59,6 +63,9 @@ class OneWireNg_ArduinoESP8266: public OneWireNg_BitBang
5963 OneWireNg_ArduinoESP8266 (unsigned pin, bool pullUp):
6064 OneWireNg_BitBang (false )
6165 {
66+ assert (pin >= 0 && pin <= 16 );
67+ assert (pullup && pin < 16 );
68+
6269 _dtaPin = pin;
6370 initDtaGpio (pullUp);
6471 }
@@ -81,6 +88,9 @@ class OneWireNg_ArduinoESP8266: public OneWireNg_BitBang
8188 OneWireNg_ArduinoESP8266 (unsigned pin, unsigned pwrCtrlPin, bool pullUp):
8289 OneWireNg_BitBang (true )
8390 {
91+ assert (pin >= 0 && pin <= 16 && pwrCtrlPin >= 0 && pwrCtrlPin <= 16 );
92+ assert (pullup && pin < 16 );
93+
8494 _dtaPin = pin;
8595 _pwrCtrlPin = pwrCtrlPin;
8696
@@ -92,8 +102,7 @@ class OneWireNg_ArduinoESP8266: public OneWireNg_BitBang
92102 virtual int readGpioIn (GpioType gpio)
93103 {
94104 UNUSED (gpio);
95- return (_dtaPin < 16 ? GPIP (_dtaPin) :
96- _dtaPin == 16 ? (GP16I & 0x01 ) : 1 );
105+ return __READ_GPIO (pin);
97106 }
98107
99108 virtual void writeGpioOut (GpioType gpio, int state)
@@ -130,7 +139,7 @@ class OneWireNg_ArduinoESP8266: public OneWireNg_BitBang
130139
131140 void initPwrCtrlGpio (void )
132141 {
133- pinMode (_pwrCtrlPin, OUTPUT_OPEN_DRAIN );
142+ pinMode (_pwrCtrlPin, OUTPUT );
134143 setupPwrCtrlGpio (true );
135144 }
136145
@@ -142,5 +151,6 @@ class OneWireNg_ArduinoESP8266: public OneWireNg_BitBang
142151#undef __GPIO_AS_OUTPUT
143152#undef __GPIO_AS_INPUT
144153#undef __WRITE_GPIO
154+ #undef __READ_GPIO
145155
146156#endif /* __OWNG_ARDUINO_ESP8266__ */
0 commit comments