ESP8266 part of the f105-motor-demo project (see f105-motor-demo_stm32)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
f105-motor-demo_esp/user/page_about.c

83 lines
1.8 KiB

#include <esp8266.h>
#include <httpd.h>
#include "page_about.h"
#include "fw_version.h"
#include "sbmp.h"
#include "datalink.h"
#include "serial.h"
static bool stm_vers_loaded = false;
static char stm_vers_buf[10];
static void readVersionCB(SBMP_Endpoint *ep, SBMP_Datagram *dg, void** arg)
{
(void)ep;
(void)arg;
if (dg->type != DG_SUCCESS) {
error("Response to REQUEST_VERSION not SUCCESS.");
return;
}
sprintf(stm_vers_buf, "%d.%d.%d", dg->payload[0], dg->payload[1], dg->payload[2]);
stm_vers_loaded = true;
}
/** "About" page */
httpd_cgi_state FLASH_FN tplAbout(HttpdConnData *connData, char *token, void **arg)
{
// arg is unused
(void)arg;
if (token == NULL) return HTTPD_CGI_DONE;
if (streq(token, "vers_fw")) {
httpdSend(connData, FIRMWARE_VERSION, -1);
} else if (streq(token, "date")) {
httpdSend(connData, __DATE__, -1);
} else if (streq(token, "time")) {
httpdSend(connData, __TIME__, -1);
} else if (streq(token, "vers_httpd")) {
httpdSend(connData, HTTPDVER, -1);
} else if (streq(token, "vers_sbmp")) {
httpdSend(connData, SBMP_VER, -1);
} else if (streq(token, "vers_sdk")) {
httpdSend(connData, STR(ESP_SDK_VERSION), -1);
} else if (streq(token, "vers_stm")) {
if (stm_vers_loaded) {
httpdSend(connData, stm_vers_buf, -1);
} else {
uint16_t sesn;
sbmp_ep_send_message(dlnk_ep, DG_REQUEST_STM_VERSION, NULL, 0, &sesn, NULL);
sbmp_ep_add_listener(dlnk_ep, sesn, readVersionCB, NULL);
sprintf(stm_vers_buf, "???");
// poll & wait for response
const int timeout = 100;
for (uint32_t i = 0; i < timeout * 100; i++) {
uart_poll();
if (stm_vers_loaded) {
break;
}
os_delay_us(10);
system_soft_wdt_feed(); // Feed the dog, or it'll bite.
}
httpdSend(connData, stm_vers_buf, -1); // send to view
}
}
return HTTPD_CGI_DONE;
}