
#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>
#include <misakiUTF16.h>

WiFiMulti wifiMulti;
HTTPClient http;

// {\p̊֐
void misakiPrint(int x, int y, char * pUTF8) {
  int n=0;
  byte buf[40][8];
  while(*pUTF8)
      pUTF8 = getFontData(&buf[n++][0], pUTF8);

  for (byte i=0; i < 8; i++) {
    for (byte j=0; j < n; j++) {
      for (byte k=0; k<8;k++) {
        if(bitRead(buf[j][i],7-k)) {
          // F͍Fŕ`悷
          M5.Lcd.drawPixel(x + 8*j + k , y + i, 0x000000);
        }
      }
    }
  }
}

void setup() {
    M5.begin();  // M5Stack̏

    // WiFiɐڑ邽߂̏
    wifiMulti.addAP("SSIDw肵܂", "pX[hw肵܂");
    M5.Lcd.printf("Connecting WIFI...");
    if(wifiMulti.run() == WL_CONNECTED) {
        M5.Lcd.printf("OK!\n IP address: ");
        M5.Lcd.print(WiFi.localIP());
    }
}

void loop()
{
  while (true) {
    M5.update();

    // M5Stack̈ԍɂ{^ꂽɏ
    if (M5.BtnA.wasPressed()) {
      // Yx[EpCWebAPIĂяo
      http.begin("http://192.168.0.1:4567/delayinfo/list.m5stack");
      int status = http.GET();
      if (status > 0) {
        // gĂ{\̊֐char*^w肷邽߁C
        // String^char*̃f[^pӂ
        String res = http.getString();
        int len = res.length() + 1;
        char str[len];
        res.toCharArray(str, len);
        
        M5.Lcd.fillScreen(0xFFFFFF); // wiF𔒂œhԂ
        misakiPrint(0, 20, "ꂪĂHF");
        misakiPrint(10, 40, str);
      }
    }
    delay(1);
  }
}