gboolean cli_current (cli_context_t *ctx, command_t *cmd) { status_entry_t *status; const gchar *format; gint refresh; if (!command_flag_int_get (cmd, "refresh", &refresh)) { refresh = 0; } if (!command_flag_string_get (cmd, "format", &format)) { configuration_t *config = cli_context_config (ctx); format = configuration_get_string (config, "STATUS_FORMAT"); } status = currently_playing_init (ctx, format, refresh); if (refresh > 0) { cli_context_status_mode (ctx, status); } else { status_refresh (status, TRUE, TRUE); status_free (status); } return refresh != 0; /* need I/O if we are refreshing */ }
void cli_context_status_mode (cli_context_t *ctx, status_entry_t *entry) { ctx->status = CLI_ACTION_STATUS_REFRESH; ctx->status_entry = entry; readline_status_mode (ctx, status_get_keymap (entry)); status_refresh (entry, TRUE, FALSE); }
void cli_infos_status_mode (cli_infos_t *infos, status_entry_t *entry) { infos->status = CLI_ACTION_STATUS_REFRESH; infos->status_entry = entry; readline_status_mode (infos, status_get_keymap (entry)); status_refresh (infos, entry, TRUE, FALSE); }
/* Called on server disconnection. We can keep the loop running. */ static gint cli_context_disconnect_callback (xmmsv_t *val, void *userdata) { cli_context_t *ctx = (cli_context_t *) userdata; xmmsc_unref (ctx->conn); xmmsc_unref (ctx->sync); ctx->conn = NULL; ctx->sync = NULL; if (ctx->status == CLI_ACTION_STATUS_REFRESH) { status_refresh (ctx->status_entry, FALSE, TRUE); readline_status_mode_exit (); } cli_context_loop_resume (ctx); return TRUE; }
/* Called on server disconnection. We can keep the loop running. */ static gint cli_infos_disconnect_callback (xmmsv_t *val, void *userdata) { cli_infos_t *infos = (cli_infos_t *) userdata; xmmsc_unref (infos->conn); xmmsc_unref (infos->sync); infos->conn = NULL; infos->sync = NULL; if (infos->status == CLI_ACTION_STATUS_REFRESH) { status_refresh (infos, infos->status_entry, FALSE, TRUE); readline_status_mode_exit (); } cli_infos_loop_resume (infos); return TRUE; }
int eraseImg_Cmd(char **argv,unsigned short argc){ int ret; //erase data from SD card ret=mmcErase(IMG_ADDR_START,IMG_ADDR_END); //check return value if(ret==MMC_SUCCESS){ //clear imager variables writePic = 0; picNum=0; //print message printf("Picture data erased\r\n"); //refresh status info status_refresh(); }else{ //print error printf("Error erase failed %s\r\n",SD_error_str(ret)); } return 0; }
void cli_context_refresh_status (cli_context_t *ctx) { status_refresh (ctx->status_entry, FALSE, FALSE); }
static void loop_select (cli_infos_t *infos) { fd_set rfds, wfds; gint modfds; gint xmms2fd; gint maxfds = 0; FD_ZERO(&rfds); FD_ZERO(&wfds); /* Listen to xmms2 if connected */ if (infos->conn) { xmms2fd = xmmsc_io_fd_get (infos->conn); if (xmms2fd == -1) { g_printf (_("Error: failed to retrieve XMMS2 file descriptor!")); return; } FD_SET(xmms2fd, &rfds); if (xmmsc_io_want_out (infos->conn)) { FD_SET(xmms2fd, &wfds); } if (maxfds < xmms2fd) { maxfds = xmms2fd; } } /* Listen to readline in shell mode or status mode */ if ((infos->mode == CLI_EXECUTION_MODE_SHELL && infos->status == CLI_ACTION_STATUS_READY) || infos->status == CLI_ACTION_STATUS_REFRESH) { FD_SET(STDINFD, &rfds); if (maxfds < STDINFD) { maxfds = STDINFD; } } if (infos->status == CLI_ACTION_STATUS_REFRESH) { struct timeval refresh; refresh.tv_sec = status_get_refresh_interval (infos->status_entry); refresh.tv_usec = 0; modfds = select (maxfds + 1, &rfds, &wfds, NULL, &refresh); } else { modfds = select (maxfds + 1, &rfds, &wfds, NULL, NULL); } if (modfds < 0 && errno != EINTR) { g_printf (_("Error: invalid I/O result!")); return; } else if (modfds != 0) { /* Get/send data to xmms2 */ if (infos->conn) { if (FD_ISSET(xmms2fd, &rfds) && !xmmsc_io_in_handle (infos->conn)) { return; } if (FD_ISSET(xmms2fd, &wfds) && !xmmsc_io_out_handle (infos->conn)) { return; } } /* User input found, read it */ if ((infos->mode == CLI_EXECUTION_MODE_SHELL || infos->status == CLI_ACTION_STATUS_REFRESH) && FD_ISSET(STDINFD, &rfds)) { rl_callback_read_char (); } } /* Status -refresh Ask theefer: use callbacks for update and -refresh only for print? Nesciens: Yes, please! */ if (infos->status == CLI_ACTION_STATUS_REFRESH) { status_refresh (infos, infos->status_entry, FALSE, FALSE); } }