mirror of
https://github.com/cesanta/mongoose.git
synced 2024-11-28 13:49:01 +08:00
Drop Arduino support
PUBLISHED_FROM=85768c0d2536d9c31885a5127710b9756e3229a3
This commit is contained in:
parent
2ea63a0ea6
commit
507e8bfac9
@ -1,2 +0,0 @@
|
||||
# This "makefile" is only intended to prevent errors during main makefile execution
|
||||
all:
|
@ -1,46 +0,0 @@
|
||||
# Arduino Restful Client
|
||||
|
||||
This example demonstrates how to use [Mongoose](https://www.cesanta.com/mongoose) to send HTTP commands from Arduino.
|
||||
|
||||
Example sends free memory size and current board uptime, but it can be modified to send any user-specific data.
|
||||
|
||||
At the moment this example supports [Arduino Mega 2560](http://arduino.cc/en/Main/ArduinoBoardMega2560) board (and compatible) with either W5100-based
|
||||
network shield (like [Arduino Ethernet Shield](http://arduino.cc/en/Main/ArduinoEthernetShield)) or [CC3000](http://www.ti.com/product/cc3000)-based WIFI Shield.
|
||||
|
||||
## Build and run instructions:
|
||||
|
||||
###To run with Arduino Ethernet (W5100) shield:
|
||||
1. Add (Sketch->Add file...) the following files to sketch:
|
||||
- /mongoose/mongoose.h
|
||||
- /mongoose/mongoose.c
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
3. Buils and start (in console) /Users/alex/Projects/mongoose/examples/restful_server example
|
||||
4. Make `board_ip` and `board_mac` variables suitable for your network and board
|
||||
5. Change IP address in `s_target_address` variable to IP address of host running restful_server
|
||||
6. Uncomment line `#include <Ethernet.h>`
|
||||
7. Compile and flash sketch
|
||||
8. restful_server will start to show current uptime and free memory size (with 5 seconds interval)
|
||||
|
||||
###To run with Adafruit WiFi (CC3000) shield:
|
||||
1. Add (Sketch->Add files...) the following files to sketch:
|
||||
- /mongoose/mongoose.h
|
||||
- /mongoose/mongoose.c
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
2. Import Adafruit CC3000 library for mongoose
|
||||
(select Sketch->Import Library...->Add library... and point
|
||||
/mongoose/platforms/arduino_wifi_CC3000/adafruit_CC3000_lib_mongoose folder)
|
||||
3. Buils and start (in console) /Users/alex/Projects/mongoose/examples/restful_server example
|
||||
4. Make the following variables suitable for your network
|
||||
- `board_ip`
|
||||
- `subnet_mask`
|
||||
- `gateway`
|
||||
- `dns`
|
||||
- `wlan_ssid`
|
||||
- `wlan_pwd`
|
||||
- `wlan_security`
|
||||
5. Change IP address in `s_target_address` variable to IP address of host running restful_server
|
||||
6. Uncomment line `#include <Adafruit_CC3000.h>`
|
||||
8. Compile and flash sketch
|
||||
9. restful_server will start to show current uptime and free memory size (with 5 seconds interval)
|
@ -1,141 +0,0 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Cesanta Software Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* Build and run instructions:
|
||||
* To run with Arduino Ethernet (W5100) shield:
|
||||
* -----------------------------------------------------------
|
||||
* 1. Add (Sketch->Add file...) the following files to sketch:
|
||||
* - /mongoose/mongoose.h
|
||||
* - /mongoose/mongoose.c
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
* 2. Buils and run in console /Users/alex/Projects/mongoose/examples/restful_server example
|
||||
* 3. Make board_ip and board_mac variables suitable for your network and board
|
||||
* 4. Uncomment line #include <Ethernet.h>
|
||||
* 5. Change IP address in s_target_address variable to IP address of host running restful_server
|
||||
* 6. Compile & flash sketch
|
||||
* 7. restful_server server will start to show current uptime and free memory size (with 5 second interval)
|
||||
*
|
||||
* To run with Adafruit WiFi (CC3000) shield:
|
||||
* -----------------------------------------------------------
|
||||
* 1. Add (Sketch->Add files...) the following files to sketch:
|
||||
* - /mongoose/mongoose.h
|
||||
* - /mongoose/mongoose.c
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
* 2. Import Adafruit CC3000 library for mongoose (select Sketch->Import Library...->Add library... and point
|
||||
* /mongoose/platforms/arduino_wifi_CC3000/adafruit_CC3000_lib_mongoose folder
|
||||
* 3. Buils and run in console /Users/alex/Projects/mongoose/examples/restful_server example
|
||||
* 4. Make the following variables suitable for your network
|
||||
* - board_ip
|
||||
* - subnet_mask
|
||||
* - gateway
|
||||
* - dns
|
||||
* - wlan_ssid
|
||||
* - wlan_pwd
|
||||
* - wlan_security
|
||||
* 5. Uncomment line #include <Adafruit_CC3000.h>
|
||||
* 6. Compile & flash sketch
|
||||
* 7. restful_server server will start to show current uptime and free memory size (with 5 second interval) *
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
//#include <Ethernet.h>
|
||||
//#include <Adafruit_CC3000.h>
|
||||
#include <SPI.h>
|
||||
#include "mongoose.h"
|
||||
|
||||
// CHANGE THESE VARIABLES
|
||||
// NB: Devices with the same address must not end up on the same network.
|
||||
// Use MAC address provided by device manufacturer (e.g. on a sticker).
|
||||
// If there isn't one, use a random one from the locally administered range.
|
||||
// See http://en.wikipedia.org/wiki/MAC_address for details.
|
||||
static uint8_t board_mac[] = {
|
||||
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
|
||||
};
|
||||
static uint8_t board_ip[] = {192, 168, 10, 177};
|
||||
|
||||
#ifdef WIFI_CC3000
|
||||
static uint8_t subnet_mask[] = {255, 255, 255, 0};
|
||||
static uint8_t gateway[] = {192, 168, 10, 254};
|
||||
static uint8_t dns_ip[] = {192, 168, 10, 254};
|
||||
|
||||
static const char *wlan_ssid = "mynetwork";
|
||||
static const char *wlan_pwd = "mypassword";
|
||||
static int wlan_security = WLAN_SEC_WPA2;
|
||||
#endif
|
||||
|
||||
static const char *s_target_address = "192.168.10.3:8000";
|
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
static const char *s_request = "/printcontent";
|
||||
|
||||
static uint32_t IP2U32(uint8_t* iparr) {
|
||||
return ((uint32_t)iparr[0] << 24) | ((uint32_t)iparr[1] << 16) | (iparr[2] << 8) | (iparr[3]);
|
||||
}
|
||||
|
||||
static int get_data_to_send(char* buf, int buf_size) {
|
||||
// Adding data to send
|
||||
// It could be any sensor data, now just put uptime & free memory size here
|
||||
return snprintf(buf, buf_size, "Uptime: %lus Free memory: %db",
|
||||
millis()/1000, get_freememsize());
|
||||
}
|
||||
static void rfc_ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
|
||||
int connect_status;
|
||||
|
||||
switch (ev) {
|
||||
case NS_CONNECT:
|
||||
connect_status = * (int *) ev_data;
|
||||
|
||||
if (connect_status == 0) {
|
||||
char buf[100];
|
||||
int len = get_data_to_send(buf, sizeof(buf));
|
||||
mg_printf(nc, "POST %s HTTP/1.0\r\nHost: %s\r\nContent-Lenght: %d"
|
||||
"\r\n\r\n%s", s_request, s_target_address, len, buf);
|
||||
nc->flags |= MG_F_SEND_AND_CLOSE;
|
||||
} else {
|
||||
nc->flags |= MG_F_CLOSE_IMMEDIATELY;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static struct mg_mgr mgr;
|
||||
static struct mg_connection *nc;
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
Serial.println("Initialization...");
|
||||
#if defined(ETHERNET_W5100)
|
||||
avr_netinit(board_mac, board_ip);
|
||||
#elif defined(WIFI_CC3000)
|
||||
if (avr_netinit(wlan_ssid, wlan_pwd, wlan_security, IP2U32(board_ip),
|
||||
IP2U32(subnet_mask), IP2U32(gateway), IP2U32(dns_ip)) != 0) {
|
||||
Serial.println("Initialization error, check network settings");
|
||||
return;
|
||||
};
|
||||
#endif
|
||||
|
||||
mg_mgr_init(&mgr, NULL);
|
||||
Serial.println("Initialization done");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
nc = mg_connect(&mgr, s_target_address, rfc_ev_handler);
|
||||
if (nc != NULL) {
|
||||
mg_set_protocol_http_websocket(nc);
|
||||
}
|
||||
|
||||
uint32_t time_to_finish = millis() + 5000;
|
||||
while (millis() < time_to_finish) {
|
||||
mg_mgr_poll(&mgr, 1000);
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +0,0 @@
|
||||
# This "makefile" is only intended to prevent errors during main makefile execution
|
||||
all:
|
@ -1,45 +0,0 @@
|
||||
# Arduino Restful Server
|
||||
|
||||
This example demonstrates how to use [Mongoose](https://www.cesanta.com/mongoose) to control Arduino
|
||||
using HTTP requests.
|
||||
Example just blinks by LED when Mongoose receives HTTP command, but it can be modified to execute any user-specific code.
|
||||
|
||||
At the moment this example supports [Arduino Mega 2560](http://arduino.cc/en/Main/ArduinoBoardMega2560) board (and compatible) with either W5100-based
|
||||
network shield (like [Arduino Ethernet Shield](http://arduino.cc/en/Main/ArduinoEthernetShield)) or [CC3000](http://www.ti.com/product/cc3000)-based WIFI Shield.
|
||||
|
||||
## Build and run instructions:
|
||||
|
||||
###To run with Arduino Ethernet (W5100) shield:
|
||||
1. Add (Sketch->Add file...) the following files to sketch:
|
||||
- /mongoose/mongoose.h
|
||||
- /mongoose/mongoose.c
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
2. Make `board_ip` and `board_mac` variables suitable for your network and board
|
||||
3. Uncomment line `#include <Ethernet.h>`
|
||||
4. Compile and flash sketch
|
||||
5. Run `curl http://<board_ip/blink`
|
||||
LED attached to PIN 13 will blink and board free memory size and board uptime will be displayed.
|
||||
|
||||
|
||||
###To run with Adafruit WiFi (CC3000) shield:
|
||||
1. Add (Sketch->Add files...) the following files to sketch:
|
||||
- /mongoose/mongoose.h
|
||||
- /mongoose/mongoose.c
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
- /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
2. Import Adafruit CC3000 library for mongoose
|
||||
(select Sketch->Import Library...->Add library... and point
|
||||
/mongoose/platforms/arduino_wifi_CC3000/adafruit_CC3000_lib_mongoose folder)
|
||||
3. Make the following variables suitable for your network
|
||||
- `board_ip`
|
||||
- `subnet_mask`
|
||||
- `gateway`
|
||||
- `dns`
|
||||
- `wlan_ssid`
|
||||
- `wlan_pwd`
|
||||
- `wlan_security`
|
||||
5. Uncomment line `#include <Adafruit_CC3000.h>`
|
||||
4. Compile and flash sketch
|
||||
5. Run curl `http://<board_ip/blink`
|
||||
LED attached to PIN 13 will blink and board free memory size and board uptime will be displayed.
|
@ -1,133 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015 Cesanta Software Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* Build and run instructions:
|
||||
* To run with Arduino Ethernet (W5100) shield:
|
||||
* -----------------------------------------------------------
|
||||
* 1. Add (Sketch->Add file...) the following files to sketch:
|
||||
* - /mongoose/mongoose.h
|
||||
* - /mongoose/mongoose.c
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
* 2. Make board_ip and board_mac variables suitable for your network and board
|
||||
* 3. Uncomment line #include <Ethernet.h>
|
||||
* 4. Compile & flash sketch
|
||||
* 5. Run curl http://<board_ip/blink
|
||||
* LED attached to PIN 13 will blink and board free memory size and uptime will responsed
|
||||
*
|
||||
* To run with Adafruit WiFi (CC3000) shield:
|
||||
* -----------------------------------------------------------
|
||||
* 1. Add (Sketch->Add files...) the following files to sketch:
|
||||
* - /mongoose/mongoose.h
|
||||
* - /mongoose/mongoose.c
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.h
|
||||
* - /mongoose/platforms/arduino_ethernet_W5100/avrsupport.cpp
|
||||
* 2. Import Adafruit CC3000 library for mongoose (select Sketch->Import Library...->Add library... and point
|
||||
* /mongoose/platforms/arduino_wifi_CC3000/adafruit_CC3000_lib_mongoose folder
|
||||
* 3. Make the following variables suitable for your network
|
||||
* - board_ip
|
||||
* - subnet_mask
|
||||
* - gateway
|
||||
* - dns
|
||||
* - wlan_ssid
|
||||
* - wlan_pwd
|
||||
* - wlan_security
|
||||
* 5. Uncomment line #include <Adafruit_CC3000.h>
|
||||
* 4. Compile & flash sketch
|
||||
* 5. Run curl http://<board_ip/blink
|
||||
* LED attached to PIN 13 will blink and board free memory size and uptime will responsed
|
||||
*
|
||||
*/
|
||||
|
||||
//#include <Ethernet.h>
|
||||
//#include <Adafruit_CC3000.h>
|
||||
#include <SPI.h>
|
||||
#include "mongoose.h"
|
||||
|
||||
// CHANGE THESE VARIABLES
|
||||
// NB: Devices with the same address must not end up on the same network.
|
||||
// Use MAC address provided by device manufacturer (e.g. on a sticker).
|
||||
// If there isn't one, use a random one from the locally administered range.
|
||||
// See http://en.wikipedia.org/wiki/MAC_address for details.
|
||||
static uint8_t board_mac[] = {
|
||||
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
|
||||
};
|
||||
|
||||
static uint8_t board_ip[] = {192, 168, 10, 8};
|
||||
|
||||
#ifdef WIFI_CC3000
|
||||
static uint8_t subnet_mask[] = {255, 255, 255, 0};
|
||||
static uint8_t gateway[] = {192, 168, 10, 254};
|
||||
static uint8_t dns_ip[] = {192, 168, 10, 254};
|
||||
|
||||
static const char *wlan_ssid = "mynetwork";
|
||||
static const char *wlan_pwd = "mypassword";
|
||||
static int wlan_security = WLAN_SEC_WPA2;
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////
|
||||
|
||||
static const char *s_http_port = "60000";
|
||||
|
||||
static uint32_t IP2U32(uint8_t* iparr) {
|
||||
return ((uint32_t)iparr[0] << 24) | ((uint32_t)iparr[1] << 16) | (iparr[2] << 8) | (iparr[3]);
|
||||
}
|
||||
|
||||
static void rfs_ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
|
||||
struct http_message *hm = (struct http_message *) ev_data;
|
||||
char buf[100];
|
||||
int clen;
|
||||
|
||||
switch (ev) {
|
||||
case NS_HTTP_REQUEST:
|
||||
if (mg_vcmp(&hm->uri, "/blink") == 0) {
|
||||
blink(1, 500);
|
||||
}
|
||||
|
||||
clen = snprintf(buf, sizeof(buf),
|
||||
"Free memory size: %d Uptime: %d",
|
||||
(int)get_freememsize(), (int)time(NULL));
|
||||
|
||||
mg_printf_http_chunk(nc, "HTTP/1.1 200 OK\r\n"
|
||||
"Content-Length: %d\r\n"
|
||||
"Transfer-Encoding: chunked\r\n\r\n"
|
||||
"%s",
|
||||
clen, buf);
|
||||
|
||||
mg_send_http_chunk(nc, "", 0);
|
||||
break;
|
||||
case NS_SEND:
|
||||
nc->flags |= MG_F_CLOSE_IMMEDIATELY;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static struct mg_connection *nc;
|
||||
static struct mg_mgr mgr;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.println("Initialization...");
|
||||
#if defined(ETHERNET_W5100)
|
||||
avr_netinit(board_mac, board_ip);
|
||||
#elif defined(WIFI_CC3000)
|
||||
if (avr_netinit(wlan_ssid, wlan_pwd, wlan_security, IP2U32(board_ip),
|
||||
IP2U32(subnet_mask), IP2U32(gateway), IP2U32(dns_ip)) != 0) {
|
||||
Serial.println("Initialization error, check network settings");
|
||||
return;
|
||||
};
|
||||
#endif
|
||||
|
||||
mg_mgr_init(&mgr, NULL);
|
||||
nc = mg_bind(&mgr, s_http_port, rfs_ev_handler);
|
||||
mg_set_protocol_http_websocket(nc);
|
||||
Serial.println("Initialization done");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
mg_mgr_poll(&mgr, 1000);
|
||||
}
|
Loading…
Reference in New Issue
Block a user