bool __plugin_setting_dataxserver(void *class_ptr, char *method_name, void *input_pack) { uint8_t *arg_ptr = (uint8_t *)input_pack; char *ip; bool res = true; memcpy(&ip, arg_ptr, sizeof(char *)); arg_ptr += sizeof(char *); Serial1.printf("%s\r\n", ip); if (extract_ip(ip, EEPROM.getDataPtr() + EEP_DATA_SERVER_IP)) { memcpy(EEPROM.getDataPtr() + EEP_DATA_SERVER_ADDR, ip, strlen(ip)); memset(EEPROM.getDataPtr() + EEP_DATA_SERVER_ADDR + strlen(ip) , 0, 1); EEPROM.commit(); stream_print(STREAM_CMD, TYPE_STRING, "\"ok\""); response_msg_close(STREAM_CMD); delay(100); fire_reboot(NULL); } else { stream_print(STREAM_CMD, TYPE_STRING, "\"failed, bad ip format.\""); return false; } return true; }
/** for data xchange channel */ bool __plugin_pm_sleep(void *class_ptr, char *method_name, void *input_pack) { uint8_t *arg_ptr = (uint8_t *)input_pack; uint32_t sec; memcpy(&sec, arg_ptr, sizeof(uint32_t)); arg_ptr += sizeof(uint32_t); Serial1.printf("deep sleep %lu sec\r\n", sec); writer_print(TYPE_STRING, "\"ok, deep sleep\""); response_msg_close(STREAM_DATA); delay(100); //turn off grove's power digitalWrite(SWITCH_GROVE_POWER, 0); system_deep_sleep(sec * 1000000); return true; }