Skip to content

0.7.0 #28

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 17 commits into from
May 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ menu "Arduino Configuration"
config ENABLE_ARDUINO_DEPENDS
bool
select LWIP_SO_RCVBUF
select BT_ENABLED
select ETHERNET
select WIFI_ENABLED
select ESP32_PHY_CALIBRATION_AND_DATA_STORAGE
Expand Down
8 changes: 8 additions & 0 deletions cores/esp32/Esp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,3 +212,11 @@ bool EspClass::flashRead(uint32_t offset, uint32_t *data, size_t size)
{
return spi_flash_read(offset, (uint32_t*) data, size) == ESP_OK;
}


uint64_t EspClass::getEfuseMac(void)
{
uint64_t _chipmacid;
esp_efuse_read_mac((uint8_t*) (&_chipmacid));
return _chipmacid;
}
2 changes: 2 additions & 0 deletions cores/esp32/Esp.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ class EspClass
bool flashWrite(uint32_t offset, uint32_t *data, size_t size);
bool flashRead(uint32_t offset, uint32_t *data, size_t size);

uint64_t getEfuseMac();

};

extern EspClass ESP;
Expand Down
17 changes: 17 additions & 0 deletions cores/esp32/esp32-hal-bt.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#include "esp32-hal-bt.h"

#if CONFIG_BT_ENABLED

#include "bt.h"
#include "esp_bt_defs.h"
#include "esp_bt_main.h"
Expand Down Expand Up @@ -62,5 +64,20 @@ bool btStop(){
return false;
}

#else
bool btStarted()
{
return false;
}

bool btStart()
{
return false;
}

bool btStop()
{
return false;
}
#endif

4 changes: 2 additions & 2 deletions cores/esp32/esp32-hal-spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -332,11 +332,11 @@ void spiSetDataMode(spi_t * spi, uint8_t dataMode)
break;
case SPI_MODE2:
spi->dev->pin.ck_idle_edge = 1;
spi->dev->user.ck_out_edge = 0;
spi->dev->user.ck_out_edge = 1;
break;
case SPI_MODE3:
spi->dev->pin.ck_idle_edge = 1;
spi->dev->user.ck_out_edge = 1;
spi->dev->user.ck_out_edge = 0;
break;
case SPI_MODE0:
default:
Expand Down
157 changes: 81 additions & 76 deletions cores/esp32/libb64/cdecode.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,89 +6,94 @@ For details, see http://sourceforge.net/projects/libb64
*/

#include "cdecode.h"
#include <stdint.h>

