Skip to content

Commit

Permalink
Merge pull request #10 from shusuke0812/feature/wifi_scanner
Browse files Browse the repository at this point in the history
Add WiFi checker
  • Loading branch information
shusuke0812 committed Mar 28, 2023
2 parents 2b695ef + 84a4154 commit a793365
Show file tree
Hide file tree
Showing 27 changed files with 406 additions and 60 deletions.
55 changes: 55 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"files.associations": {
"system_error": "cpp",
"any": "cpp",
"array": "cpp",
"atomic": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"list": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"map": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"string": "cpp",
"string_view": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"ostream": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp"
}
}
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,5 @@ https://github.com/shusuke0812/Kikurage-Device/issues/1#issuecomment-1446436848

### Reference

- [How to create header and source files](https://skpme.com/621/)
- [How to create header and source files #1](https://skpme.com/621/)
- [How to create header and source files #2](https://qiita.com/MoriokaReimen/items/7c83ebd0fbae44d8532d)
10 changes: 9 additions & 1 deletion include/bluetooth/KikurageBLECharacteristicCallbacks.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,20 @@

#include <NimBLEDevice.h>
#include <M5Stack.h>
#include "sample/Color.h"
#include <ArduinoJson.h>
#include "wifi/KikurageWiFiState.h"
#include "wifi/KikurageWiFiSetting.h"

class KikurageBLECharacteristicCallbacks: public NimBLECharacteristicCallbacks {
public:
void onWrite(NimBLECharacteristic *pCharacteristic);
void onRead(NimBLECharacteristic *pCharacteristic);
};

class KikurageBLEWiFiSettingCharacteristicCallbacks: public NimBLECharacteristicCallbacks {
public:
void onWrite(NimBLECharacteristic *pCharacteristic);
void onRead(NimBLECharacteristic *pCharacteristic);
};

#endif // _KikurageBLECharacteristicCallbacks_H_
24 changes: 24 additions & 0 deletions include/bluetooth/KikurageBLECompletion.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef _KikurageBLECompletion_H_
#define _KikurageBLECompletion_H_

#include <M5Stack.h>
#include <ArduinoJson.h>

enum class KikurageBLECompletion {
WiFiSettingSuccess,
WiFiSettingFail,
};

struct BLECompletionMessage {
String type; // success or error
String description;
};

class KikurageBLECompletionHandler {
public:
BLECompletionMessage getMessage(KikurageBLECompletion completion);
};

String getBLECompletionMessageJSONString(BLECompletionMessage message);

#endif // _KikurageBLECompletion_H_
7 changes: 6 additions & 1 deletion include/bluetooth/KikurageBLEServer.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
#ifndef _KikurageBLEServer_H_
#define _KikurageBLEServer_H_

#include <M5Stack.h>
#include <NimBLEDevice.h>
#include "KikurageBLEServerCallbacks.h"
#include "KikurageBLECharacteristicCallbacks.h"

#include "KikurageBLECompletion.h"

class KikurageBLEServer {
public:
void initialize();
void loop9axisSensor();
void sendWiFiToCentral(String jsonString);
void sendWiFiSettingCompletionToCentral(KikurageBLECompletion completion);
};

extern KikurageBLEServer kBLEServer;

#endif // _KikurageBLEServer_H_
8 changes: 7 additions & 1 deletion include/bluetooth/KikurageBLEState.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
#ifndef _KikurageBLEState_H_
#define _KikurageBLEState_H_

extern bool isConnected;
#include <utility/M5Timer.h>
#include "bluetooth/KikurageBLEServer.h"

extern bool isBLEConnected;

extern M5Timer timer;
extern int wifiSettingTimerId;

#endif // _KikurageBLEState_H_
8 changes: 4 additions & 4 deletions include/bluetooth/KikurageBLEUUID.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

const char *SERVICE_UUID = "65609901-b6ed-45cc-b8af-b4055a9b7666";
const char *CHARACTERISTICS[4] = {
"65609902-b6ed-45cc-b8af-b4055a9b7666",
"65609903-b6ed-45cc-b8af-b4055a9b7666",
"65609904-b6ed-45cc-b8af-b4055a9b7666",
"65609905-b6ed-45cc-b8af-b4055a9b7666",
"65609902-b6ed-45cc-b8af-b4055a9b7666", // stop wifi scan
"65609904-b6ed-45cc-b8af-b4055a9b7666", // wifi setting
"65609903-b6ed-45cc-b8af-b4055a9b7666", // wifi read
"65609905-b6ed-45cc-b8af-b4055a9b7666", // setting completion
};

const char *DEVICE_NAME = "kikurage-device-m5-stack";
Expand Down
File renamed without changes.
File renamed without changes.
18 changes: 18 additions & 0 deletions include/wifi/KikurageWiFi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#ifndef _KikurageWiFi_H_
#define _KikurageWiFi_H_

#include <M5Stack.h>
#include <ArduinoJson.h>

struct KikurageWiFi {
int totalCount;
int count;
String ssid;
int32_t channel;
int32_t rssi;
bool isAuthOpen;
};

String getKikurageWiFiJSONString(KikurageWiFi kikruageWiFi);

#endif // _KikurageWiFi_H_
16 changes: 16 additions & 0 deletions include/wifi/KikurageWiFiSetting.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#ifndef _KikurageWiFiSetting_H_
#define _KikurageWiFiSetting_H_

#include <M5Stack.h>
#include <WiFi.h>
#include <utility/M5Timer.h>
#include "wifi/KikurageWiFiState.h"
#include "bluetooth/KikurageBLEServer.h"
#include "bluetooth/KikurageBLEState.h"

class KikurageWiFiSetting {
public:
void setupWiFi(const char *ssid, const char *password);
};

#endif // _KikurageWiFiSetting_H_
9 changes: 9 additions & 0 deletions include/wifi/KikurageWiFiState.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#ifndef _KikurageWiFitate_H_
#define _KikurageWiFiState_H_

#include <M5Stack.h>

extern bool isStopWiFiScan;
extern bool isWiFiSetting;

#endif // _KikurageWiFiState_H_
16 changes: 16 additions & 0 deletions include/wifi/WiFiScanner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#ifndef _WiFiScanner_H_
#define _WiFiScanner_H_

#include <M5Stack.h>
#include <WiFi.h>
#include <vector>
#include "wifi/KikurageWiFi.h"

class WiFiScanner {
public:
void initialize();
void loopScanDebug();
std::vector<KikurageWiFi> getWiFiList();
};

#endif // _WiFiScanner_H_
1 change: 1 addition & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ framework = arduino
lib_deps =
m5stack/M5Stack@^0.4.3
h2zero/NimBLE-Arduino@^1.4.1
bblanchon/ArduinoJson@^6.20.1
monitor_speed = 115200
53 changes: 33 additions & 20 deletions src/bluetooth/KikurageBLECharacteristicCallbacks.cpp
Original file line number Diff line number Diff line change
@@ -1,30 +1,43 @@
#include "bluetooth/KikurageBLECharacteristicCallbacks.h"

Color color;

void KikurageBLECharacteristicCallbacks::onWrite(NimBLECharacteristic *pCharacteristic) {
Serial.println("debug: called write of characteristic");
M5.Lcd.println("white");
std::string value = pCharacteristic->getValue();
String colorval = String(value.c_str());

int r, g, b;
colorval.toLowerCase();
if (colorval.charAt(0) != '#') {
r = g = b = 0;
M5.Lcd.fillScreen(0);
} else {
colorval.toLowerCase();
r = color.convertRGB(colorval.substring(1, 3));
g = color.convertRGB(colorval.substring(3, 5));
b = color.convertRGB(colorval.substring(5, 7));

int rgb565 = ((r>>3)<<11) | ((g>>2)<<5) | (b>>3);
M5.Lcd.fillScreen(rgb565);
}
String stopWiFiScanCommand = String(value.c_str());

DynamicJsonDocument doc(128);
deserializeJson(doc, stopWiFiScanCommand);

bool temp = doc["is_stop"];
isStopWiFiScan = temp;

Serial.print("debug: called stop wifi scan = ");
Serial.println(temp); // `true = 1`
}

void KikurageBLECharacteristicCallbacks::onRead(NimBLECharacteristic *pCharacteristic) {
Serial.println("debug: called read of characteristic");
M5.Lcd.println("read");
}

void KikurageBLEWiFiSettingCharacteristicCallbacks::onWrite(NimBLECharacteristic *pCharacteristic) {
// change flag
isWiFiSetting = true;

// decode
std::string value = pCharacteristic->getValue();
String wifiSettingCommand = String(value.c_str());

DynamicJsonDocument doc(128);
deserializeJson(doc, wifiSettingCommand);

const char *ssid = doc["ssid"];
const char *password = doc["password"];

KikurageWiFiSetting wifiSetting;
wifiSetting.setupWiFi(ssid, password);
}

void KikurageBLEWiFiSettingCharacteristicCallbacks::onRead(NimBLECharacteristic *pCharacteristic) {
Serial.println("debug: called read of characteristic");
M5.Lcd.println("read");
}
24 changes: 24 additions & 0 deletions src/bluetooth/KikurageBLECompletion.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include "bluetooth/KikurageBLECompletion.h"

BLECompletionMessage KikurageBLECompletionHandler::getMessage(KikurageBLECompletion completion) {
switch (completion) {
case KikurageBLECompletion::WiFiSettingSuccess:
return { "success", "wifi setting success" };
case KikurageBLECompletion::WiFiSettingFail:
return { "error", "wifi setting fail" };
default:
return { "error", "message not found" };
}
}

String getBLECompletionMessageJSONString(BLECompletionMessage message) {
DynamicJsonDocument doc(128);

doc["type"] = message.type;
doc["description"] = message.description;

String output;
serializeJson(doc, output);

return output;
}
3 changes: 1 addition & 2 deletions src/bluetooth/KikurageBLEMessage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@

void kDrawString(String message) {
M5.Lcd.clear(TFT_BLACK);
M5.Lcd.setTextSize(3);
M5.Lcd.drawString(message, 90, 115);
M5.Lcd.drawCentreString(message, 160, 120, 4);
}
Loading

0 comments on commit a793365

Please sign in to comment.