error: reference to 'map' is ambiguous

headquaker
Posts: 20
Joined: Thu Sep 21, 2023 6:28 am

error: reference to 'map' is ambiguous

Postby headquaker » Sun Nov 05, 2023 9:47 pm

hello, I have a message :

Code: Select all

In file included from Project\Boite\BoiteAHistoires_v8\Export\BaH6\ui\ui.ino:53:
Project\Boite\BoiteAHistoires_v8\Export\BaH6\ui\touch.h: In function 'bool touch_touched()':
Project\Boite\BoiteAHistoires_v8\Export\BaH6\ui\touch.h:163:20: error: reference to 'map' is ambiguous

In file included from arduino15\packages\esp32\tools\xtensa-esp32s3-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32s3-elf\include\c++\8.4.0\map:61,

from Arduino15\packages\esp32\hardware\esp32\2.0.14\libraries\BluetoothSerial\src/BluetoothSerial.h:27,
from V:\Jérôme\Productions\ESP32\Projects\BoiteAMathilde\Project\Boite\BoiteAHistoires_v8\Export\BaH6\ui\ui.ino:12:
arduino15\packages\esp32\tools\xtensa-esp32s3-elf-gcc\esp-2021r2-patch5-8.4.0\xtensa-esp32s3-elf\include\c++\8.4.0\bits\stl_map.h:100:11: note: candidates are: 'template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map'
     class map
           ^~~
In file included from Projects\BoiteAMathilde\Project\Boite\BoiteAHistoires_v8\Export\BaH6\ui\ui.ino:1:
Arduino15\packages\esp32\hardware\esp32\2.0.14\cores\esp32/Arduino.h:153:6: note:                 'long int map(long int, long int, long int, long int, long int)'
 long map(long, long, long, long, long);
      ^~~
I don't understand who to avoid that error.
Could you help me please ?



Code: Select all

/*******************************************************************************
 * Touch libraries:
 * FT6X36: https://github.com/strange-v/FT6X36.git
 * GT911: https://github.com/TAMCTec/gt911-arduino.git
 * XPT2046: https://github.com/PaulStoffregen/XPT2046_Touchscreen.git
 ******************************************************************************/

/* uncomment for FT6X36 */
// #define TOUCH_FT6X36
// #define TOUCH_FT6X36_SCL 19
// #define TOUCH_FT6X36_SDA 18
// #define TOUCH_FT6X36_INT 39
// #define TOUCH_SWAP_XY
// #define TOUCH_MAP_X1 480
// #define TOUCH_MAP_X2 0
// #define TOUCH_MAP_Y1 0
// #define TOUCH_MAP_Y2 320

/* uncomment for GT911 */
 #define TOUCH_GT911
 #define TOUCH_GT911_SCL 20
 #define TOUCH_GT911_SDA 19
 #define TOUCH_GT911_INT -1
 #define TOUCH_GT911_RST 38
 #define TOUCH_GT911_ROTATION ROTATION_NORMAL
 #define TOUCH_MAP_X1 800
 #define TOUCH_MAP_X2 0
 #define TOUCH_MAP_Y1 480
 #define TOUCH_MAP_Y2 0

/* uncomment for XPT2046 */
// #define TOUCH_XPT2046
// #define TOUCH_XPT2046_SCK 12
// #define TOUCH_XPT2046_MISO 13
// #define TOUCH_XPT2046_MOSI 11
// #define TOUCH_XPT2046_CS 38
// #define TOUCH_XPT2046_INT 18
// #define TOUCH_XPT2046_ROTATION 0
// #define TOUCH_MAP_X1 4000
// #define TOUCH_MAP_X2 100
// #define TOUCH_MAP_Y1 100
// #define TOUCH_MAP_Y2 4000

int touch_last_x = 0, touch_last_y = 0;

#if defined(TOUCH_FT6X36)
#include <Wire.h>
#include <FT6X36.h>
FT6X36 ts(&Wire, TOUCH_FT6X36_INT);
bool touch_touched_flag = true, touch_released_flag = true;

#elif defined(TOUCH_GT911)
#include <Wire.h>
#include <TAMC_GT911.h>
TAMC_GT911 ts = TAMC_GT911(TOUCH_GT911_SDA, TOUCH_GT911_SCL, TOUCH_GT911_INT, TOUCH_GT911_RST, max(TOUCH_MAP_X1, TOUCH_MAP_X2), max(TOUCH_MAP_Y1, TOUCH_MAP_Y2));

#elif defined(TOUCH_XPT2046)
#include <XPT2046_Touchscreen.h>
#include <SPI.h>
XPT2046_Touchscreen ts(TOUCH_XPT2046_CS, TOUCH_XPT2046_INT);

#endif

#if defined(TOUCH_FT6X36)
void touch(TPoint p, TEvent e)
{
  if (e != TEvent::Tap && e != TEvent::DragStart && e != TEvent::DragMove && e != TEvent::DragEnd)
  {
    return;
  }
  // translation logic depends on screen rotation
#if defined(TOUCH_SWAP_XY)
  touch_last_x = map(p.y, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width());
  touch_last_y = map(p.x, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height());
#else
  touch_last_x = map(p.x, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width());
  touch_last_y = map(p.y, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height());
#endif
  switch (e)
  {
  case TEvent::Tap:
    Serial.println("Tap");
    touch_touched_flag = true;
    touch_released_flag = true;
    break;
  case TEvent::DragStart:
    Serial.println("DragStart");
    touch_touched_flag = true;
    break;
  case TEvent::DragMove:
    Serial.println("DragMove");
    touch_touched_flag = true;
    break;
  case TEvent::DragEnd:
    Serial.println("DragEnd");
    touch_released_flag = true;
    break;
  default:
    Serial.println("UNKNOWN");
    break;
  }
}
#endif

