Beispiel #1
0
int main()
{
	int is_quit=0;
	/*程序主循环*/
	while(!is_quit)
	{
		int choice;
		char* retstr;
		print_main_menu();
		printf("选择[0~8]:");
		retstr=fgets(keybuf,MAX_KEY_BUF,stdin);
		choice=atoi(keybuf);
		/*根据选择执行相应功能*/
		switch(choice)
		{
			/*退出*/
			case 0:
				is_quit=1;
				break;
			case 1:
				print_date();
				if(0==query_user("进行修改?",q_opt,Q_OPT_NUM,1))
					modify_date();
				break;
			case 2:
				print_time();
				if(0==query_user("进行修改?",q_opt,Q_OPT_NUM,1))
					modify_time();
				break;
			case 3:
				print_alarm();	
				if(0==query_user("进行修改?",q_opt,Q_OPT_NUM,1))
					modify_alarm();
				break;
			case 4:
				print_cmos_content();
				if(0==query_user("进行修改?",q_opt,Q_OPT_NUM,1))
					modify_cmos_content();
				break;
			case 5:
				backup_cmos();
				break;
			case 6:
				restore_cmos();
				break;
			default:
				is_quit=0;
		}

	}
	
	return EXIT_SUCCESS;
}
Beispiel #2
0
/*
  Validate that user made the right menu choice.
 */
int main_menu(void)
{
	int sel;
	char sel_s[3];

	print_main_menu();
	gets(sel_s);
	sel = atoi(sel_s);
	if (sel < FILE_SEL || sel > EXIT_SEL)
    {
		while (1)
        {
			clear_screen();
			printf("Incorrect selection. Please enter one of these choices: ");
			print_main_menu();
			gets(sel_s);
			sel = atoi(sel_s);
			if (!(sel < FILE_SEL || sel > EXIT_SEL)) break;
		}
	}
	return sel;
}
Beispiel #3
0
void run_menu(){
    
    
    //Selection Loop For the Main Menu
    
    int input = 0;
    
    do{
        print_main_menu();
        cout << "Menu Input: ";
        cin >> input;
        
        
        if(input == 1){
            player_data_menu();
        }
        else if(input == 2){
            player_quiz_menu();
        }
        else if(input == 3){
            //Status Display Menu
            stat_display_menu();
        }
        else if(input == 4){
            //Scenario Menu
            scenario_run_menu();
        }
        else if(input == 5){
            //Minigame Menu
             cout << "\n!!!!!Unimplemented!!!!!" << endl;
        }
        
        
        
    }while(input != 6);
    
    
}
Beispiel #4
0
void main_menu()
{
 
  bool cont = false;
  root* root = create_new_root();
  /* 
  char* test = strdup("Hoppsanhejsna");
  free(test);
  printf("test: %s", test); */ // hur kan detta fungera??
  
  insert_new_ware(Warehouse, "Gurka", "grön", 11, "A11", 11);
  insert_new_ware(Warehouse, "Lampa", "skäggig", 1, "K8", 1);
  insert_new_ware(Warehouse, "Häst", "fulsfdkj", 34, "K5", 1);
  insert_new_ware(Warehouse, "Lars", "grön", 2, "F2", 1);
  insert_new_ware(Warehouse, "Berg", "högt", 10000, "G34", 3);
  insert_new_ware(Warehouse, "Igelkott", "högt", 10000, "G33", 3);
  insert_new_ware(Warehouse, "Danne", "skäggig", 1, "E2", 1);
  insert_new_ware(Warehouse, "Gös", "skäggig", 1, "E3", 1);
  insert_new_ware(Warehouse, "Apa", "skäggig", 1, "E4", 1);
  insert_new_ware(Warehouse, "Iller", "skäggig", 1, "K7", 1);
  insert_new_ware(Warehouse, "Hej hej", "skäggig", 1, "K9", 1);
 
  node* gurka = find_node(Top(Warehouse), "Gurka");
  add_shelf(gurka, "A5", 5);
  add_shelf(gurka, "A3", 3);
  add_shelf(gurka, "A6", 6);
  add_shelf(gurka, "A4", 4);
  add_shelf(gurka, "A5", 5);
  add_shelf(gurka, "A2", 2);
  add_shelf(gurka, "A5", 5);
   
  /* 
  puts("shelves");
  print_shelf_names(gurka, WithoutNumbers);
  print_line();
  gurka = remove_amount(gurka, 11);
  print_shelf_names(gurka, WithoutNumbers);
  print_line(); 
  
  puts("Warehouse now");
  printWarehouse();

  puts("removes");
  remove_node(root, find_node(Top(Warehouse), "Häst"));
  puts("removed");
  puts("New Warehouse");
  printWarehouse();
  print_line();
  */
 
  while (!cont)
    {
      print_main_menu();

      int answer = ask_int_q("\nWhat would you like to do?", 0, 5);

      switch (answer)
	{
	case 1: add_ware_IO(root);
	  break;

	case 2: remove_item_IO(root);
	  break;

	case 3: edit_item_IO(root);
	  break;

	case 4: show_warehouse_IO(root, Warehouse);
	  break;

	case 5: add_item_to_cart_IO(root);
	  break;

	case 0: cont = exit_warehouse();
	  break;
	  
	default: puts ("defaaaaauuuuuult");	    
	}
    }
  destroy_all(root);
}
Beispiel #5
0
/**
 * @brief Handle keyboard input
 *
 * @param input_char       character typed from input device.
 */
