arduino / arduino/Arduino

Wire.h signature uint8_t requestFrom(uint8_t, uint8_t); (and others) missing in ArduinoCore-megaavr

Open
#11,820 0 comments 2 reactions 0 assignees View on GitHub
Library: Wire Type: Bug
Dominant language
Java
Stars
14.6k
Forks
7k
PR merge metrics
No merged PRs in 30d

Description

Wire.h in ArduinoCore-megaavr for Arduino Nano Every misses signatures which are used in the ArduinoCore

in megaavr core
```
size_t requestFrom(uint8_t, **size_t**);
size_t requestFrom(uint8_t, **size_t**, bool);
size_t requestFrom(int, int);
size_t requestFrom(int, int, int);
```
in the Arduino Core
from https://github.com/arduino/ArduinoCore-avr/blob/master/libraries/Wire/src/Wire.h

```
uint8_t requestFrom(uint8_t, uint8_t);
uint8_t requestFrom(uint8_t, uint8_t, uint8_t);
uint8_t requestFrom(uint8_t, uint8_t, uint32_t, uint8_t, uint8_t);
uint8_t requestFrom(int, int);
uint8_t requestFrom(int, int, int);
```

this miss match can throw warnings in libraries using the interface according to the the Arduino-Core - which i consider as "standard" how to do...

example

```
#include

void foo()
{
uint8_t address = 1;
Wire.requestFrom(address, (uint8_t)1);
}

void setup() {
Wire.begin();
}

void loop() {
}

```

brings
```

C:\Daten\myrepository\Arduino\Forum no SVN\sketch_sep18a\sketch_sep18a.ino: In function 'void foo()':
C:\Daten\myrepository\Arduino\Forum no SVN\sketch_sep18a\sketch_sep18a.ino:7:41: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
Wire.requestFrom(address, (uint8_t)1);
^
In file included from C:\Daten\myrepository\Arduino\Forum no SVN\sketch_sep18a\sketch_sep18a.ino:2:0:
C:\Users\werner\AppData\Local\Arduino15\packages\arduino\hardware\megaavr\1.8.7\libraries\Wire\src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
C:\Users\werner\AppData\Local\Arduino15\packages\arduino\hardware\megaavr\1.8.7\libraries\Wire\src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~

```

Contributor guide

Open the contributing guide

Research direction

Start with Wire.h in ArduinoCore-megaavr and compare its TwoWire::requestFrom declarations with libraries/Wire/src/Wire.h in ArduinoCore-avr, as linked in the issue. Verify the listed overloads are represented consistently, then compile the provided Wire.requestFrom example and confirm the ambiguity warning is gone.

Written by the indexing model from the issue text.

Assessment

Tech stack
arduino, cpp
Domain
embedded-iot
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.