mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-18 10:59:45 +00:00
Rework RT1020 driver
Add web server in example Add to tests
This commit is contained in:
1 parent
bb9c7c0eb3
commit
9255ceaf8a
8 files changed
+360
-469
No files matched your search
@@ -10,7 +10,7 @@ SOURCES += cmsis_mcu/devices/MIMXRT1021/gcc/startup_MIMXRT1021.S
|
||||
CFLAGS += -D__ATOLLIC__ -D__STARTUP_CLEAR_BSS # Make startup code work as expected
|
||||
|
||||
# Mongoose-specific. See https://mongoose.ws/documentation/#build-options
|
||||
SOURCES += mongoose.c #net.c packed_fs.c
|
||||
SOURCES += mongoose.c
|
||||
CFLAGS += -DMG_ENABLE_TCPIP=1 -DMG_ARCH=MG_ARCH_NEWLIB -DMG_ENABLE_CUSTOM_MILLIS=1
|
||||
CFLAGS += -DMG_ENABLE_CUSTOM_RANDOM=1 -DMG_ENABLE_PACKED_FS=1 -DMG_ENABLE_DRIVER_IMXRT1020=1
|
||||
|
||||
@@ -57,9 +57,9 @@ endif
|
||||
DEVICE_URL ?= https://dash.vcon.io/api/v3/devices/4
|
||||
update: firmware.bin
|
||||
curl --fail-with-body -su :$(VCON_API_KEY) $(DEVICE_URL)/ota --data-binary @$<
|
||||
curl -su :$(VCON_API_KEY) https://dash.vcon.io/api/v3/devices/4/rpc/swd.exec -d '{"req":"init"}'
|
||||
curl -su :$(VCON_API_KEY) https://dash.vcon.io/api/v3/devices/4/rpc/swd.exec -d '{"req":"wm,e000edf0,a05f0003 wm,e000edfc,1 wm,e000ed0c,5fa0004"}'
|
||||
curl -su :$(VCON_API_KEY) https://dash.vcon.io/api/v3/devices/4/rpc/swd.exec -d '{"req":"init"}'
|
||||
curl -su :$(VCON_API_KEY) $(DEVICE_URL)/rpc/swd.exec -d '{"req":"init"}'
|
||||
curl -su :$(VCON_API_KEY) $(DEVICE_URL)/rpc/swd.exec -d '{"req":"wm,e000edf0,a05f0003 wm,e000edfc,1 wm,e000ed0c,5fa0004"}'
|
||||
curl -su :$(VCON_API_KEY) $(DEVICE_URL)/rpc/swd.exec -d '{"req":"init"}'
|
||||
PC=`curl -su :$(VCON_API_KEY) $(DEVICE_URL)/rpc/swd.exec -d '{"req":"rm,4"}' | jq -r .resp[5:]` && \
|
||||
SP=`curl -su :$(VCON_API_KEY) $(DEVICE_URL)/rpc/swd.exec -d '{"req":"rm,0"}' | jq -r .resp[5:]` && \
|
||||
REQ="wm,e000ed08,0 wr,d,$$SP wr,f,$$PC" && \
|
||||
|
||||
@@ -281,8 +281,10 @@ static inline void ethernet_init(void) {
|
||||
NVIC_EnableIRQ(ENET_IRQn); // Setup Ethernet IRQ handler
|
||||
}
|
||||
|
||||
// Helper macro for MAC generation
|
||||
#define GENERATE_LOCALLY_ADMINISTERED_MAC() \
|
||||
{ 2, 0, 2, 5, 7, 91 }
|
||||
// *((uint32_t *)(uintptr_t)&uid[0]) = OCOTP->CFG0;
|
||||
// *((uint32_t *)(uintptr_t)&uid[4]) = OCOTP->CFG1;
|
||||
// Helper macro for MAC generation, byte reads not allowed
|
||||
#define GENERATE_LOCALLY_ADMINISTERED_MAC() \
|
||||
{ \
|
||||
2, OCOTP->CFG0 & 255, (OCOTP->CFG0 >> 10) & 255, \
|
||||
((OCOTP->CFG0 >> 19) ^ (OCOTP->CFG1 >> 19)) & 255, \
|
||||
(OCOTP->CFG1 >> 10) & 255, OCOTP->CFG1 & 255 \
|
||||
}
|
||||
@@ -31,6 +31,29 @@ static void timer_fn(void *arg) {
|
||||
ifp->ndrop, ifp->nerr));
|
||||
}
|
||||
|
||||
static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
|
||||
struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) fn_data;
|
||||
if (ev == MG_EV_HTTP_MSG) {
|
||||
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
|
||||
if (mg_http_match_uri(hm, "/api/hello")) { // Request to /api/hello
|
||||
mg_http_reply(c, 200, "", "{%m:%u,%m:%u,%m:%u,%m:%u,%m:%u}\n",
|
||||
MG_ESC("eth"), ifp->state, MG_ESC("frames_received"),
|
||||
ifp->nrecv, MG_ESC("frames_sent"), ifp->nsent,
|
||||
MG_ESC("frames_dropped"), ifp->ndrop,
|
||||
MG_ESC("interface_errors"), ifp->nerr);
|
||||
} else if (mg_http_match_uri(hm, "/")) { // Index page
|
||||
mg_http_reply(
|
||||
c, 200, "", "%s",
|
||||
"<html><head><link rel='icon' href='data:;base64,='></head><body>"
|
||||
"<h1>Welcome to Mongoose</h1>"
|
||||
"See <a href=/api/hello>/api/hello</a> for REST example"
|
||||
"</body></html>");
|
||||
} else { // All other URIs
|
||||
mg_http_reply(c, 404, "", "Not Found\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
gpio_output(LED); // Setup blue LED
|
||||
uart_init(UART_DEBUG, 115200); // Initialise debug printf
|
||||
@@ -42,7 +65,7 @@ int main(void) {
|
||||
mg_log_set(MG_LL_DEBUG); // Set log level
|
||||
|
||||
// Initialise Mongoose network stack
|
||||
struct mg_tcpip_driver_imxrt1020_data driver_data = {.mdc_cr = 4};
|
||||
struct mg_tcpip_driver_imxrt1020_data driver_data = {.mdc_cr = 24};
|
||||
struct mg_tcpip_if mif = {.mac = GENERATE_LOCALLY_ADMINISTERED_MAC(),
|
||||
// Uncomment below for static configuration:
|
||||
// .ip = mg_htonl(MG_U32(192, 168, 0, 223)),
|
||||
@@ -59,7 +82,7 @@ int main(void) {
|
||||
}
|
||||
|
||||
MG_INFO(("Initialising application..."));
|
||||
// web_init(&mgr);
|
||||
mg_http_listen(&mgr, "http://0.0.0.0:80", fn, &mif);
|
||||
|
||||
MG_INFO(("Starting event loop"));
|
||||
for (;;) {
|
||||
|
||||
Reference in new issue
Block a user