101 replies.emplace_back(this->getCsvHelpstring());
103 std::string itfHelp =
"";
104 if(cmd.originalInterface){
105 itfHelp = cmd.originalInterface->getHelpstring() +
"\n";
107 std::string reply = itfHelp +
"Available classes (use cls.0.help for more info):\n";
111 reply += std::string(
info->clsname) +
"." + std::to_string(
info->instance)+
"\n";
113 reply +=
"\n"+this->getCommandsHelpstring();
114 replies.emplace_back(reply);
122 handler->saveFlash();
139 replies.emplace_back(
getIntV());
148 replies.emplace_back(
getExtV());
157 replies.emplace_back(buf);
160 Flash_Write(ADR_CURRENT_CONFIG, (uint16_t)cmd.val);
170 replyErrors(replies);
174 replyFlashDump(replies);
189 replies.push_back(reply);
207 replies.push_back(reply);
213 replies.emplace_back(HW_TYPE,HW_TYPE_INT);
219 replies.emplace_back(HAL_GetDEVID(),HAL_GetREVID());
230 reply.
reply +=
"Usage: ";
231 reply.
reply += std::to_string(
info.uordblks);
232 reply.
reply +=
" Size: ";
233 reply.
reply +=std::to_string(
info.arena);
235 replies.push_back(reply);
241 replies.emplace_back(xPortGetFreeHeapSize(),xPortGetMinimumEverFreeHeapSize());
244#if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
248 repl.resize(uxTaskGetNumberOfTasks()*64,
'\0');
249 vTaskGetRunTimeStats(repl.data());
250 repl.resize(repl.find_first_of(
'\0'));
251 replies.emplace_back(
"\n"+(repl));
255#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
259 repl.resize(uxTaskGetNumberOfTasks()*64,
'\0');
260 vTaskList(repl.data());
261 repl.resize(repl.find_first_of(
'\0'));
262 replies.emplace_back(
"\n"+(repl));
277 replies.push_back(reply);
296 replies.emplace_back((uint64_t)HAL_GetUIDw0() | (uint64_t)HAL_GetUIDw1() << 32,HAL_GetUIDw2());
299 replies.emplace_back(HAL_GetUIDw0());
300 }
else if(cmd.adr == 1){
301 replies.emplace_back(HAL_GetUIDw1());
302 }
else if(cmd.adr == 2){
303 replies.emplace_back(HAL_GetUIDw2());
307 std::snprintf(buf,32,
"0x%08lx%08lx%08lx",HAL_GetUIDw2(),HAL_GetUIDw1(),HAL_GetUIDw0());
308 replies.emplace_back(std::string(buf));
316#if defined(OTPMEMORY)
319 bool success =
OTP_Write(cmd.adr, cmd.val);
332 replies.push_back(reply);
336#if defined(SIGNATURE)
338#if defined(SIGNATURELEN) && defined(SIGBNATUREBASEADR)
340 char buf[(SIGNATURELEN * 16) + 1];
342 for(uint8_t i = 0;i<SIGNATURELEN;i++){
343 OTP_Read(SIGBNATUREBASEADR+i, &dat);
344 std::snprintf(buf+i*16,17,
"%016llx",dat);
346 replies.emplace_back(std::string(buf));
348 for(uint8_t i = 0;i<SIGNATURELEN;i++){
350 OTP_Read(SIGBNATUREBASEADR+i, &dat);
351 replies.emplace_back(dat,i);
354 if(cmd.adr >= SIGNATURELEN || cmd.adr < 0){
358 OTP_Read(SIGBNATUREBASEADR+cmd.adr, &dat);
359 replies.emplace_back(dat,cmd.adr);
362 bool success =
OTP_Write(cmd.adr+SIGBNATUREBASEADR, cmd.val);
371 replies.emplace_back(
"0");
373 replies.emplace_back(0);
ClassChooser< FFBoardMain > mainchooser(class_registry)