예제 #1
0
파일: main.c 프로젝트: lieb005/My_Stuff
// *************************************************************************************************
// @fn          init_global_variables
// @brief       Initialize global variables.
// @param       none
// @return      none
// *************************************************************************************************
void init_global_variables(void)
{
	// --------------------------------------------
	// Apply default settings

	// set menu pointers to default menu items
	ptrMenu_L1 = &menu_L1_Time;
//	ptrMenu_L1 = &menu_L1_Alarm;
//	ptrMenu_L1 = &menu_L1_Heartrate;
//	ptrMenu_L1 = &menu_L1_Speed;
//	ptrMenu_L1 = &menu_L1_Temperature;
//	ptrMenu_L1 = &menu_L1_Altitude;
//	ptrMenu_L1 = &menu_L1_Acceleration;
	ptrMenu_L2 = &menu_L2_Date;
//	ptrMenu_L2 = &menu_L2_Stopwatch;
//	ptrMenu_L2 = &menu_L2_Rf;
//	ptrMenu_L2 = &menu_L2_Ppt;
//	ptrMenu_L2 = &menu_L2_Sync;
//	ptrMenu_L2 = &menu_L2_Distance;
//	ptrMenu_L2 = &menu_L2_Calories;
//	ptrMenu_L2 = &menu_L2_Battery;

	// Assign LINE1 and LINE2 display functions
	fptr_lcd_function_line1 = ptrMenu_L1->display_function;
	fptr_lcd_function_line2 = ptrMenu_L2->display_function;

	// Init system flags
	button.all_flags 	= 0;
	sys.all_flags 		= 0;
	request.all_flags 	= 0;
	display.all_flags 	= 0;
	message.all_flags	= 0;
	
	// Force full display update when starting up
	display.flag.full_update = 1;

#ifndef ISM_US
	// Use metric units when displaying values
	sys.flag.use_metric_units = 1;
#endif
	
	// Read calibration values from info memory
	read_calibration_values();
	
	// Set system time to default value
	reset_clock();
	
	// Set date to default value
	reset_date();
	
	// Set alarm time to default value 
	reset_alarm();
	
	// Set buzzer to default value
	reset_buzzer();
	
	// Reset stopwatch
	reset_stopwatch();
	
	// Reset altitude measurement
	reset_altitude_measurement();
	
	// Reset acceleration measurement
	reset_acceleration();
	
	// Reset BlueRobin stack
	reset_bluerobin();

	// Reset SimpliciTI stack
	reset_rf();
	
	// Reset temperature measurement 
	reset_temp_measurement();

	// Reset battery measurement
	reset_batt_measurement();
	battery_measurement();

    //Set cdtimer to a 5:00 minute default
    memcpy(scdtimer.defaultTime, "000500", sizeof(scdtimer.time));
    reset_cdtimer();
    
    // Reset random generator
    reset_random();
    
    // Reset agility measurement
    reset_agility();
    
    // Reset number storage
    reset_number_storage();
}
// *************************************************************************************************
// @fn          mx_sync
// @brief       Mx button (STAR button) handler to do some stuff. Works only if SimpliciTI is off!
// @param       u8 line		LINE2
// @return      none
// *************************************************************************************************
void mx_sync(u8 line)
{
 u8 select;
 s32 Tmp;
         
 // Check for running SimpliciTI
 if(sRFsmpl.mode == SIMPLICITI_OFF)
 {   
    // Init value index
    select = 0; 
    
    clear_display_all();
    
    // Loop values until all are set or user breaks set
    while(1) 
    {
        // Idle timeout: exit without saving 
        if (sys.flag.idle_timeout) break;
        
        // NUM Button (short): save, then exit 
        if (button.flag.num) 
        {
            //Set display update flag
            display.flag.full_update = 1;
            break;
        }

        switch (select)
        {
            case 0: // Set "my defaults"
                    Tmp = 0;
                    display_symbol(LCD_SEG_L2_DP, SEG_OFF);
                    display_chars(LCD_SEG_L2_4_0, (u8 *)"MYDEF", SEG_ON);
                    set_value(&Tmp, 0, 0, 0, 1, SETVALUE_ROLLOVER_VALUE + SETVALUE_DISPLAY_VALUE + SETVALUE_NEXT_VALUE, LCD_SEG_L1_3_0, display_NO_YES);
                    if(Tmp == 1) { SetMyDefaults(); }
                    select = 1;
                    break;
            case 1: // Clear number storage and unlock storage 
                    Tmp = 0;
                    display_chars(LCD_SEG_L2_4_0, (u8 *)"CLEAR", SEG_ON);
                    set_value(&Tmp, 0, 0, 0, 1, SETVALUE_ROLLOVER_VALUE + SETVALUE_DISPLAY_VALUE + SETVALUE_NEXT_VALUE, LCD_SEG_L1_3_0, display_NO_YES);
                    if(Tmp == 1) { reset_number_storage(); }
                    select = 2;
                    break;
            case 2: // Reset watch 
                    Tmp = 0;
                    display_chars(LCD_SEG_L2_4_0, (u8 *)"RESET", SEG_ON);
                    set_value(&Tmp, 0, 0, 0, 1, SETVALUE_ROLLOVER_VALUE + SETVALUE_DISPLAY_VALUE + SETVALUE_NEXT_VALUE, LCD_SEG_L1_3_0, display_NO_YES);
                    if(Tmp == 1) { ResetWatch(); }
                    select = 3;
                    break;
            case 3: // Reset Unified Clock System 
                    Tmp = (s32)sUcsResetHandling.status;
                    display_chars(LCD_SEG_L2_4_0, (u8 *)"OSC-R", SEG_ON);
                    set_value(&Tmp, 0, 0, 0, 3, SETVALUE_ROLLOVER_VALUE + SETVALUE_DISPLAY_VALUE + SETVALUE_NEXT_VALUE, LCD_SEG_L1_3_0, display_NO_YES_AUTO_MAN);
                    if(Tmp == 1) // YES
                    { 
                        __disable_interrupt();
                        init_ucs();
                        __enable_interrupt();
                        display_symbol(LCD_SYMB_MAX, SEG_OFF);
                    }
                    if(Tmp == 2) { sUcsResetHandling.status = UCSRESET_AUTO; }
                    if(Tmp == 3) { sUcsResetHandling.status = UCSRESET_MAN; }
                    select = 4;
                    break;
            case 4: // Display software version
                    Tmp = 0;
                    display_chars(LCD_SEG_L2_5_0, (u8 *)" S    ", SEG_ON);                   // "S"
                    display_charSegments(LCD_SEG_L2_3, SEG_C+SEG_D+SEG_E+SEG_F, SEG_ON);    // 1/2 "W"
                    display_charSegments(LCD_SEG_L2_2, SEG_B+SEG_C+SEG_D+SEG_E, SEG_ON);    // 1/2 "W"
                    set_value(&Tmp, 0, 0, 0, 3, SETVALUE_ROLLOVER_VALUE + SETVALUE_DISPLAY_VALUE + SETVALUE_NEXT_VALUE, LCD_SEG_L1_3_0, display_SW_Version);
                    select = 0;
                    break;
        }
    }
 }
 // Clear button flag
 button.all_flags = 0;
}