Esempio n. 1
0
/***********************************************************
* Function:
* Description:
* Input:
* Input:
* Output:
* Return:
* Others:
***********************************************************/
static void keypress( unsigned int key )
{
	if(fupgrading)	return;
	switch( KeyValue )
	{
		case KeyValueMenu:
			pMenuItem=&Menu_5_other;
			pMenuItem->show();
			CounterBack=0;
			
			if(tid_upgrade) /*正在升级中*/
			{
				rt_thread_delete(tid_upgrade);
			}
			
			break;
		case KeyValueOk:
			if(BD_upgrad_contr==1)
				menu_set();
			if(menu_pos==0)
			{
				tid_upgrade = rt_thread_create( "upgrade", thread_gps_upgrade_uart, (void*)msg, 1024, 5, 5 );
				if( tid_upgrade != RT_NULL )
				{
					msg("I等待串口升级");
					rt_thread_startup( tid_upgrade );
				}else
				{
					msg("E线程创建失败");
				}
			}else /*U盘升级*/
			{
				tid_upgrade = rt_thread_create( "upgrade", thread_gps_upgrade_udisk, (void*)msg, 1024, 5, 5 );
				if( tid_upgrade != RT_NULL )
				{
					msg("I等待U盘升级");
					rt_thread_startup( tid_upgrade );
				}else
				{
					msg("E线程创建失败");
				}
			}
			break;
		case KeyValueUP:
			menu_pos=menu_pos^0x01;
			menu_set();
			break;
		case KeyValueDown:
			menu_pos=menu_pos^0x01;
			menu_set();
			break;
	}
	KeyValue = 0;
}
Esempio n. 2
0
magnify ()
{
	int pid;
	extern int errno;

	menu_set ( menu_find ( main_menu, MENU_STRING, "magnify", 0 ),
		MENU_INACTIVE, TRUE, 0 );

	pid = vfork ();

	if ( pid == -1 ) /* fork failed */
	{
		printf ( "fork failed errno is %d\n", errno );
	}
	else if ( pid ) /* parent */
	{
		notify_set_wait3_func ( canvas, mag_handler, pid );
	}
	else /* child */
	{
		execlp ( "/bin/X11/xmag",
			"xmag", "-display", getenv("DISPLAY"), (char *) 0);

		printf ( "exec failed\n" );
	}
}
Esempio n. 3
0
Notify_value
mag_handler ()
{
	menu_set ( menu_find ( main_menu, MENU_STRING, "magnify", 0 ),
		MENU_INACTIVE, FALSE, 0 );

	return NOTIFY_DONE;
}
Esempio n. 4
0
/***********************************************************
* Function:
* Description:
* Input:
* Input:
* Output:
* Return:
* Others:
***********************************************************/
static void show( void )
{
	menu_pos=0;
	menu_set();
}
Esempio n. 5
0
/** Główna funkcja programu
*/
int main(void)
{
	FuncPtr FPtr;

	ioinit();

	hd44780_clear();
	hd44780_bl_on();
	hd44780_cursor_off();

	load_basic_settings(EEPROM_BASIC_SETTINGS_BEGIN);
	load_temp_sensors_settings(EEPROM_TEMP_SETTINGS_BEGIN);
	load_outputs_settings(EEPROM_OUTS_SETTING_BEGIN);
	load_timers_settings(EEPROM_TIMERS_SETTING_BEGIN);
	load_timersv_settings(EEPROM_TIMERSV_SETTING_BEGIN);
	load_topoff_settings(EEPROM_TOPOFF_SETTINGS_BEGIN);

	hd44780_printOnLcdDelay(PSTR(PROGRAM_FULL_NAME));
	hd44780_clear();
	sei();

	rtc_get_time();
	rtc_get_date();

	gui_client_present();

	log_write_record(LOG_EVENT_START,0,0,0);

	for (;;) {

		wdt_reset();

		qbuttons_process();

		ui_key_pressed();

		if (key_pressed && alarms_notification_enabled() && alarms_is_active() ){
			alarms_block_notification();
			menu_set(1,1,0,0);
			key_pressed = NONE;
		}

		//########################### akcje wykonywane kiedy minie sekunda
		if (SF(FLAG_SECOND_PAST)) {
			SSF(FLAG_FORCE_LCD_REFRESH);
			temp_counter++;
			top_off_check_time();
			top_off_process();
			CSF(FLAG_SECOND_PAST);
		}

 		//########################### akcje wykonywane kiedy minie pół sekundy
		if (SF(FLAG_HALF_SECOND_PAST)) {
			SSF(FLAG_FORCE_LCD_SEMI_REFRESH);
			if (alarms_is_active() && alarms_notification_enabled()) {
				buzzer_toggle();
			} else {
				buzzer_off();
			}
			CSF(FLAG_HALF_SECOND_PAST);
		}

		//######################################## odświeżenie wyswietlacza LCD
		if (system_flags & LCD_REFRESH_MASK) {
			//if (back_light_counter < LCD_BL_SHUTOFF_TIME) { hd44780_bl_on(); }
			FPtr=(FuncPtr)pgm_read_word(&FuncPtrTable[menu_func_index()]);
			hd44780_outcmd(HD44780_HOME);
			FPtr();
			menu_dummy();
			CSF(FLAG_FORCE_LCD_REFRESH);
			CSF(FLAG_FORCE_LCD_SEMI_REFRESH);
		}

		//########################### akcje wykonywane kiedy minie minuta
		if (SF(FLAG_MINUTE_PAST)) {
			//if (back_light_counter < 0xFF) { back_light_counter++; }
			//if (back_light_counter >= LCD_BL_SHUTOFF_TIME) { hd44780_bl_off(); }
			timers_process();
			timersv_process();
			if (alarms_block_notification_counter < ALARM_MAX_BLOCK_VALUE) {
				alarms_block_notification_counter++;
			}
			CSF(FLAG_MINUTE_PAST);
		}

		//########################### akcje wykonywane kiedy minie godzina
		if (SF(FLAG_HOUR_PAST)) {
			temp_register();
			CSF(FLAG_HOUR_PAST);
		}

		//########################### akcje wykonywane jak minie dzień
		if (SF(FLAG_DAY_PAST)) {
			rtc_get_time();
			rtc_get_date();
			CSF(FLAG_DAY_PAST);
		}

		//########################### pomiar temeratury
		if (temp_counter > TEMP_SENSOR_READ_INTERVAL) {
			temp_read_temperature();
			temp_counter = 0;
		}

		//######################################## obsługa interfejsu szeregowego
        gui_cm_process_char();

        //######################################## aktualizacja stanu wyjść
		outputs_update();
    }
  	return 0;
}
Esempio n. 6
0
void ui_init (void) {
	UI_DDR &= ~UI_KEYPAD_MASK;
	UI_PORTOUT |= UI_KEYPAD_MASK;
	menu_set(0,0,0,0);
}