98 replies.emplace_back(this->getCsvHelpstring());
100 std::string itfHelp =
"";
101 if(cmd.originalInterface){
102 itfHelp = cmd.originalInterface->getHelpstring() +
"\n";
104 std::string reply = itfHelp +
"Available classes (use cls.0.help for more info):\n";
108 reply += std::string(
info->clsname) +
"." + std::to_string(
info->instance)+
"\n";
110 reply +=
"\n"+this->getCommandsHelpstring();
111 replies.emplace_back(reply);
119 handler->saveFlash();
136 replies.emplace_back(
getIntV());
145 replies.emplace_back(
getExtV());
154 replies.emplace_back(buf);
157 Flash_Write(ADR_CURRENT_CONFIG, (uint16_t)cmd.val);
167 replyErrors(replies);
171 replyFlashDump(replies);
186 replies.push_back(reply);
204 replies.push_back(reply);
210 replies.emplace_back(HW_TYPE,HW_TYPE_INT);
216 replies.emplace_back(HAL_GetDEVID(),HAL_GetREVID());
227 reply.
reply +=
"Usage: ";
228 reply.
reply += std::to_string(
info.uordblks);
229 reply.
reply +=
" Size: ";
230 reply.
reply +=std::to_string(
info.arena);
232 replies.push_back(reply);
238 replies.emplace_back(xPortGetFreeHeapSize(),xPortGetMinimumEverFreeHeapSize());
241#if configUSE_STATS_FORMATTING_FUNCTIONS>0
245 vTaskGetRunTimeStats(repl);
246 replies.emplace_back(
"\n"+std::string(repl));
261 replies.push_back(reply);
279 replies.emplace_back((uint64_t)HAL_GetUIDw0() | (uint64_t)HAL_GetUIDw1() << 32,HAL_GetUIDw2());
282 replies.emplace_back(HAL_GetUIDw0());
283 }
else if(cmd.adr == 1){
284 replies.emplace_back(HAL_GetUIDw1());
285 }
else if(cmd.adr == 2){
286 replies.emplace_back(HAL_GetUIDw2());
290 std::snprintf(buf,32,
"0x%08lx%08lx%08lx",HAL_GetUIDw2(),HAL_GetUIDw1(),HAL_GetUIDw0());
291 replies.emplace_back(std::string(buf));
299#if defined(OTPMEMORY)
302 bool success =
OTP_Write(cmd.adr, cmd.val);
315 replies.push_back(reply);
319#if defined(SIGNATURE)
321#if defined(SIGNATURELEN) && defined(SIGBNATUREBASEADR)
323 char buf[(SIGNATURELEN * 16) + 1];
325 for(uint8_t i = 0;i<SIGNATURELEN;i++){
326 OTP_Read(SIGBNATUREBASEADR+i, &dat);
327 std::snprintf(buf+i*16,17,
"%016llx",dat);
329 replies.emplace_back(std::string(buf));
331 for(uint8_t i = 0;i<SIGNATURELEN;i++){
333 OTP_Read(SIGBNATUREBASEADR+i, &dat);
334 replies.emplace_back(dat,i);
337 if(cmd.adr >= SIGNATURELEN || cmd.adr < 0){
341 OTP_Read(SIGBNATUREBASEADR+cmd.adr, &dat);
342 replies.emplace_back(dat,cmd.adr);
345 bool success =
OTP_Write(cmd.adr+SIGBNATUREBASEADR, cmd.val);
354 replies.emplace_back(
"0");
356 replies.emplace_back(0);
ClassChooser< FFBoardMain > mainchooser(class_registry)