static void simulate_test_sequence(hfp_test_item_t * test_item){ char ** test_steps = test_item->test; printf("\nSimulate test sequence: \"%s\"\n", test_item->name); int i = 0; static char * previous_cmd = NULL; int previous_step = -1; while ( i < test_item->len){ previous_step++; CHECK_EQUAL(i >= previous_step, 1); char * expected_cmd = test_steps[i]; int expected_cmd_len = strlen(expected_cmd); printf("\nStep %d, %s \n", i, expected_cmd); if (strncmp(expected_cmd, "USER:"******"\n---> USER: "******"AT", 2) == 0){ // printf("\n---> NEXT STEP receive from HF: '%s'\n", expected_cmd); inject_hfp_command_to_ag((uint8_t*)expected_cmd, expected_cmd_len); i++; } else { printf("\n---> NEXT STEP expect from AG: %s\n", expected_cmd); while (has_more_hfp_ag_commands()){ char * ag_cmd = get_next_hfp_ag_command(); int equal_cmds = strncmp(ag_cmd, expected_cmd, expected_cmd_len) == 0; if (!equal_cmds){ printf("\nError: Expected:'%s', but got:'%s'\n", expected_cmd, ag_cmd); CHECK_EQUAL(equal_cmds,1); return; } printf("Verified: '%s'\n", expected_cmd); previous_cmd = ag_cmd; i++; if (i < test_item->len){ expected_cmd = test_steps[i]; expected_cmd_len = strlen(expected_cmd); } } // printf("\n---> NEXT STEP trigger once more AG\n"); inject_hfp_command_to_ag((uint8_t*)"NOP",3); } } }
// Return a title for NAME string DispValue::make_title(const string& name) { if (!is_user_command(name)) return name; string title = user_command(name); if (title.contains(CLUSTER_COMMAND " ", 0)) return title.after(CLUSTER_COMMAND " "); if (title.contains("graph ", 0)) title = title.after("graph "); else if (title.contains("info ", 0)) title = title.after("info "); else if (title.contains(" ")) title = title.before(" "); if (title.length() > 0) title = toupper(title[0]) + title.after(0); return title; }
void user_receive(t_who *group, t_who *user) { int response; char str[1024]; (void)group; ft_bzero(str, 1024); response = recv(user->fd, str, BUF_SIZE, 0); ft_strcat(user->buffer, str); if (response && ft_strchr(user->buffer, '\n') != NULL) { if (user->buffer[0] == '/') user_command(group, user); else send_channel(group, user); ft_bzero(user->buffer, sizeof(user->buffer)); } else if (response == 0) { sprintf(str, MSG_USER_QUIT, user->user.name); close_connection(user); send_broadcast(group, str); } }
bool command_executor::execute_command(const hotkey_command& cmd, int /*index*/, bool press) { // hotkey release handling if (!press) { switch(cmd.id) { // release a scroll key, un-apply scrolling in the given direction case HOTKEY_SCROLL_UP: scroll_up(false); break; case HOTKEY_SCROLL_DOWN: scroll_down(false); break; case HOTKEY_SCROLL_LEFT: scroll_left(false); break; case HOTKEY_SCROLL_RIGHT: scroll_right(false); break; default: return false; // nothing else handles a hotkey release } return true; } // hotkey press handling switch(cmd.id) { case HOTKEY_SCROLL_UP: scroll_up(true); break; case HOTKEY_SCROLL_DOWN: scroll_down(true); break; case HOTKEY_SCROLL_LEFT: scroll_left(true); break; case HOTKEY_SCROLL_RIGHT: scroll_right(true); break; case HOTKEY_CYCLE_UNITS: cycle_units(); break; case HOTKEY_CYCLE_BACK_UNITS: cycle_back_units(); break; case HOTKEY_ENDTURN: end_turn(); break; case HOTKEY_UNIT_HOLD_POSITION: unit_hold_position(); break; case HOTKEY_END_UNIT_TURN: end_unit_turn(); break; case HOTKEY_LEADER: goto_leader(); break; case HOTKEY_UNDO: undo(); break; case HOTKEY_REDO: redo(); break; case HOTKEY_TERRAIN_DESCRIPTION: terrain_description(); break; case HOTKEY_UNIT_DESCRIPTION: unit_description(); break; case HOTKEY_RENAME_UNIT: rename_unit(); break; case HOTKEY_SAVE_GAME: save_game(); break; case HOTKEY_SAVE_REPLAY: save_replay(); break; case HOTKEY_SAVE_MAP: save_map(); break; case HOTKEY_LOAD_GAME: load_game(); break; case HOTKEY_TOGGLE_ELLIPSES: toggle_ellipses(); break; case HOTKEY_TOGGLE_GRID: toggle_grid(); break; case HOTKEY_STATUS_TABLE: status_table(); break; case HOTKEY_RECALL: recall(); break; case HOTKEY_LABEL_SETTINGS: label_settings(); break; case HOTKEY_RECRUIT: recruit(); break; case hotkey::HOTKEY_REPEAT_RECRUIT: repeat_recruit(); break; case HOTKEY_SPEAK: speak(); break; case HOTKEY_SPEAK_ALLY: whisper(); break; case HOTKEY_SPEAK_ALL: shout(); break; case HOTKEY_CREATE_UNIT: create_unit(); break; case HOTKEY_CHANGE_SIDE: change_side(); break; case HOTKEY_KILL_UNIT: kill_unit(); break; case HOTKEY_PREFERENCES: preferences(); break; case HOTKEY_OBJECTIVES: objectives(); break; case HOTKEY_UNIT_LIST: unit_list(); break; case HOTKEY_STATISTICS: show_statistics(); break; case HOTKEY_STOP_NETWORK: stop_network(); break; case HOTKEY_START_NETWORK: start_network(); break; case HOTKEY_LABEL_TEAM_TERRAIN: label_terrain(true); break; case HOTKEY_LABEL_TERRAIN: label_terrain(false); break; case HOTKEY_CLEAR_LABELS: clear_labels(); break; case HOTKEY_SHOW_ENEMY_MOVES: show_enemy_moves(false); break; case HOTKEY_BEST_ENEMY_MOVES: show_enemy_moves(true); break; case HOTKEY_DELAY_SHROUD: toggle_shroud_updates(); break; case HOTKEY_UPDATE_SHROUD: update_shroud_now(); break; case HOTKEY_CONTINUE_MOVE: continue_move(); break; case HOTKEY_SEARCH: search(); break; case HOTKEY_HELP: show_help(); break; case HOTKEY_CHAT_LOG: show_chat_log(); break; case HOTKEY_USER_CMD: user_command(); break; case HOTKEY_CUSTOM_CMD: custom_command(); break; case HOTKEY_AI_FORMULA: ai_formula(); break; case HOTKEY_CLEAR_MSG: clear_messages(); break; case HOTKEY_LANGUAGE: change_language(); break; case HOTKEY_REPLAY_PLAY: play_replay(); break; case HOTKEY_REPLAY_RESET: reset_replay(); break; case HOTKEY_REPLAY_STOP: stop_replay(); break; case HOTKEY_REPLAY_NEXT_TURN: replay_next_turn(); break; case HOTKEY_REPLAY_NEXT_SIDE: replay_next_side(); break; case HOTKEY_REPLAY_NEXT_MOVE: replay_next_move(); break; case HOTKEY_REPLAY_SHOW_EVERYTHING: replay_show_everything(); break; case HOTKEY_REPLAY_SHOW_EACH: replay_show_each(); break; case HOTKEY_REPLAY_SHOW_TEAM1: replay_show_team1(); break; case HOTKEY_REPLAY_SKIP_ANIMATION: replay_skip_animation(); break; case HOTKEY_REPLAY_EXIT: replay_exit(); break; case HOTKEY_WB_TOGGLE: whiteboard_toggle(); break; case HOTKEY_WB_EXECUTE_ACTION: whiteboard_execute_action(); break; case HOTKEY_WB_EXECUTE_ALL_ACTIONS: whiteboard_execute_all_actions(); break; case HOTKEY_WB_DELETE_ACTION: whiteboard_delete_action(); break; case HOTKEY_WB_BUMP_UP_ACTION: whiteboard_bump_up_action(); break; case HOTKEY_WB_BUMP_DOWN_ACTION: whiteboard_bump_down_action(); break; case HOTKEY_WB_SUPPOSE_DEAD: whiteboard_suppose_dead(); break; case HOTKEY_SELECT_HEX: select_hex(); break; case HOTKEY_DESELECT_HEX: deselect_hex(); break; case HOTKEY_MOVE_ACTION: move_action(); break; case HOTKEY_SELECT_AND_ACTION: select_and_action(); break; case HOTKEY_ACCELERATED: toggle_accelerated_speed(); break; case LUA_CONSOLE: lua_console(); break; case HOTKEY_ZOOM_IN: zoom_in(); break; case HOTKEY_ZOOM_OUT: zoom_out(); break; case HOTKEY_ZOOM_DEFAULT: zoom_default(); break; case HOTKEY_MAP_SCREENSHOT: map_screenshot(); break; case HOTKEY_QUIT_TO_DESKTOP: quit_confirmation::quit_to_desktop(); break; case HOTKEY_QUIT_GAME: quit_confirmation::quit_to_title(); break; default: return false; } return true; }
void simulate_test_sequence(hfp_test_item_t * test_item){ char ** test_steps = test_item->test; printf("\nSimulate test sequence: \"%s\" [%d steps]\n", test_item->name, test_item->len); int i = 0; int previous_step = -1; while ( i < test_item->len){ previous_step++; CHECK_EQUAL(i >= previous_step, 1); char * expected_cmd = test_steps[i]; int expected_cmd_len = strlen(expected_cmd); printf("\nStep %d, %s \n", i, expected_cmd); if (strncmp(expected_cmd, "USER:"******"AT+BAC=", 7) == 0){ int parsed_codecs[2]; uint8_t new_codecs[2]; sscanf(&expected_cmd[7],"%d,%d", &parsed_codecs[0], &parsed_codecs[1]); new_codecs[0] = parsed_codecs[0]; new_codecs[1] = parsed_codecs[1]; hfp_hf_init_codecs(2, (uint8_t*)new_codecs); while (has_more_hfp_hf_commands()){ // empty rfcomm payload buffer get_next_hfp_hf_command(); } i++; } else if (strncmp(expected_cmd, "AT+BRSF=", 8) == 0 ){ int supported_features = 0; sscanf(&expected_cmd[8],"%d", &supported_features); printf("Call hfp_hf_init with SF %d\n", supported_features); hfp_hf_release_service_level_connection(device_addr); hfp_hf_init_supported_features(supported_features); user_command('a'); while (has_more_hfp_hf_commands()){ // empty rfcomm payload buffer get_next_hfp_hf_command(); } i++; } else if (strncmp(expected_cmd, "AT+BCC", 6) == 0){ user_command('b'); while (has_more_hfp_hf_commands()){ // empty rfcomm payload buffer get_next_hfp_hf_command(); } i++; } else if (strncmp(expected_cmd, "AT", 2) == 0){ printf("\n---> NEXT STEP expect from HF: %s\n", expected_cmd); while (has_more_hfp_hf_commands()){ char * ag_cmd = get_next_hfp_hf_command(); printf("HF response verify %s == %s[%d]\n", expected_cmd, ag_cmd, expected_cmd_len); int equal_cmds = strncmp(ag_cmd, expected_cmd, expected_cmd_len) == 0; if (!equal_cmds){ printf("\nError: Expected:'%s', but got:'%s'\n", expected_cmd, ag_cmd); CHECK_EQUAL(equal_cmds,1); return; } printf("Verified: '%s'\n", expected_cmd); i++; if (i < test_item->len){ expected_cmd = test_steps[i]; expected_cmd_len = strlen(expected_cmd); } } } else { //printf("\n---> NEXT STEP receive from AG: '%s'\n", expected_cmd); inject_hfp_command_to_hf((uint8_t*)expected_cmd, strlen(expected_cmd)); i++; } } }
bool command_executor::execute_command(HOTKEY_COMMAND command, int /*index*/) { switch(command) { case HOTKEY_CYCLE_UNITS: cycle_units(); break; case HOTKEY_CYCLE_BACK_UNITS: cycle_back_units(); break; case HOTKEY_ENDTURN: end_turn(); break; case HOTKEY_UNIT_HOLD_POSITION: unit_hold_position(); break; case HOTKEY_END_UNIT_TURN: end_unit_turn(); break; case HOTKEY_LEADER: goto_leader(); break; case HOTKEY_UNDO: undo(); break; case HOTKEY_REDO: redo(); break; case HOTKEY_UNIT_DESCRIPTION: unit_description(); break; case HOTKEY_RENAME_UNIT: rename_unit(); break; case HOTKEY_SAVE_GAME: save_game(); break; case HOTKEY_SAVE_REPLAY: save_replay(); break; case HOTKEY_SAVE_MAP: save_map(); break; case HOTKEY_LOAD_GAME: load_game(); break; case HOTKEY_TOGGLE_ELLIPSES: toggle_ellipses(); break; case HOTKEY_TOGGLE_GRID: toggle_grid(); break; case HOTKEY_STATUS_TABLE: status_table(); break; case HOTKEY_RECALL: recall(); break; case HOTKEY_RECRUIT: recruit(); break; case hotkey::HOTKEY_REPEAT_RECRUIT: repeat_recruit(); break; case HOTKEY_SPEAK: speak(); break; case HOTKEY_SPEAK_ALLY: whisper(); break; case HOTKEY_SPEAK_ALL: shout(); break; case HOTKEY_CREATE_UNIT: create_unit(); break; case HOTKEY_CHANGE_SIDE: change_side(); break; case HOTKEY_PREFERENCES: preferences(); break; case HOTKEY_OBJECTIVES: objectives(); break; case HOTKEY_UNIT_LIST: unit_list(); break; case HOTKEY_STATISTICS: show_statistics(); break; case HOTKEY_STOP_NETWORK: stop_network(); break; case HOTKEY_START_NETWORK: start_network(); break; case HOTKEY_LABEL_TEAM_TERRAIN: label_terrain(true); break; case HOTKEY_LABEL_TERRAIN: label_terrain(false); break; case HOTKEY_CLEAR_LABELS: clear_labels(); break; case HOTKEY_SHOW_ENEMY_MOVES: show_enemy_moves(false); break; case HOTKEY_BEST_ENEMY_MOVES: show_enemy_moves(true); break; case HOTKEY_DELAY_SHROUD: toggle_shroud_updates(); break; case HOTKEY_UPDATE_SHROUD: update_shroud_now(); break; case HOTKEY_CONTINUE_MOVE: continue_move(); break; case HOTKEY_SEARCH: search(); break; case HOTKEY_HELP: show_help(); break; case HOTKEY_CHAT_LOG: show_chat_log(); break; case HOTKEY_USER_CMD: user_command(); break; case HOTKEY_CUSTOM_CMD: custom_command(); break; case HOTKEY_AI_FORMULA: ai_formula(); break; case HOTKEY_CLEAR_MSG: clear_messages(); break; case HOTKEY_LANGUAGE: change_language(); break; case HOTKEY_PLAY_REPLAY: play_replay(); break; case HOTKEY_RESET_REPLAY: reset_replay(); break; case HOTKEY_STOP_REPLAY: stop_replay(); break; case HOTKEY_REPLAY_NEXT_TURN: replay_next_turn(); break; case HOTKEY_REPLAY_NEXT_SIDE: replay_next_side(); break; case HOTKEY_REPLAY_SHOW_EVERYTHING: replay_show_everything(); break; case HOTKEY_REPLAY_SHOW_EACH: replay_show_each(); break; case HOTKEY_REPLAY_SHOW_TEAM1: replay_show_team1(); break; case HOTKEY_REPLAY_SKIP_ANIMATION: replay_skip_animation(); break; case HOTKEY_WB_TOGGLE: whiteboard_toggle(); break; case HOTKEY_WB_EXECUTE_ACTION: whiteboard_execute_action(); break; case HOTKEY_WB_EXECUTE_ALL_ACTIONS: whiteboard_execute_all_actions(); break; case HOTKEY_WB_DELETE_ACTION: whiteboard_delete_action(); break; case HOTKEY_WB_BUMP_UP_ACTION: whiteboard_bump_up_action(); break; case HOTKEY_WB_BUMP_DOWN_ACTION: whiteboard_bump_down_action(); break; case HOTKEY_WB_SUPPOSE_DEAD: whiteboard_suppose_dead(); break; case HOTKEY_LEFT_MOUSE_CLICK: left_mouse_click(); break; case HOTKEY_RIGHT_MOUSE_CLICK: right_mouse_click(); break; default: return false; } return true; }
void request_check(int index, char* buf){ char tokens[MAX_MSG_TOKENS][MAX_MSG_LEN+1]; int arg_num = tokenize(buf,tokens); int type,connfd; connfd = p.clientfd[index]; if (!strcmp(tokens[0],"USER")) type = USER_CMD; else if(!strcmp(tokens[0],"NICK")) type = NICK_CMD; else if(!strcmp(tokens[0],"JOIN")) type = JOIN_CMD; else if(!strcmp(tokens[0],"QUIT")) type = QUIT_CMD; else if(!strcmp(tokens[0],"PART")) type = PART_CMD; else if(!strcmp(tokens[0],"LIST")) type = LIST_CMD; else if(!strcmp(tokens[0],"WHO")) type = WHO_CMD; else if(!strcmp(tokens[0],"PRIVMSG")) type = PRIVMSG_CMD; else type = UNKONWN_CMD; //DEBUG int i; printf(" # CMD:%s\t ARG_NUM:%d\t",tokens[0],arg_num); for(i=0;i<4;i++) printf(" ARG%d:%s\t",i,tokens[i+1]); printf("\n"); if(type == UNKONWN_CMD) unknown_command(connfd,tokens[0]); else if(arg_num < ARG_NUM[type]){ char msg[MAX_MSG_LEN]; if(type == NICK_CMD) /* NICK ERRRO TYPE: ERR_NOERR_NONICKNAMEGIVEN */ snprintf(msg,MAX_MSG_LEN,":No nickname given\n"); else if(type == PRIVMSG_CMD){ /* PRIVMSG ERRRO TYPE: ERR_NORECIPIENT */ if(!arg_num) snprintf(msg,MAX_MSG_LEN,":No recipient given PRIVMSG\n"); /* PRIVMSG ERRRO TYPE: ERR_NOTEXTTOSEND */ else snprintf(msg,MAX_MSG_LEN,":No text to send\n"); }else snprintf(msg,MAX_MSG_LEN,"%s:Not enough parameters\n", tokens[0]); send_msg_back(connfd,msg); } else switch(type){ case QUIT_CMD: quit_command(index); break; case USER_CMD: user_command(connfd,tokens[1],tokens[4]); break; case NICK_CMD: nick_command(connfd,tokens[1]); break; default: if(check_register(connfd)){ switch(type){ case JOIN_CMD: join_command(connfd,tokens[1]); break; case PART_CMD: part_command(connfd,tokens[1],1); break; case LIST_CMD: list_command(connfd); break; case WHO_CMD: who_command(connfd,tokens[1]); break; case PRIVMSG_CMD: privmsg_command(connfd,tokens[1],tokens[2]); } }else send_msg_back(connfd,":You have not registered\n"); } }