#include <Arduino.h>
#include <Button2.h>
#include <Wire.h>
#include <menu.h>
#include <menuIO/serialOut.h>

#include <menuIO/chainStream.h>
#include <menuIO/serialIn.h>
#include <menuIO/u8g2Out.h>
// #include <Adafruit_GFX.h>
// #include <Adafruit_SSD1306.h>



#define LEDPIN 2
#define MAX_DEPTH 2
#define BTN_UP 12  // Pinnumber for button for up/previous and select / enter actions  - Red
#define BTN_DWN 13 // Pinnumber for button for down/next and back / exit actions - WHite

//-----------------------------------
//  Screen related variables
//-----------------------------------

constexpr int OLED_SDA = 21;
constexpr int OLED_SDC = 22;

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64


#define fontX 7
#define fontY 16
#define offsetX 0
#define offsetY 3
#define U8_Width 128
#define U8_Height 64
#define USE_HWI2C
#define fontMarginX 2
#define fontMarginY 2
#define fontName u8g2_font_7x13_mf

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, SCL, SDA);

void setup()
{
  pinMode(LEDPIN, OUTPUT);
  Serial.begin(115200);
  while (!Serial)
    ;
  Serial.println("Serial setup done.");


  Wire.begin((int)SDA, SCL);
  Serial.println("Wire setup done.");


  u8g2.begin();
  u8g2.setFont(fontName);
  // disable second option
  // mainMenu[1].enabled=disabledStatus;
  // nav.idleTask = idle; // point a function to be used when menu is suspended

  u8g2.firstPage();
  do
  {
    u8g2.drawStr(0, fontY, "Startup message");
    u8g2.drawStr(0, fontY << 1, "on ESP");
    u8g2.drawStr(0, fontY + (fontY << 1), "with buitin oled");
  } while (u8g2.nextPage());

  // for(int c=255;c>0;c--) {
  //   u8g2.setContrast(255-255.0*log(c)/log(255));
  //   delay(8);
  // }
  u8g2.setContrast(255);
}

void loop(){
 Serial.println("Loop");
 delay(2000); 
}