int base64_decode_value(char value_in)
{
static const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
static const char decoding_size = sizeof(decoding);
value_in -= 43;
if (value_in < 0 || value_in > decoding_size) {
return -1;
}
return decoding[(int)value_in];
static int base64_decode_value_signed(int8_t value_in){
static const int8_t decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
static const int8_t decoding_size = sizeof(decoding);
value_in -= 43;
if (value_in < 0 || value_in > decoding_size) return -1;
return decoding[(int)value_in];
}

void base64_init_decodestate(base64_decodestate* state_in){
state_in->step = step_a;
state_in->plainchar = 0;
}

void base64_init_decodestate(base64_decodestate* state_in)
{
state_in->step = step_a;
state_in->plainchar = 0;
static int base64_decode_block_signed(const int8_t* code_in, const int length_in, int8_t* plaintext_out, base64_decodestate* state_in){
const int8_t* codechar = code_in;
int8_t* plainchar = plaintext_out;
int8_t fragment;

*plainchar = state_in->plainchar;

switch (state_in->step){
while (1){
case step_a:
do {
if (codechar == code_in+length_in){
state_in->step = step_a;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (int8_t)base64_decode_value_signed(*codechar++);
} while (fragment < 0);
*plainchar = (fragment & 0x03f) << 2;
case step_b:
do {
if (codechar == code_in+length_in){
state_in->step = step_b;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (int8_t)base64_decode_value_signed(*codechar++);
} while (fragment < 0);
*plainchar++ |= (fragment & 0x030) >> 4;
*plainchar = (fragment & 0x00f) << 4;
case step_c:
do {
if (codechar == code_in+length_in){
state_in->step = step_c;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (int8_t)base64_decode_value_signed(*codechar++);
} while (fragment < 0);
*plainchar++ |= (fragment & 0x03c) >> 2;
*plainchar = (fragment & 0x003) << 6;
case step_d:
do {
if (codechar == code_in+length_in){
state_in->step = step_d;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (int8_t)base64_decode_value_signed(*codechar++);
} while (fragment < 0);
*plainchar++ |= (fragment & 0x03f);
}
}
/* control should not reach here */
return plainchar - plaintext_out;
}

int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in)
{
const char* codechar = code_in;
char* plainchar = plaintext_out;
char fragment;
static int base64_decode_chars_signed(const int8_t* code_in, const int length_in, int8_t* plaintext_out){
base64_decodestate _state;
base64_init_decodestate(&_state);
int len = base64_decode_block_signed(code_in, length_in, plaintext_out, &_state);
if(len > 0) plaintext_out[len] = 0;
return len;
}

*plainchar = state_in->plainchar;
int base64_decode_value(char value_in){
return base64_decode_value_signed(*((int8_t *) &value_in));
}

switch (state_in->step) {
while (1) {
case step_a:
do {
if (codechar == code_in+length_in) {
state_in->step = step_a;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (char)base64_decode_value(*codechar++);
} while (fragment < 0);
*plainchar = (fragment & 0x03f) << 2;
case step_b:
do {
if (codechar == code_in+length_in) {
state_in->step = step_b;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (char)base64_decode_value(*codechar++);
} while (fragment < 0);
*plainchar++ |= (fragment & 0x030) >> 4;
*plainchar = (fragment & 0x00f) << 4;
case step_c:
do {
if (codechar == code_in+length_in) {
state_in->step = step_c;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (char)base64_decode_value(*codechar++);
} while (fragment < 0);
*plainchar++ |= (fragment & 0x03c) >> 2;
*plainchar = (fragment & 0x003) << 6;
case step_d:
do {
if (codechar == code_in+length_in) {
state_in->step = step_d;
state_in->plainchar = *plainchar;
return plainchar - plaintext_out;
}
fragment = (char)base64_decode_value(*codechar++);
} while (fragment < 0);
*plainchar++ |= (fragment & 0x03f);
}
}
/* control should not reach here */
return plainchar - plaintext_out;
int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in){
return base64_decode_block_signed((int8_t *) code_in, length_in, (int8_t *) plaintext_out, state_in);
}

int base64_decode_chars(const char* code_in, const int length_in, char* plaintext_out)
{
base64_decodestate _state;
base64_init_decodestate(&_state);
int len = base64_decode_block(code_in, length_in, plaintext_out, &_state);
if(len > 0) {
plaintext_out[len] = 0;
}
return len;
int base64_decode_chars(const char* code_in, const int length_in, char* plaintext_out){
return base64_decode_chars_signed((int8_t *) code_in, length_in, (int8_t *) plaintext_out);
}
2 changes: 1 addition & 1 deletion cores/esp32/nefry/Nefry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ BootMode
1 : WriteMode切替をする
*/

#define LIBVERSION ("0.6.2")
#define LIBVERSION ("0.7.0")
#include "Nefry.h"

Adafruit_NeoPixel _NefryLED[40];
Expand Down
65 changes: 63 additions & 2 deletions cores/esp32/nefry/NefryWeb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,13 @@ void Nefry_Web::beginWeb() {
content += Nefry.getAddressStr(WiFi.localIP());
content += F("</div><div>Module ID: ");
content += Nefry.getModuleID();
content += F("</div><div>");
if (Nefry.getWriteMode())content += F("WriteMode");
content += F(
"</div><div class=\"writemode\">"
"</div><ul>"
"<li><a href='/wifi_conf'>Setup WiFi</a>"
"<li><a href='/config'>Data Store</a>"
"<li><a href='/web_update'>Module Config</a>"
"<li><a href='/module'>Module Config</a>"
"<li><a href='/web_update'>Web Sketch Download</a>"
"<li><a href='/update'>Upload Sketch</a>"
"<li><a href='/console'>Web Console</a>"
Expand Down Expand Up @@ -103,6 +104,66 @@ void Nefry_Web::beginWeb() {
F("<h1>Nefry Write mode</h1><p>Reset start!</p><a href=\"/\">Back to top</a>")));
NefryWebServer.resetTimer(2);
});

NefryWebServer.getWebServer()->on("/module", [&]() {
String content = F(
"<h1>Module Config</h1>"
"<p>Nefryモジュールに関する設定をすることができます。</p><table><tr>"
"<th>Wifi Sport</th><td>"
);
content += WiFi.SSID();
content += F("</td></tr><tr><th>IP Address</th><td>");
content += Nefry.getAddressStr(WiFi.localIP());
content += F("</td></tr><tr><th>SubnetMask</th><td>");
content += Nefry.getAddressStr(WiFi.subnetMask());
content += F("</td></tr><tr><th>Gateway IP Address</th><td>");
content += Nefry.getAddressStr(WiFi.gatewayIP());
content += F("</td></tr><tr><th>MAC Address</th><td>");
content += WiFi.macAddress();
content += F("</td></tr><tr><th>Module ID</th><td>");
content += Nefry.getModuleID();
content += F("</td></tr><tr><th>Nefry library</th><td>");
content += Nefry.getVersion();
content += F("</td></tr><tr><th>Running ProgramName </th><td>");
content += Nefry.getProgramName();
content += F("</td></tr><tr><th></th><td>");
if(Nefry.getWriteMode())content += F("WriteMode");
content += F(
"</td></tr></table></br><form method='get'action='setmodule'><div class=\"row\"><label>Module ID:</label>"
"<div><input name=\"id\"maxlength=\"32\"value=\""
);
content += Nefry.getModuleID();
content += F(
"\"></div></div>"
"<div class=\"row\"><label>Module class:</label><div><input name=\"cls\"maxlength=\"32\"value=\"");
content += Nefry.getModuleClass();
content += F(
"\"></div></div>"
"<div class=\"row\"><label>Nefry WiFi Pass:</label><div><input type=\"password\"name=\"pwd\"maxlength=\"64\"></div></div>"
"<div class=\"row\"><label>Nefry User:</label><div><input name=\"user\"maxlength=\"32\"value=\"");
content += Nefry.getUser();
content += F("\"></div></div><div class = \"row\"><label>Nefry User Pass:</label><div><input type=\"password\"name=\"uPas\"maxlength=\"32\"value=\"\"></div></div>");
content += F("<div class=\"psrow\"><div><input type=\"button\"value=\"Save\"onclick=\"return jsSubmit(this.form);\"></div></form>"
"<div><form method='get'action='reset'><input type=\"button\"value=\"Restart\"onclick=\"return jsSubmit(this.form);\"></form></div>"
"<div><form method='get'action='onreset'><input type=\"button\"value=\"Write Mode\"onclick=\"return jsSubmit(this.form);\"></form></div>"
" </div><a href=\"/\">Back to top</a>");

NefryWebServer.getWebServer()->send(200, "text/html", createHtml(F("Module Config"),"",content));
});

NefryWebServer.getWebServer()->on("/setmodule", [&]() {
String pwd = NefryWebServer.getWebServer()->arg("pwd");
String upwd = NefryWebServer.getWebServer()->arg("uPas");
Nefry.setModuleID(NefryWebServer.getWebServer()->arg("id"));
Nefry.setModuleClass(NefryWebServer.getWebServer()->arg("cls"));
if(pwd.length() > 0)
Nefry.setModulePass(pwd);
Nefry.setUser(NefryWebServer.getWebServer()->arg("user"));
if (upwd.length() > 0)
Nefry.setUserPass(upwd);
NefryWebServer.getWebServer()->send(200, "text/html", createHtml(F("Save Module Config"), "", F("<h1>Nefry Module Set</h1><p>Saveing & Restart...</p><a href=\"/\">Back to top</a>")));
NefryWebServer.resetTimer(2);
});
}

void Nefry_Web::begin()
Expand Down
14 changes: 14 additions & 0 deletions libraries/ESP32/examples/ChipID/GetChipID/GetChipID.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
uint64_t chipid;

void setup() {
Serial.begin(115200);
}

void loop() {
chipid=ESP.getEfuseMac();//The chip ID is essentially its MAC address(length: 6 bytes).
Serial.printf("ESP32 Chip ID = %04X",(uint16_t)(chipid>>32));//print High 2 bytes
Serial.printf("%08X\n",(uint32_t)chipid);//print Low 4bytes.

delay(3000);

}
14 changes: 14 additions & 0 deletions libraries/Nefry/examples/FullColorLED/FullColorLED.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#include <Nefry.h>
//フルカラーLED ランダムに色が変わります。
void setup() {
Nefry.setProgramName("FullColorLED"); //プログラム名を管理することができます。
randomSeed(analogRead(A0));
}
int red,green,blue;
void loop() {
red=random(255); //random関数は0-255の数値をランダムに返します。
green=random(255);
blue=random(255);
Nefry.setLed(red,green,blue); //LEDがランダムに点灯します。
delay(1000); //1秒待つ
}
2 changes: 1 addition & 1 deletion libraries/Nefry/library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=Nefry
version=0.6.2
version=0.7.0
author=Nefry community
maintainer=
sentence=nefry.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ void setup() {
Nefry.setStoreTitle("Event",1); //Nefry DataStoreのタイトルを指定
SecretKey = Nefry.getStoreStr(0); //Nefry DataStoreからデータを取得
Event = Nefry.getStoreStr(1); //Nefry DataStoreからデータを取得
Nefry.enableSW(); //SWを有効化
}

void loop() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ void setup() {
Nefry.setStoreTitle("Event",1); //Nefry DataStoreのタイトルを指定
SecretKey = Nefry.getStoreStr(0); //Nefry DataStoreからデータを取得
Event = Nefry.getStoreStr(1); //Nefry DataStoreからデータを取得
Nefry.enableSW(); //SW有効化
}

void loop() {
Expand Down
Loading