mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
124 lines
3.3 KiB
C++
124 lines
3.3 KiB
C++
/*
|
|
Arduino: wire emulation
|
|
Copyright (c) 2018 david gauchard. All rights reserved.
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
copy of this software and associated documentation files (the "Software"),
|
|
to deal with the Software without restriction, including without limitation
|
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
and/or sell copies of the Software, and to permit persons to whom the
|
|
Software is furnished to do so, subject to the following conditions:
|
|
|
|
- Redistributions of source code must retain the above copyright notice,
|
|
this list of conditions and the following disclaimers.
|
|
|
|
- Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimers in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
- The names of its contributors may not be used to endorse or promote
|
|
products derived from this Software without specific prior written
|
|
permission.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
DEALINGS WITH THE SOFTWARE.
|
|
*/
|
|
|
|
#include <Arduino.h>
|
|
|
|
#ifdef DEBUG_ESP_CORE
|
|
#define VERBOSE(x...) fprintf(stderr, MOCK x)
|
|
#else
|
|
#define VERBOSE(x...) mockverbose(x)
|
|
#endif
|
|
|
|
#define GPIONUM 17
|
|
|
|
static uint8_t _mode[GPIONUM];
|
|
static uint8_t _gpio[GPIONUM];
|
|
|
|
void pinMode(uint8_t pin, uint8_t mode)
|
|
{
|
|
#define xxx(mode) \
|
|
case mode: \
|
|
m = STRHELPER(mode); \
|
|
break
|
|
const char* m;
|
|
switch (mode)
|
|
{
|
|
case INPUT:
|
|
m = "INPUT";
|
|
break;
|
|
case OUTPUT:
|
|
m = "OUTPUT";
|
|
break;
|
|
case INPUT_PULLUP:
|
|
m = "INPUT_PULLUP";
|
|
break;
|
|
case OUTPUT_OPEN_DRAIN:
|
|
m = "OUTPUT_OPEN_DRAIN";
|
|
break;
|
|
case INPUT_PULLDOWN_16:
|
|
m = "INPUT_PULLDOWN_16";
|
|
break;
|
|
case WAKEUP_PULLUP:
|
|
m = "WAKEUP_PULLUP";
|
|
break;
|
|
case WAKEUP_PULLDOWN:
|
|
m = "WAKEUP_PULLDOWN";
|
|
break;
|
|
default:
|
|
m = "(special)";
|
|
}
|
|
VERBOSE("gpio%d: mode='%s'\n", pin, m);
|
|
|
|
if (pin < GPIONUM)
|
|
{
|
|
_mode[pin] = mode;
|
|
}
|
|
}
|
|
|
|
void digitalWrite(uint8_t pin, uint8_t val)
|
|
{
|
|
VERBOSE("digitalWrite(pin=%d val=%d)\n", pin, val);
|
|
if (pin < GPIONUM)
|
|
{
|
|
_gpio[pin] = val;
|
|
}
|
|
}
|
|
|
|
void analogWrite(uint8_t pin, int val)
|
|
{
|
|
VERBOSE("analogWrite(pin=%d, val=%d\n", pin, val);
|
|
}
|
|
|
|
int analogRead(uint8_t pin)
|
|
{
|
|
(void)pin;
|
|
return 512;
|
|
}
|
|
|
|
void analogWriteRange(uint32_t range)
|
|
{
|
|
VERBOSE("analogWriteRange(range=%d)\n", range);
|
|
}
|
|
|
|
int digitalRead(uint8_t pin)
|
|
{
|
|
VERBOSE("digitalRead(%d)\n", pin);
|
|
|
|
if (pin < GPIONUM)
|
|
{
|
|
return _gpio[pin] != 0;
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|