int main(void) { configure_teensy(); configure_LEDs(); configure_usb(); int16_t lastcmd = '\0', cmd = '\0'; while (1) { wait_for_usb_connection(); while (1) { cmd = usb_serial_getchar(); if(is_valid_control_key(cmd)) { if(cmd == '+') adjust_speed(-10); // Speed up == less time. else if(cmd == '-') adjust_speed(10); } if( is_valid_cmd(cmd) ) { lastcmd = cmd; } if(lastcmd == 'k') knight_rider(); else if(lastcmd == 's') step(); else if(lastcmd == 'f') follow(); else if(lastcmd == '0') nop(); else demo(); } } }
void execute_shell(SystemMem *SysMem_s) { char inputBuffer[MAX_INPUT_LENGTH]; // Taille max d'une commande saisie par l'utilisateur InputCmd InputCmd_s; // Struct de la commande saisie fflush(stdin); // DEBUG #ifdef DEBUG char count_str[MAX_INPUT_LENGTH]; char time_str[1000]; int count = 1; time_t starttime; starttime = time(NULL); #endif // Demande une commande à l'utilisateur while (fgets(inputBuffer, MAX_INPUT_LENGTH, stdin)) { // Récupération de la commande et du path dans la chaîne saisie par l'utilisateur if (parse_input_data(inputBuffer, &InputCmd_s) == 0) { // Traite la commande de fin if (is_exit_cmd(InputCmd_s.cmdStr)) break; // Quit // Traite les commandes if (strcmp(InputCmd_s.cmdStr, "") != 0 && is_valid_cmd(InputCmd_s)) // strcmp permet une saisie vide execute_cmd(SysMem_s, &InputCmd_s); } #ifdef DEBUG sprintf(count_str, "%d", count); sprintf(time_str, "%ld", (time(NULL) - starttime)); fprintf(stderr, "DEBUG-> ("); fprintf(stderr, count_str); fprintf(stderr, ") CMD: ["); fprintf(stderr, InputCmd_s.cmdStr); fprintf(stderr, "] PATH: ["); fprintf(stderr, InputCmd_s.pathStr); fprintf(stderr, "] WRITESTR: ["); fprintf(stderr, InputCmd_s.dataStr); fprintf(stderr, "] @"); fprintf(stderr, time_str); fprintf(stderr, "secs\n"); count++; #endif strcpy(InputCmd_s.cmdStr, ""); // Reset strcpy(InputCmd_s.pathStr, ""); // Reset strcpy(InputCmd_s.dataStr, ""); // Reset } }
static ssize_t disable_store( struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { struct usb_notify_dev *udev = (struct usb_notify_dev *) dev_get_drvdata(dev); char *disable; int size_ret, param = -EINVAL; size_t ret = -ENOMEM; if (size > MAX_DISABLE_STR_LEN) { pr_err("%s size(%zu) is too long.\n", __func__, size); goto error; } disable = kzalloc(size+1, GFP_KERNEL); if (!disable) goto error; size_ret = sscanf(buf, "%s", disable); if (udev->set_disable) { param = is_valid_cmd(disable, udev->disable_state_cmd); if (param == -EINVAL) { ret = param; } else { if (param != -EEXIST) udev->set_disable(udev, param); memset(udev->disable_state_cmd, 0, sizeof(udev->disable_state_cmd)); strncpy(udev->disable_state_cmd, disable, strlen(disable)); ret = size; } } else pr_err("set_disable func is NULL\n"); kfree(disable); error: return ret; }
void handle_line(t_state *state, char *line) { char **cmds; int redirection_count; redirection_count = ft_wordcountwith_redirection(line, "<|>&"); if (redirection_count > 1) { if (!is_valid_cmd(state->pwd)) print_no_such_file_or_dir(state, state->shell_name, state->pwd); else if (check_if_valid_entry(state, line)) run_redirection(state, line); } else if (redirection_count == 1) { cmds = ft_strsplitwith_quote(line, " \t", 1); if (cmds && cmds[0]) handle_cmds(state, line, cmds); ft_strtabdel(&cmds); } }