Ejemplo n.º 1
0
int main(void) {
    main_screen();

    clear_screen();
    cursor(0, 0);
    printf("Thanks for playing tmaze! :)\n");
    return 0;
}
Ejemplo n.º 2
0
int main(void)

{
	NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000);  

	set_msi();
	DBGMCU_Config(DBGMCU_SLEEP | DBGMCU_STANDBY | DBGMCU_STOP, DISABLE);
		
  set_bor();
	Power.sleep_now=DISABLE;
	
	DataUpdate.Need_erase_flash=ENABLE;
	
  Settings.Geiger_voltage=360; // Напряжение на датчике 360 вольт
  Settings.Pump_Energy=350;    // энергия накачки 350 мТл
	DataUpdate.current_flash_page=0;
	
	io_init(); // Инициализация потров МК

	eeprom_write_default_settings(); // Проверка, заполнен ли EEPROM
  eeprom_read_settings(); // Чтение настроек из EEPROM
  screen=1;
	Power.USB_active=DISABLE;
	Power.sleep_time=Settings.Sleep_time;
  Power.Display_active=ENABLE;
	
	ADCData.DAC_voltage_raw=0x610;
		
  dac_init();
	comp_init();
	comp_on();
	timer9_Config(); // Конфигурируем таймер накачки	
	timer10_Config();
	tim2_Config();
	sound_activate();
	delay_ms(100);
	sound_deactivate();
//--------------------------------------------------------------------
	RTC_Config();	   // Конфигурируем часы
//--------------------------------------------------------------------
// инициализация дисплея
//--------------------------------------------------------------------
	delay_ms(50); // подождать установки напряжения
  display_on(); 
  LcdInit(); 
  LcdClear(); 
//--------------------------------------------------------------------
  adc_init();
  delay_ms(100);
  adc_calibration();
	delay_ms(10);
//--------------------------------------------------------------------
  EXTI8_Config();
#ifdef version_401
  EXTI9_Config();
#endif
	EXTI3_Config();
  EXTI4_Config();
  EXTI6_Config();
		
	DataUpdate.Need_batt_voltage_update=ENABLE;
	
	if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6))hidden_menu=ENABLE; // Открытие сервисных пунктов меню
	
	delay_ms(500); // подождать установки напряжения
		
  while(1) 
/////////////////////////////////
  {
		if(DataUpdate.Need_fon_update==ENABLE)	geiger_calc_fon();
    if(key>0)																keys_proccessing();
		if(DataUpdate.Need_batt_voltage_update)	adc_check_event();

		////////////////////////////////////////////////////

		
		if((Power.sleep_time>0)&(!Power.Display_active))sleep_mode(DISABLE); // Если дисплей еще выключен, а счетчик сна уже отсчитывает, поднимаем напряжение и включаем дисплей
    
		if(Power.Display_active)
    {
			if(Power.sleep_time==0 && !Alarm.Alarm_active) sleep_mode(ENABLE);  // Счетчик сна досчитал до нуля, а дисплей еще активен, то выключаем его и понижаем напряжение
			if(Power.led_sleep_time>0)
			{
				GPIO_ResetBits(GPIOC,GPIO_Pin_13);// Включаем подсветку 
			} else {
				GPIO_SetBits(GPIOC,GPIO_Pin_13);// Выключаем подсветку  				
			}			
			if(DataUpdate.Need_display_update==ENABLE)
			{
				DataUpdate.Need_display_update=DISABLE;
				LcdClear_massive();
				if (screen==1)main_screen();
				if (screen==2)menu_screen();
				if (screen==3)stat_screen();
			}
///////////////////////////////////////////////////////////////////////////////
		}
#ifdef version_401
		if((!Power.USB_active) && (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9))){
			usb_activate(0x0); // Если питание USB начало подаваться включаем USB
		}
#endif

		if(!Power.USB_active)		// если USB не активен, можно уходить в сон
		{
			if(current_pulse_count<30)      // Если счетчик не зашкаливает, то можно уйти в сон
			{
				if(!Power.Pump_active && !Power.Sound_active)
				{
					PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);    // Переходим в сон
#ifdef debug
 					Wakeup.total_wakeup++;
					DataUpdate.Need_display_update=ENABLE;
#endif

				} else
				{
						PWR_EnterSleepMode(PWR_Regulator_ON, PWR_SLEEPEntry_WFI);
#ifdef debug
  					Wakeup.total_wakeup++;
						DataUpdate.Need_display_update=ENABLE;
#endif
				}
			}
		}else USB_work(); 		// если USB активен, попробовать передать данные
