Example #1
0
int main(int argc, char **argv) {
  // Not useful
  (void) argc;
  (void) argv;

  init_malloc_lock();

  led_driver_init();
  button_driver_init();

  // Setup I2C
  i2c1_init();

  // Setup SmartSensors
  smartsensor_init();

  // Setup radio
  radio_driver_init();

  #ifdef TEST_STATIC_LUA
  xTaskCreate(angelicTask, "Angelic", 2048, NULL,
              tskIDLE_PRIORITY, NULL);
  #endif

  xTaskCreate(radioTask, "Radio", 2048, NULL, tskIDLE_PRIORITY, NULL);
  vTaskStartScheduler();
}
Example #2
0
/**
 * drivers_init:
 * @flags              : Bitmask of drivers to initialize.
 *
 * Initializes drivers.
 * @flags determines which drivers get initialized.
 **/
void drivers_init(int flags)
{
   bool video_is_threaded = false;

   if (flags & DRIVER_VIDEO_MASK)
      video_driver_unset_own_driver();
   if (flags & DRIVER_AUDIO_MASK)
      audio_driver_unset_own_driver();
   if (flags & DRIVER_INPUT_MASK)
      input_driver_unset_own_driver();
   if (flags & DRIVER_CAMERA_MASK)
      camera_driver_ctl(RARCH_CAMERA_CTL_UNSET_OWN_DRIVER, NULL);
   if (flags & DRIVER_LOCATION_MASK)
      location_driver_ctl(RARCH_LOCATION_CTL_UNSET_OWN_DRIVER, NULL);
   if (flags & DRIVER_WIFI_MASK)
      wifi_driver_ctl(RARCH_WIFI_CTL_UNSET_OWN_DRIVER, NULL);

#ifdef HAVE_MENU
   /* By default, we want the menu to persist through driver reinits. */
   menu_driver_ctl(RARCH_MENU_CTL_SET_OWN_DRIVER, NULL);
#endif

   if (flags & (DRIVER_VIDEO_MASK | DRIVER_AUDIO_MASK))
      driver_adjust_system_rates();

   if (flags & DRIVER_VIDEO_MASK)
   {
      struct retro_hw_render_callback *hwr =
         video_driver_get_hw_context();

      video_driver_monitor_reset();
      video_driver_init(&video_is_threaded);

      if (!video_driver_is_video_cache_context_ack()
            && hwr->context_reset)
         hwr->context_reset();
      video_driver_unset_video_cache_context_ack();

      rarch_ctl(RARCH_CTL_SET_FRAME_TIME_LAST, NULL);
   }

   if (flags & DRIVER_AUDIO_MASK)
   {
      audio_driver_init();
      audio_driver_new_devices_list();
   }

   /* Only initialize camera driver if we're ever going to use it. */
   if ((flags & DRIVER_CAMERA_MASK) && camera_driver_ctl(RARCH_CAMERA_CTL_IS_ACTIVE, NULL))
      camera_driver_ctl(RARCH_CAMERA_CTL_INIT, NULL);

   /* Only initialize location driver if we're ever going to use it. */
   if ((flags & DRIVER_LOCATION_MASK) && location_driver_ctl(RARCH_LOCATION_CTL_IS_ACTIVE, NULL))
      init_location();

   core_info_init_current_core();

#ifdef HAVE_MENU
   if (flags & DRIVER_VIDEO_MASK)
   {
      if (flags & DRIVER_MENU_MASK)
         menu_driver_init(video_is_threaded);
   }
#endif

   if (flags & (DRIVER_VIDEO_MASK | DRIVER_AUDIO_MASK))
   {
      /* Keep non-throttled state as good as possible. */
      if (input_driver_is_nonblock_state())
         driver_set_nonblock_state();
   }

   if (flags & DRIVER_LED_MASK)
   {
      led_driver_init();
   }

   if (flags & DRIVER_MIDI_MASK)
      midi_driver_init();
}
Example #3
0
int main()
{
	seed_rand();
	setup_mcu();
	led_driver_init();
	pwm_timer_init();
	pir_init();
	
	// the PIR sensor takes a few seconds
	_delay_ms(5000);
	
	sei();
	
	uint8_t lower_pwm= 1;
	uint8_t upper_pwm= 70;
	uint8_t base_delay_interval= 10;
	
	while(1)
	{
		while( !(PIND && PD2) );
		
		uint8_t pins[4]= { PB1, PB2, PB3, PB4 };
		uint8_t pin_starts[4];
		uint8_t pin_pwm[4];
		uint16_t delay_count= 0;
		uint8_t still_fading= 1;
			
		for( uint8_t i= 0; i < 4; ++i )
		{
			// number of base_delay_interval intervals to wait before lighting them up
			pin_starts[i]= range_rand(50);
			pin_pwm[i]= lower_pwm;
		}
			
		// fade them up
		delay_count= 0;
		still_fading= 1;
		while( still_fading )
		{
			still_fading= 0;
				
			for( uint8_t i= 0; i < 4; ++i )
			{
				if( delay_count >= pin_starts[i] && pin_pwm[i] < upper_pwm )
				{
					pin_pwm[i]++;
					start_pwm( pins[i], pin_pwm[i] );
				}
					
				if( pin_pwm[i] < upper_pwm )
					still_fading= 1;
			}
				
			_delay_ms( base_delay_interval );
			delay_count++;
		}
			
		// wait for no more motion for 5 seconds
		delay_count= 0;
		while( delay_count < (5000/base_delay_interval) )
		{
			if( PIND && PD2 )
			{
				delay_count= 0;
				continue;
			}
			
			_delay_ms( base_delay_interval );
			delay_count++;
		}
		
		// fade them off
		for( uint8_t i= 0; i < 4; ++i )
		{
			// number of base_delay_interval intervals to wait before shutting them down
			pin_starts[i]= range_rand(60);
			pin_pwm[i]= upper_pwm;
		}
		
		delay_count= 0;
		still_fading= 1;
		while( still_fading )
		{
			still_fading= 0;
			
			for( uint8_t i= 0; i < 4; ++i )
			{
				if( delay_count >= pin_starts[i] )
				{
					if( pin_pwm[i] > lower_pwm )
					{
						pin_pwm[i]--;
					
						start_pwm( pins[i], pin_pwm[i] );
					}
					
					if( pin_pwm[i] <= lower_pwm )
						stop_pwm( pins[i] );
				}
				
				if( pin_pwm[i] > lower_pwm )
					still_fading= 1;
			}
			
			_delay_ms( base_delay_interval );
			delay_count++;
		}
		
		_delay_ms(2000);
	}
	
	return 0;
}
Example #4
0
File: main.c Project: sepherro/mi
int main(void)
{

	SystemInit();

	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);	//

	STM32F4_Discovery_LEDInit(LED3); //Orange
	STM32F4_Discovery_LEDInit(LED4); //Green
	STM32F4_Discovery_LEDInit(LED5); //Red
	STM32F4_Discovery_LEDInit(LED6); //Blue

	STM32F4_Discovery_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);

	USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_CDC_cb,&USR_cb);

	led_driver_init();
	motor_driver_init();

	SysTick_Config(2100000);										//10 times a second: 168 MHz / 8 = 21 MHz
	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

	//while(1)
	//{
	//led_driver_write_data(50, 10);

	//}
	while (1)
	{

		if( usb_cdc_kbhit() )
		{
			character = usb_cdc_getc();
			usb_rx_buffer[usb_rx_ptr] = character;
			usb_rx_ptr++;

			if( usb_rx_ptr == 10 )															//upon receiving 10 bytes
			{
				if( ( usb_rx_buffer[0] == 0xAA ) && ( usb_rx_buffer[9] == 0xCC ) )			//check head and tail for correctness
				{
					usb_rx_ptr = 0;															//reset data pointer if correct
					flag_new_command_received = 1;											//set the flag if packet correct
				}
				else
				{
					usb_rx_ptr = 0;															// if packet incorrect, reset data pointer
				}
			}
		}

		if(flag_new_command_received)
		{



			flag_new_command_received = 0;
		}

		if(flag_send_sensor_data)
		{


			motor_set_speed(0x55, 0x55);

			flag_send_sensor_data = 0;
		}

		// here's how to send data through USB VCP
		/*
		sprintf(buffer_out,"LED%c = %u\r\n",c,GPIO_ReadInputDataBit(GPIOD,LED6_PIN));
		usb_cdc_printf(buffer_out);
		*/
	}
}