void touch_init()
{
#if defined(TOUCH_FT6X36)
  Wire.begin(TOUCH_FT6X36_SDA, TOUCH_FT6X36_SCL);
  ts.begin();
  ts.registerTouchHandler(touch);

#elif defined(TOUCH_GT911)
  Wire.begin(TOUCH_GT911_SDA, TOUCH_GT911_SCL);
  ts.begin();
  ts.setRotation(TOUCH_GT911_ROTATION);

#elif defined(TOUCH_XPT2046)
  SPI.begin(TOUCH_XPT2046_SCK, TOUCH_XPT2046_MISO, TOUCH_XPT2046_MOSI, TOUCH_XPT2046_CS);
  ts.begin();
  ts.setRotation(TOUCH_XPT2046_ROTATION);

#endif
}

bool touch_has_signal()
{
#if defined(TOUCH_FT6X36)
  ts.loop();
  return touch_touched_flag || touch_released_flag;

#elif defined(TOUCH_GT911)
  return true;

#elif defined(TOUCH_XPT2046)
  return ts.tirqTouched();

#else
  return false;
#endif
}

bool touch_touched()
{
#if defined(TOUCH_FT6X36)
  if (touch_touched_flag)
  {
    touch_touched_flag = false;
    return true;
  }
  else
  {
    return false;
  }

#elif defined(TOUCH_GT911)
  ts.read();
  if (ts.isTouched)
  {
#if defined(TOUCH_SWAP_XY)
    touch_last_x = map(ts.points[0].y, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);
    touch_last_y = map(ts.points[0].x, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#else
    touch_last_x = map(ts.points[0].x, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);
    touch_last_y = map(ts.points[0].y, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#endif
    return true;
  }
  else
  {
    return false;
  }

#elif defined(TOUCH_XPT2046)
  if (ts.touched())
  {
    TS_Point p = ts.getPoint();
#if defined(TOUCH_SWAP_XY)
    touch_last_x = map(p.y, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);
    touch_last_y = map(p.x, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#else
    touch_last_x = map(p.x, TOUCH_MAP_X1, TOUCH_MAP_X2, 0, gfx->width() - 1);
    touch_last_y = map(p.y, TOUCH_MAP_Y1, TOUCH_MAP_Y2, 0, gfx->height() - 1);
#endif
    return true;
  }
  else
  {
    return false;
  }

#else
  return false;
#endif
}

bool touch_released()
{
#if defined(TOUCH_FT6X36)
  if (touch_released_flag)
  {
    touch_released_flag = false;
    return true;
  }
  else
  {
    return false;
  }

#elif defined(TOUCH_GT911)
  return true;

#elif defined(TOUCH_XPT2046)
  return true;

#else
  return false;
#endif
}


lbernstone
Posts: 829
Joined: Mon Jul 22, 2019 3:20 pm

Re: error: reference to 'map' is ambiguous

Postby lbernstone » Mon Nov 06, 2023 2:51 am

Make a minimal example that demonstrates it. This is obviously not your actual code, since you aren't including BluetoothSerial.h, which is the source of the conflict.

headquaker
Posts: 20
Joined: Thu Sep 21, 2023 6:28 am

Re: error: reference to 'map' is ambiguous

Postby headquaker » Mon Nov 06, 2023 3:42 pm

lbernstone wrote:
Mon Nov 06, 2023 2:51 am
Make a minimal example that demonstrates it. This is obviously not your actual code, since you aren't including BluetoothSerial.h, which is the source of the conflict.
the main code is crashing just with the include touch.h and include BluetoothSerial.h
I don't need to add any code further...

Code: Select all

include <BluetoothSerial.h>
include touch.h

setup()
{
}

loop()
{
}

lbernstone
Posts: 829
Joined: Mon Jul 22, 2019 3:20 pm

Re: error: reference to 'map' is ambiguous

Postby lbernstone » Mon Nov 06, 2023 4:48 pm

You can define your own map function with a different name
https://github.com/espressif/arduino-es ... pp#L76-L85

headquaker
Posts: 20
Joined: Thu Sep 21, 2023 6:28 am

Re: error: reference to 'map' is ambiguous

Postby headquaker » Mon Nov 06, 2023 4:49 pm

yes I tried but it seems to crash the ESP32.
the screen cannot initiate :(

headquaker
Posts: 20
Joined: Thu Sep 21, 2023 6:28 am

Re: error: reference to 'map' is ambiguous

Postby headquaker » Mon Nov 06, 2023 9:43 pm

I called

Code: Select all

#include <esp_wifi.h>
#include "esp_bt.h"

  // Disable Wi-Fi
  esp_err_t results = esp_wifi_stop();

  // Disable Bluetooth
  esp_bt_controller_disable();
  esp_bt_controller_deinit();
no more conflits...

Who is online

Users browsing this forum: lbernstone and 93 guests