static void handle_input(uint8_t input_char)
{
	/* We allow user input if we are either in IDLE state ot POWER_SAVE
	 * state
	 * In case of POWER_SAVE state, we allow only reset & disabling
	 * POWER_SAVE req*/
	if (((node_status != IDLE) && (node_status != POWER_SAVE)) ||
			((node_status == POWER_SAVE) &&
			(!((input_char == 'Y') || (input_char == 'R') ||
			(input_char == 'A') || (input_char == 'W') ||
			(input_char == 0x0D))))) {
		printf(
				"Node is in power save mode.Press (R) to Reset/Press (Y) to Disable power save mode.\r\n");
		return;
	}

	switch (input_char) {
	case 'Y':
		if (node_status == POWER_SAVE) {
			printf(
					"Leaving standby (power save mode). Press Enter to return to main menu.\r\n ");
			nlme_rx_enable_request(RX_DURATION_INFINITY,
					(FUNC_PTR)nlme_rx_enable_confirm
					);
			node_status = IDLE;
		} else {
			printf(
					"Entering standby (power save mode). Press Enter to return to main menu.\r\n ");
			nlme_rx_enable_request(nwkcMinActivePeriod,
					(FUNC_PTR)nlme_rx_enable_confirm
					);
			node_status = POWER_SAVE;
		}

		break;

	case 'R':
		printf("Reset node - \r\n");
		node_status = RESETTING;
		ch_ag_enabled = false;
		nlme_reset_request(true,
				(FUNC_PTR)nlme_reset_confirm
				);
		break;

	case 'S':
		printf("Start node - \r\n");
		node_status = STARTING;
		nlme_start_request(
				(FUNC_PTR)nlme_start_confirm
				);
		break;

	case 'P':
		printf("Push button pairing -\r\n");
		node_status = PUSH_BUTTON_PAIRING;
		sw_timer_start(led_timer,
				500000,
				SW_TIMEOUT_RELATIVE,
				(FUNC_PTR)led_handling,
				NULL);
		LED_On(LED_NWK_SETUP);
		{
			dev_type_t RecDevTypeList[DEVICE_TYPE_LIST_SIZE];
			profile_id_t RecProfileIdList[PROFILE_ID_LIST_SIZE];

			RecDevTypeList[0] = (dev_type_t)SUPPORTED_DEV_TYPE_0;
			RecProfileIdList[0] = SUPPORTED_PROFILE_ID_0;

			pbp_rec_pair_request(APP_CAPABILITIES, RecDevTypeList,
					RecProfileIdList,
					(FUNC_PTR)pbp_rec_pair_confirm
					);
		}
		break;

	case 'A':
		printf("All-in-one start; wait until done.\r\n");
		node_status = ALL_IN_ONE_START;
		printf("\tReset node - ");
		ch_ag_enabled = false;
		nlme_reset_request(true,
				(FUNC_PTR)nlme_reset_confirm
				);
		break;

	case 'W':
		previous_node_status = node_status;
		printf("Warm start - \r\n");
		node_status = WARM_STARTING;
		nlme_reset_request(false,
				(FUNC_PTR)nlme_reset_confirm
				);
		break;

	case 'T':
		previous_node_status = node_status;
		node_status = PRINTING_PAIRING_TABLE;
		print_pairing_table(true, NULL, 0);
		break;

	case 'U':
		node_status = UNPAIRING;
		print_unpair_submenu();
		break;

	case 'C':
		if (ch_ag_enabled) {
			ch_ag_enabled = false;
			nwk_ch_agility_request(AG_STOP,
					(FUNC_PTR)nwk_ch_agility_confirm
					);
			printf(" - Channel agility is stopped ...\r\n");
		} else {
			ch_ag_enabled = true;
			node_status = CH_AGILITY_EXECUTION;
			printf(" - Channel agility is started ...\r\n");
			nwk_ch_agility_request(AG_PERIODIC,
					(FUNC_PTR)nwk_ch_agility_confirm
					);
		}

		break;

	case 'O':
		/* Start getting the NIBs value */
		node_status = GETTING_CH_AG_NIBS;
		nlme_get_request(nwkPrivateChAgEdThreshold, 0,
				(FUNC_PTR)nlme_get_confirm
				);
		break;

	case 'B':
		print_ch_change_submenu();
		break;

	case 'D':
		print_vendor_data_submenu(BATTERY_STATUS_REQ);
		break;

	case 'V':
		print_vendor_data_submenu(FW_VERSION_REQ);
		break;

	case 'Z':
		print_vendor_data_submenu(ALIVE_REQ);
		break;

	default:
		print_main_menu();
		break;
	}
}
Beispiel #6
0
int main() {
    struct Complex *complex = (struct Complex *) calloc(COMPLEX_SIZE_DEFAULT, sizeof(struct Complex));
    int size = COMPLEX_SIZE_DEFAULT;
    int count_of_elements = COMPLEX_SIZE_DEFAULT;
    
    struct Complex c1, c2, result;

    complex[0].re = COMPLEX1_RE;
    complex[0].im = COMPLEX1_IM;
    complex[1].re = COMPLEX2_RE;
    complex[1].im = COMPLEX2_IM;

    c1.re = COMPLEX1_RE;
    c1.im = COMPLEX1_IM;
    c2.re = COMPLEX2_RE;
    c2.im = COMPLEX2_IM;

    while (1) {
        char ch;
		print_main_menu(c1, c2);
        ch = getchar();
        clear_input();
        switch (ch) {
        case '1':
        {
            int index = 0;
            change_complex_interface(&c1, complex, count_of_elements);
            break;
        }
        case '2':
        {
            int index = 1;
            change_complex_interface(&c2, complex, count_of_elements);
            break;
        }
        case 'a':
        case 'A':
            result = add(c1, c2);
            print_complex(result);
            break;
        case 's':
        case 'S':
            result = sub(c1, c2);
            print_complex(result);
            break;
        case 'm':
        case 'M':
            result = mul(c1, c2);
            print_complex(result);
            break;
        case 'd':
        case 'D':
			{
				int error = 0;
				result = division(c1, c2, &error);
				if (!error)
					print_complex(result);
			break;
			}
        case 'r':
        case 'R':
            complex = read_file_interface(complex, &size, &count_of_elements);
            break;
        case 'w':
        case 'W':
            complex = write_file_interface(complex, &size, &count_of_elements);
            break;
        case 'q':
        case 'Q':
            return 0;
        default:
            printf("Incorrect input, please choose an existing element\n");
        }
    }
    return 0;
}
unsigned char menu_input(unsigned char cmd)
{
	static unsigned char state = 'q';
	static unsigned char substate = 0;
	static unsigned char input_idx=0;
	static unsigned char cyl_counter =0;
	unsigned int tmpi = 0;
	float tmpf = 0;

	unsigned char i = 0;
	static unsigned char subst = 0;
	
	//just dump the menu if we're at the top level
	//and user hit enter
	if(state == 'q' || state == 'm' )
	{
	switch( cmd )
		{	
			//set rpm points for knock table
			case 'r':	state = 'r'; cyl_counter = 0; substate = 0; break;
			//set voltage points for knock table
			//will be dumped to eeprom when done
			case 'v':	state = 'v'; cyl_counter = 0; substate = 0; break;
			//get the current engine settings
			case 'g':	state = 'g'; break;
			//configure the engine settings 
			//will be dumped to eeprom when done
			case 'c':	state = 'c'; break;
			//dump the status of internal variables
			case 'd':	state = 'd'; break;
			//if we get a 'q' shut down the menu
			case 'q':  return 0;
			//set the state to main menu
			default:	state = 'm'; print_main_menu(); break;
		}

	return 1;
	}
	else
	{

		switch(state)
		{
		
			case 'g':
			dump_config();
			newline();
			print_main_menu();
			state = 'm';
			break;

			case 'd':
			dump_variables();
			newline();
			print_main_menu();
			state = 'm';
			break;

			case 'r':
			switch(substate)
			{
				case 0:
				newline();
				snprintf_P(output, OUTPUT_LEN, cylinder_prompt, cfg.firing_order[cyl_counter]);
				print_str(output);
				substate++;
				input_idx = 0;
				break;

				case 1:
				//set value from substate 0 query
				//if \r\n our work here is done
				if(cmd == '\n' || cmd == '\r')
				{
					if(input_idx > 0)
					{

						output[input_idx] = '\0';
						subst = 0;
						input_idx = 0;
						for(i = 0; i < OUTPUT_LEN && output[i] != '\0'; i++)
						{
								if(output[i] == ',')
								{
									output[i] = '\0';
									//this is actually stored in timer ticks to avoid division in code
									//introduces +/- 8 rpm error around 10k rpm
									cfg.rpm_points[cyl_counter][input_idx++] = (TICKS_PER_MIN / atoi( (output+subst) ) );
									subst = i+1;
								}	
	
						}
						cfg.rpm_points[cyl_counter][input_idx] = (TICKS_PER_MIN / atoi( (output+subst) ) );
					} 
					if(++cyl_counter == cfg.num_cyls )
					{
						print_str_P(table_layout);
						for(i = 0; i < cfg.num_cyls; i++)
						{
							calculate_fslopes(i);
							newline();
							newline();
							snprintf_P(output, OUTPUT_LEN, table_header, cfg.firing_order[i]);
							print_str(output);
							newline();
							dump_rpm_table(i);
							newline();
							dump_voltage_table(i);
							newline();
							dump_fslopes(i);
						}
						print_str_P(prompt);
						substate++;
						input_idx = 0;
					}
					else
					{
						newline();
						input_idx = 0;
						snprintf_P(output, OUTPUT_LEN, cylinder_prompt, cfg.firing_order[cyl_counter]);
						print_str(output);
					}
				}
				else if( input_idx < OUTPUT_LEN -1  && (isdigit(cmd) || cmd == ',' ) )
					output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;

				break;

				case 2:
				if( cmd == 'y' || cmd == 'Y')
				{
					write_cfg_to_eep();
					setup();
				}
				else if( cmd == 'n' || cmd == 'N' )
				{
					substate = 0;
					input_idx = 0;
					cyl_counter = 0;
					break;
				}
				else if( cmd == 'q' || cmd == 'Q')
				{	
					read_cfg_from_eep();
				}
				else
				{ 
					print_str_P(prompt);
					break;
				}
				state = 'm';

				default: substate =0; input_idx = 0; cyl_counter = 0; break;
			}	
			break;
		

			case 'v':
			switch(substate)
			{
				case 0:
				newline();
				snprintf_P(output, OUTPUT_LEN, voltage_prompt , cfg.firing_order[cyl_counter]);
				print_str(output);
				substate++;
				break;
				
				
				case 1:
				//set value from substate 0 query
				//if \n our work here is done
				if(cmd == '\n' || cmd == '\r')
				{
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						subst = 0;
						input_idx = 0;
						for(i = 0; i < OUTPUT_LEN && output[i] != '\0'; i++)
						{
								if(output[i] == ',')
								{
									output[i] = '\0';
									cfg.knock_voltage[cyl_counter][input_idx++] = (unsigned int ) (atof((output+subst)) /TEN_BIT_LSB) ;
									subst = i+1;
								}	
						} 
							cfg.knock_voltage[cyl_counter][input_idx] = (unsigned int ) (atof((output+subst)) /TEN_BIT_LSB) ;
					}
					if(++cyl_counter == cfg.num_cyls)
					{
						print_str_P(table_layout);
						for(i = 0; i < cfg.num_cyls; i++)
						{
							calculate_fslopes(i);
							newline();
							newline();
							snprintf_P(output, OUTPUT_LEN, table_header, cfg.firing_order[i]);
							print_str(output);
							newline();
							dump_rpm_table(i);
							newline();
							dump_voltage_table(i);
							newline();
							dump_fslopes(i);
						}
						print_str_P(prompt);
						substate++;
						input_idx = 0;
					}
					else
					{
						newline();
						snprintf_P(output, OUTPUT_LEN, voltage_prompt, cfg.firing_order[cyl_counter]);
						print_str(output);
						input_idx = 0;
					}
				}
				else if( input_idx < OUTPUT_LEN -1  && (isdigit(cmd) || cmd == ','|| cmd == '.' ) )
					output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;

				
				break;

				case 2:
				if( cmd == 'y' || cmd == 'Y')
				{
					write_cfg_to_eep();
					setup();
				}
				else if( cmd == 'n' || cmd == 'N' )
				{
					substate = 0;
					input_idx = 0;
					cyl_counter = 0;
					break;
				}
				else if( cmd == 'q' || cmd == 'Q')
				{	
					read_cfg_from_eep();
				}
				else 
				{
					print_str_P(prompt);
					break;
				}
				state = 'm';

				default: substate = 0; input_idx = 0; cyl_counter = 0; break;					

			}	
			break;

			case 'c':
			switch(substate)
			{
				case 0:
				newline();
				print_str_P(dump_cfg[substate++] );
				break;

				case 1:
				if(cmd == '\n' || cmd == '\r')
				{   
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						cfg.num_cyls = (unsigned char)atoi(output);
                        			input_idx=0;    
                    			}   
					newline();
					print_str_P(dump_cfg[substate++]);
				}
               			else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
               			 	output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
				break;

				case 2:
                                if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                                        cfg.window_length_deg = (unsigned char)atoi(output);
                                        input_idx=0;
                                	}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
                                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                                                output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
                                break;

				case 3:
				if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                                        cfg.window_open_deg_atdc = (unsigned char)atoi(output);
                                        input_idx=0;
                                	}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
                                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                                                output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
                                break;

				case 4:
				if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                                        cfg.mech_advance_deg_btdc = (unsigned char)atoi(output);
                                        input_idx=0;
                                	}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
                                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                                                output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
                                break;

				case 5:
				if(cmd == '\n' || cmd == '\r')
				{
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
					cfg.window_integ_div = (unsigned char)atoi(output);
       		             		input_idx=0;
					}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
				else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                			output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                		break;


				case 6:
				if(cmd == '\n' || cmd == '\r')
				{
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
					tmpi = (unsigned int)atoi(output);
					//search for the next largest bandpass frequenc and 
					//set the index of the current center frequency in the cfg section
					for(i = 0; i < NUM_BANDPASS_FREQS && pgm_read_word(&bandpass_freq_value[i]) < tmpi ; i++);
					cfg.tpic_freq = i;
					input_idx=0;
					}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
				else if( input_idx < OUTPUT_LEN	&& isdigit(cmd) )
					output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
				break;


				case 7:
				if(cmd == '\n' || cmd == '\r' )
				{
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						tmpf = (float)atof(output);
						//search for the next smallest gain
						//set the index of the gain in the cfg section
						for(i = 0; i < NUM_GAIN && pgm_read_float(&gain_value[i]) > tmpf ; i++);
						cfg.tpic_gain = i;
						input_idx=0;
					}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
				else if( input_idx < OUTPUT_LEN && (isdigit(cmd) || cmd == '.' ) )
					output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
				break;

				case 8:
				if(cmd == '\n' || cmd == '\r')
				{	
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						subst = 0;
					input_idx = 0;
						for(i = 0; i < OUTPUT_LEN && output[i] != '\0'; i++)
					{
							if(output[i] == ',')
						{
								output[i] = '\0';
								cfg.firing_order[input_idx++] = atoi( (output+subst) );
								subst = i+1;
						}

					}
						cfg.firing_order[input_idx] = atoi( (output+subst) );
                    			input_idx=0;
					}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
				else if( input_idx < OUTPUT_LEN  && (isdigit(cmd) || cmd == ',' ) )
                			output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
              			break;
				case 9:
				if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                                        cfg.datalog_frequency = MAX_DATALOGS_PER_SEC/(unsigned char)atoi(output);
										if(cfg.datalog_frequency < 2)
											cfg.datalog_frequency = 1;
										else
											cfg.datalog_frequency--;
                                        input_idx=0;
	                                }
					newline();
					print_str_P(dump_cfg[substate++]);

				}
                                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                                                output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
                                break;

				case 10:
				if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                                       		cfg.datalog_header_count = (unsigned char)atoi(output);

						if(cfg.datalog_header_count == 0)
							cfg.datalog_header_count = 1;

                                       		input_idx=0;
                                	}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
                                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                                                output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
                                break;

				case 11:
				if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                                       		cfg.wheelmode = (unsigned char)atoi(output);
						if(cfg.wheelmode != HEP && cfg.wheelmode != FOURTWENTYA )
							cfg.wheelmode = 0;

                                       		input_idx=0;
                                	}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
                                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                                                output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
                                break;

				case 12:
				if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                                       		cfg.tpic_chan = ( (unsigned char)atoi(output) -1 );
						if(cfg.tpic_chan != 1 )
							cfg.tpic_chan = 0;

                                       		input_idx=0;
                                	}
					newline();
					print_str_P(dump_cfg[substate++]);
				}
                                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                                                output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
                                break;

				case 13:
				if(cmd == '\n' || cmd == '\r')
                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
                        cfg.datalogmode = ( (unsigned char)atoi(output)  );
						if( cfg.datalogmode )
							cfg.datalogmode = 1;

                        input_idx=0;
                    }
					newline();
					print_str_P(dump_cfg[substate++]);
				}
                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
					output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
                                
				break;

				case 14:
				if(cmd == '\n' || cmd == '\r')
                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						strncpy(cfg.seperator, output, MAX_SEP_LEN-1);
						cfg.seperator[MAX_SEP_LEN - 1] = '\0';
 						input_idx=0;
					}
					newline();
					print_str_P(dump_cfg[substate++]);

				}
                else if( input_idx < OUTPUT_LEN )
                    output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
				break;

				case 15:
				if(cmd == '\n' || cmd == '\r')
                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						cfg.pulse_events = (unsigned char) atoi(output);
 						input_idx=0;
					}
					newline();
					print_str_P(dump_cfg[substate++]);

				}
                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                    output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
				break;


				case 16:
				if(cmd == '\n' || cmd == '\r')
                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						cfg.pulse_tenms = (unsigned char) atoi(output);
 						input_idx=0;
					}
					newline();
					print_str_P(dump_cfg[substate++]);

				}
                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                    output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
				break;


				case 17:
				if(cmd == '\n' || cmd == '\r')
                                {
					if(input_idx > 0)
					{
						output[input_idx] = '\0';
						cfg.pulse_timer_select = (unsigned char) atoi(output);
						if(cfg.pulse_timer_select)
							cfg.pulse_timer_select = 1;
 						input_idx=0;
					}
					print_str_P(config_done);
					dump_config();
					print_str_P(prompt);
					newline();
					substate++;
				}
                else if( input_idx < OUTPUT_LEN  && isdigit(cmd) )
                    output[input_idx++]=cmd;
				else if ( input_idx > 0 && ( cmd == '\b' || cmd == 0x7F || cmd == 0x08 ) )
					input_idx--;
				break;



				case 18:
				if( cmd == 'y' || cmd == 'Y')
				{
					write_cfg_to_eep();
					setup();
				}
				else if( cmd == 'n' || cmd == 'N' )
				{
					substate = 0;
					input_idx = 0;
					cyl_counter = 0;
					break;
				}
				else if( cmd == 'q' || cmd == 'Q')
				{	
					read_cfg_from_eep();
				}
				else
				{
					print_str_P(prompt);
					break;
				}
				state = 'm';

				default: substate = 0; input_idx = 0; cyl_counter = 0; break;					

			}//switch(substate)
			
		}//switch(state)

	}//else
return 1;
}//void menu_input()