void MTD_FLASHMEM HTTPGPIOConfigurationResponse::flush() { if (getRequest().method == HTTPHandler::Post) { char const* gpio = getRequest().form[FSTR("GPIO")]; if (getRequest().form[FSTR("configured")]) { // gpio enabled char const* mode = getRequest().form[STR_mode]; char const* pullUp = getRequest().form[STR_pullup]; ConfigurationManager::setGPIOParams(strtol(gpio, NULL, 10), true, f_strcmp(mode, STR_out) == 0, pullUp != NULL, false); ConfigurationManager::applyGPIO(); } else if (gpio) { // gpio disabled (not configured) ConfigurationManager::setGPIOParams(strtol(gpio, NULL, 10), false, false, false, false); } } HTTPHelperConfiguration::GPIOSetValue(this); LinkedCharChunks* linkedChunks = addParamCharChunks(FSTR("GPIOS")); for (uint32_t i = 0; i != 16; ++i) { if (i != 1 && i != 3 && (i < 6 || i > 11)) { bool configured, isOutput, pullUp, value; ConfigurationManager::getGPIOParams(i, &configured, &isOutput, &pullUp, &value); linkedChunks->addChunk(f_printf(FSTR("<tr> <td>%d</td> <td><form method='POST'>"), i), true); linkedChunks->addChunk(f_printf(FSTR("Enabled <input type='checkbox' name='configured' value='1' onclick=\"document.getElementById('GPIO%d').disabled=!this.checked\" %s>"), i, configured? STR_checked:STR_), true); linkedChunks->addChunk(f_printf(FSTR("<fieldset class='inline' id='GPIO%d' %s>"), i, configured? STR_:STR_disabled), true); linkedChunks->addChunk(f_printf(FSTR("<select name='mode'><option value='in' %s>IN</option><option value='out' %s>OUT</option></select>"), isOutput? STR_:STR_selected, isOutput? STR_selected:STR_), true); linkedChunks->addChunk(f_printf(FSTR(" PullUp <input type='checkbox' name='pullup' value='1' %s> </fieldset>"), pullUp? STR_checked:STR_), true); linkedChunks->addChunk(f_printf(FSTR("<input type='hidden' name='GPIO' value='%d'>"), i), true); linkedChunks->addChunk(FSTR("<input type='submit' value='Save'></form></td>")); if (configured) { if (isOutput) { linkedChunks->addChunk(f_printf(FSTR("<td><a href='confgpio?gpio=%d&val=%d&store=1' class='link_button2'>%s</a></td> </tr>"), i, !value, value? STR_HI:STR_LO), true); } else { linkedChunks->addChunk(f_printf(FSTR("<td>%s</td> </tr>"), GPIO(i).read()? STR_HI:STR_LO), true); } } else { linkedChunks->addChunk(FSTR("<td></td></tr>")); } } } HTTPTemplateResponse::flush(); }
void MTD_FLASHMEM HTTPTemplateResponse::addParamFmt(char const *key, char const *fmt, ...) { va_list args; va_start(args, fmt); uint16_t len = vsprintf(NULL, fmt, args); va_end(args); char *buf = new char[len + 1]; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); LinkedCharChunks *linkedCharChunks = m_params.add(key); linkedCharChunks->addChunk(buf, len, true); // true = need to free }
void MTD_FLASHMEM HTTPTemplateResponse::addParamInt(char const* key, int32_t value) { char* valueStr = f_printf(FSTR("%d"), value); LinkedCharChunks* linkedCharChunks = m_params.add(key); linkedCharChunks->addChunk(valueStr, f_strlen(valueStr), true); // true = need to free }
void MTD_FLASHMEM HTTPTemplateResponse::addParamStr(char const* key, char const* value) { LinkedCharChunks* linkedCharChunks = m_params.add(key); linkedCharChunks->addChunk(value); }
void MTD_FLASHMEM HTTPTemplateResponse::addParamStr(char const* key, char const* value) { LinkedCharChunks linkedCharChunks; linkedCharChunks.addChunk(value, f_strlen(value), false); m_params.add(key, linkedCharChunks); }