#ifdef debug
 					Wakeup.total_cycle++;
					DataUpdate.Need_display_update=ENABLE;
#endif

  }
/////////////////////////////////////////////////////////////////////////////// 
}
Ejemplo n.º 3
0
Archivo: menu.c Proyecto: Micha500/gt3b
// choose from menu items
static void select_menu(void) {
    u8 menu = LM_MODEL;
    lcd_menu(menu);
    main_screen(MS_NAME);	// show model number and name

    while (1) {
	btnra();
	menu_stop();

	// Back/End key to end this menu
	if (btn(BTN_BACK | BTN_END))  break;

	// Enter key - goto submenu
	if (btn(BTN_ENTER)) {
	    key_beep();
	    if (menu == LM_MODEL) {
		if (btnl(BTN_ENTER))	menu_model(1);
		else {
					menu_model(0);
					break;
		}
	    }
	    else if (menu == LM_NAME) {
		if (btnl(BTN_ENTER))	menu_channels_reset();
		else			menu_name();
	    }
	    else if (menu == LM_REV) {
		if (btnl(BTN_ENTER))	menu_key_mapping();
		else			menu_reverse();
	    }
	    else if (menu == LM_EPO) {
		if (btnl(BTN_ENTER))	menu_mix();
		else			menu_endpoint();
	    }
	    else if (menu == LM_TRIM) {
		if (btnl(BTN_ENTER))	menu_subtrim();
		else			menu_trim();
	    }
	    else if (menu == LM_DR) {
		if (btnl(BTN_ENTER))	menu_speed();
		else			menu_dualrate();
	    }
	    else if (menu == LM_EXP) {
		if (btnl(BTN_ENTER))	menu_channel_value();
		else			menu_expo();
	    }
	    else {
		if (btnl(BTN_ENTER))	break;
		else			menu_abs();
	    }
	    main_screen(MS_NAME);	// show model number and name
	    // exit when BACK
	    if (btn(BTN_BACK))  break;
	}

	// rotate keys
	else if (btn(BTN_ROT_ALL)) {
	    if (btn(BTN_ROT_R)) {
		menu >>= 1;
		if (!menu)  menu = LM_MODEL;
	    }
	    else {
		menu <<= 1;
		if (!menu)  menu = LM_ABS;
	    }
	    lcd_menu(menu);
	    lcd_update();
	}
    }
Ejemplo n.º 4
0
Archivo: index.c Proyecto: hl1itj/Team9
portTASK_FUNCTION(key_task, pvParameters) {
	main_screen();
}
Ejemplo n.º 5
0
Archivo: main.cpp Proyecto: koron21/kvs
int main( int argc, char** argv )
{
    kvs::glut::Application app( argc, argv );
    Argument arg( app.argc(), app.argv() );
    p_arg = &arg;

    // for empty objects
    std::vector<kvs::Real32> coords;
    std::vector<kvs::UInt32> connections;
    std::vector<kvs::UInt8>  colors;
    std::vector<float>       values;
    std::vector<float>       eigenvalues;

    colors.push_back(255);
    colors.push_back(255);
    colors.push_back(255);
    for ( unsigned int i = 0; i < 3; i++ )
    {
        coords.push_back(0.0);
    }
    for ( unsigned int i = 0; i < 2; i ++ )
    {
        connections.push_back(0);
        values.push_back(0.0);
    }
    eigenvalues.push_back(0);

    // Volume 2 (Displacement)
    m_volume2 = new kvs::UnstructuredVolumeObject();
    m_volume2->setCellType( kvs::UnstructuredVolumeObject::Tetrahedra );
    m_volume2->setConnections( kvs::ValueArray<kvs::UInt32>( connections ) );
    m_volume2->setCoords( kvs::ValueArray<float>( coords ) );
    m_volume2->setValues( kvs::AnyValueArray( values ) );
    m_volume2->setNCells(0);
    m_volume2->setNNodes(0);

    // polygon (Empty External)
#ifdef WIN32
    std::string default_polygon( "D:\\Koron\\Dropbox\\Work\\Viz\\Hyperstreamline\\data\\engine\\v6engine_external_face.kvsml" );
#else
    std::string default_polygon( "../../data/engine/v6engine_external_face.kvsml" );
#endif
    if ( p_arg->hasOption( "polygon" ) )
    {
       kvs::PolygonObject* import_polygon = new kvs::PolygonImporter( p_arg->optionValue<std::string>("polygon") );
       m_polygon = new kvs::PolygonToPolygon( import_polygon );
    }
    else
    {
        kvs::PolygonObject* import_polygon = new kvs::PolygonImporter( default_polygon );
        m_polygon = new kvs::PolygonToPolygon( import_polygon );
    }

    if ( !m_polygon )
    {
        kvsMessageError( "Cannot create surface." );
        exit( EXIT_FAILURE );
    }
    m_polygon->setOpacity( opacity_polygon );
    m_polygon->setColor( kvs::RGBColor( 255,255,255 ) );

    const kvs::Vector3f min_coord = m_polygon->minExternalCoord();
    const kvs::Vector3f max_coord = m_polygon->maxExternalCoord();
    xmin = min_coord.x();
    ymin = min_coord.y();
    zmin = min_coord.z();
    xmax = max_coord.x();
    ymax = max_coord.y();
    zmax = max_coord.z();
    resx = 10;
    resy = 10;
    resz = 10;

    m_seed_point = new kvs::CubicPointObject();
    m_seed_point->reset_coordinates( resx, resy, resz, xmin, xmax, ymin, ymax, zmin, zmax );
    m_seed_point->updateMinMaxCoords();

    // streamlines (Empty LineObject)
    m_streamline = new kvs::HyperStreamline();
    m_streamline->setLineType( kvs::LineObject::Polyline );
    m_streamline->setColorType( kvs::LineObject::VertexColor );
    m_streamline->setCoords( kvs::ValueArray<kvs::Real32>( coords ) );
    m_streamline->setConnections( kvs::ValueArray<kvs::UInt32>( connections ) );
    m_streamline->setEigenValues( eigenvalues );
    m_streamline->setColors( kvs::ValueArray<kvs::UInt8>( colors ) );
    m_streamline->setSize( 1.0f );

    // main screen
    kvs::glut::Screen main_screen( &app );
    p_main_screen = &main_screen;
    //main_screen.background()->setColor( kvs::RGBAColor( 0, 0, 0, 1 ) );
    int interval = 30;
    kvs::glut::Timer timer( interval );
    TimerEvent timer_event;
    KeyPressEvent keypress_event;

    main_screen.addTimerEvent( &timer_event, &timer );
    main_screen.addKeyPressEvent( &keypress_event );
    main_screen.show();

    // renderer
#ifdef USE_KVS
    m_compositor = new kvs::glew::StochasticRenderingCompositor( &main_screen );
    m_compositor->enableLODControl();

    m_tfunc.adjustRange( m_volume2 );
    m_tfunc.setColorMap( kvs::RGBFormulae::AFMHot(256) );

    m_volume_renderer = new kvs::glew::StochasticTetrahedraEngine();
    m_volume_renderer->setTransferFunction( m_tfunc );
    m_volume_renderer->setShader( kvs::Shader::BlinnPhong() );
    m_volume_renderer->disableShading();
    m_volume_renderer->setEdgeSize( 2 );

    m_polygon_renderer = new kvs::glew::StochasticPolygonEngine();
    m_polygon_renderer->setShader( kvs::Shader::BlinnPhong() );
   
    m_point_renderer = new kvs::glew::StochasticPointEngine();
    m_point_renderer->disableShading();

    m_line_renderer = new kvs::glew::StochasticLineEngine();
    m_line_renderer->setShader( kvs::Shader::BlinnPhong() );
    m_line_renderer->setOpacity( opacity_line );

    m_compositor->registerObject( m_volume2, m_volume_renderer );
    m_compositor->registerObject( m_polygon, m_polygon_renderer );
    m_compositor->registerObject( m_seed_point, m_point_renderer );
    m_compositor->registerObject( m_streamline, m_line_renderer );
#else
    m_renderer = new kvs::glew::StochasticRenderer( 1 );
    m_renderer->enableLODControl();

    m_tfunc.adjustRange( m_volume2 );
    m_tfunc.setColorMap( kvs::RGBFormulae::AFMHot(256) );
    m_volume_renderer = new kvs::glew::StochasticVolumeRenderer( m_volume2 );
    m_volume_renderer->setTransferFunction( m_tfunc );
    m_volume_renderer->setShader( kvs::Shader::BlinnPhong() );
    m_volume_renderer->disableShading();
    m_volume_renderer->setEdgeSize( 2 );
    m_renderer->registerRenderer( m_volume_renderer );

    m_polygon_renderer = new kvs::glew::StochasticPolygonRenderer( m_polygon );
    m_polygon_renderer->setShader( kvs::Shader::BlinnPhong() );
    m_renderer->registerRenderer( m_polygon_renderer );

    m_point_renderer = new kvs::glew::StochasticPointRenderer( m_seed_point );
    m_point_renderer->disableShading();
    m_renderer->registerRenderer( m_point_renderer );

    m_line_renderer = new kvs::glew::StochasticLineRenderer( m_streamline );
    m_line_renderer->setShader( kvs::Shader::BlinnPhong() );
    m_line_renderer->setOpacity( opacity_line );
    m_renderer->registerRenderer( m_line_renderer );

    null = new::kvs::NullObject( m_seed_point );
    null->setName( "null" );
    main_screen.registerObject( null, m_renderer );
    main_screen.show();

#endif

    // tfunc editor
    //TransferFunctionEditor editor( &main_screen, m_renderer, m_volume_renderer );
    //editor.setVolumeObject( m_volume2 );
    //editor.show();


    //kvs::ControlScreen control_screen( &app );
    MouseMoveEvent mouse_move_event;
    kvs::glut::Screen control_screen( &app );
    //control_screen.addMouseMoveEvent( &mouse_move_event );
    control_screen.setMouseMoveEvent( &mouse_move_event );
    control_screen.setTitle( "kvs::ControlScreen" );
    control_screen.setGeometry( 512, 0, 600, 560 );

#ifdef USE_KVS
    //control_screen.attachMainScreen( p_main_screen, m_seed_point, m_compositor, m_point_renderer );
#else
    //control_screen.attachMainScreen( p_main_screen, m_seed_point, m_renderer, m_point_renderer );
#endif
    control_screen.show();

    PaintEvent paint_event;
    control_screen.addPaintEvent( &paint_event );

    const int width = control_screen.width();
    const int height = control_screen.height();
    const int ui_width = 240;

    PB_INFO pb_info( &control_screen );
    p_pb_info = &pb_info;
    pb_info.setX( width/6 );
    pb_info.setY( height - 40 );
    pb_info.setWidth( 400 );
    pb_info.setMargin( 5 );
    pb_info.setTextMargin( 5 );
    pb_info.setCaption("");
    //pb_info.deactivate();
    pb_info.show();


    PB00 pb00( &control_screen );
    p_pb00 = &pb00;
    pb00.setX( width - ui_width );
    pb00.setY( 10 );
    pb00.setWidth( 220 );
    pb00.setMargin( 5 );
    pb00.setTextMargin( 5 );
    pb00.setCaption("Read volume1(Stress)");
    pb00.show();

    PB01 pb01( &control_screen );
    p_pb01 = &pb01;
    pb01.setX( pb00.x() );
    pb01.setY( pb00.y() + pb00.height() );
    pb01.setWidth( 220 );
    pb01.setMargin( 5 );
    pb01.setTextMargin( 5 );
    pb01.setCaption("Read volume2(Displacement)");
    pb01.deactivate();
    pb01.show();

    PB02 pb02( &control_screen );
    p_pb02 = &pb02;
    pb02.setX( pb01.x() );
    pb02.setY( pb01.y() + pb01.height() );
    pb02.setWidth( 220 );
    pb02.setMargin( 5 );
    pb02.setTextMargin( 5 );
    pb02.setCaption("Hide Polygon");
    //pb02.deactivate();
    pb02.show();

    PB03 pb03( &control_screen );
    p_pb03 = &pb03;
    pb03.setX( pb02.x() );
    pb03.setY( pb02.y() + pb02.height() );
    pb03.setWidth( 220 );
    pb03.setMargin( 5 );
    pb03.setTextMargin( 5 );
    pb03.setCaption("Read CellTree(Optional)");
    //pb03.deactivate();
    pb03.show();

    SLD0 sld0( &control_screen );
    p_sld0 = &sld0;
    sld0.setX( pb03.x() );
    sld0.setY( pb03.y() + pb03.height() );
    sld0.setWidth( 220 );
    sld0.setMargin( 0 );
    sld0.setCaption("dx");
    //sld0.deactivate();
    sld0.show();

    SLD1 sld1( &control_screen );
    p_sld1 = &sld1;
    sld1.setX( sld0.x() );
    sld1.setY( sld0.y() + sld0.height() );
    sld1.setWidth( 220 );
    sld1.setMargin( 0 );
    sld1.setCaption("dy");
    //sld1.deactivate();
    sld1.show();

    SLD2 sld2( &control_screen );
    p_sld2 = &sld2;
    sld2.setX( sld1.x() );
    sld2.setY( sld1.y() + sld1.height() );
    sld2.setWidth( 220 );
    sld2.setMargin( 0 );
    sld2.setCaption("dz");
    //sld2.deactivate();
    sld2.show();

    SLD3 sld3( &control_screen );
    p_sld3 = &sld3;
    sld3.setX( sld2.x() );
    sld3.setY( sld2.y() + sld2.height() );
    sld3.setWidth( 220 );
    sld3.setMargin( 0 );
    sld3.setCaption("resx");
    //sld3.deactivate();
    sld3.show();

    SLD4 sld4( &control_screen );
    p_sld4 = &sld4;
    sld4.setX( sld3.x() );
    sld4.setY( sld3.y() + sld3.height() );
    sld4.setWidth( 220 );
    sld4.setMargin( 0 );
    sld4.setCaption("resy");
    //sld4.deactivate();
    sld4.show();

    SLD5 sld5( &control_screen );
    p_sld5 = &sld5;
    sld5.setX( sld4.x() );
    sld5.setY( sld4.y() + sld4.height() );
    sld5.setWidth( 220 );
    sld5.setMargin( 0 );
    sld5.setCaption("resz");
    //sld5.deactivate();
    sld5.show();

    PB04 pb04( &control_screen );
    p_pb04 = &pb04;
    pb04.setX( sld5.x() );
    pb04.setY( sld5.y() + sld5.height() );
    pb04.setWidth( 220 );
    pb04.setMargin( 15 );
    pb04.setTextMargin( 5 );
    pb04.setCaption("Update Streamline");
    //pb04.deactivate();
    pb04.show();

    PB05 pb05( &control_screen );
    p_pb05 = &pb05;
    pb05.setX( 10 );
    pb05.setY( pb04.y() + 10 );
    pb05.setWidth( 120 );
    pb05.setMargin( 5 );
    pb05.setTextMargin( 5 );
    pb05.setCaption("Buffer Line");
    //pb04.deactivate();
    pb05.show();

    PB06 pb06( &control_screen );
    p_pb06 = &pb06;
    pb06.setX( pb05.x() + pb05.width() );
    pb06.setY( pb05.y() );
    pb06.setWidth( 80 );
    pb06.setMargin( 5 );
    pb06.setTextMargin( 5 );
    pb06.setCaption("Clear");
    //pb04.deactivate();
    pb06.show();

    PB07 pb07( &control_screen );
    p_pb07 = &pb07;
    pb07.setX( pb06.x() + pb06.width() );
    pb07.setY( pb06.y() );
    pb07.setWidth( 160 );
    pb07.setMargin( 5 );
    pb07.setTextMargin( 5 );
    pb07.setCaption("Save CellTree.dat");
    //pb04.deactivate();
    pb07.show();

    RB00 rb00( &control_screen );
    rb00.setX( pb05.x() );
    rb00.setY( pb05.y() - pb05.height() );
    rb00.setWidth( 100 );
    rb00.setMargin( 15 );
    rb00.setCaption( "Principal" );
    rb00.setState( "true" );

    RB01 rb01( &control_screen );
    rb01.setX( rb00.x() + rb00.width() );
    rb01.setY( rb00.y() );
    rb01.setWidth( 130 );
    rb01.setMargin( 15 );
    rb01.setCaption( "Intermediate" );

    RB02 rb02( &control_screen );
    rb02.setX( rb01.x() + rb01.width() );
    rb02.setY( rb01.y() );
    rb02.setWidth( 100 );
    rb02.setMargin( 15 );
    rb02.setCaption( "Minor" );

    kvs::glut::RadioButtonGroup rbg0( &control_screen );
    rbg0.add( &rb00 );
    rbg0.add( &rb01 );
    rbg0.add( &rb02 );
    rbg0.show();

    CB00 cb00( &control_screen );
    cb00.setX( rb00.x() + rb00.width() );
    cb00.setY( rb00.y() - rb00.height() );
    cb00.setWidth( 100 );
    cb00.setMargin( 25 );
    cb00.setCaption( "Cache" );
    cb00.setState( true );
    cb00.show();

    kvs::ColorMap cmap;
    cmap.setRange( -127, 127 );
    cmap.create();

    kvs::glut::LegendBar legend_bar( &main_screen );
    legend_bar.setColorMap( cmap );
    legend_bar.show();

    return( app.run() );

}