コード例 #1
0
ファイル: blueled_test.c プロジェクト: nesl/ragobots
int8_t module(void *state, Message *msg)
#endif
{
  app_state *s = (app_state*) state;
  uint8_t data[1];
  switch (msg->type){
  case MSG_INIT:
	{
	  s->pid = msg->did;
	  s->state = BLUE_OFF_IDLE;
	  if (ker_pushbutton_register(s->pid)==-EINVAL) {led_red_on();}
	  break;
	}
  case MSG_PUSHBUTTON_PRESSED:
	{
	  if (s->state == BLUE_OFF_IDLE)
		{
		  s->state = BLUE_ON_BUSY;
		  s->data = 0x41;
		  ker_i2c_send_data(IRMAN_ADDRESS, &(s->data), 1, s->pid);
		  led_yellow_toggle();
		}
	  else if (s->state == BLUE_ON_IDLE)
		{
		  s->state = BLUE_OFF_BUSY;
		  s->data = 0x40;
		  ker_i2c_send_data(IRMAN_ADDRESS, &(s->data), 1, s->pid);
		  led_yellow_toggle();
		}
	  break;
	}
  case MSG_I2C_SEND_DONE:
	{
	  if (s->state == BLUE_ON_BUSY)
		{
		  s->state = BLUE_ON_IDLE;
		  led_red_toggle();
		}
	  else if (s->state == BLUE_OFF_BUSY)
		{
		  s->state = BLUE_OFF_IDLE;
		  led_red_toggle();
		}
	  break;
	}
  case MSG_FINAL:
	{
	  ker_pushbutton_deregister(s->pid);
	  break;
	}
  }
  
  return SOS_OK;
}
コード例 #2
0
ファイル: slab.c プロジェクト: nesl/sos-2x
void slab_gc( slab_t *slab, sos_pid_t pid )
{
	slab_item_t *itr = slab->head;
	slab_item_t *prev = NULL;
	//
	// Detect memory leak while marking the memory to malloc
	//
	while( itr != NULL ) {
		if( itr->alloc != itr->gc_mark ) {
			// leak!
			DEBUG_GC("leak in slab %d %d\n", itr->alloc, itr->gc_mark);
			led_red_toggle();
			itr->alloc = itr->gc_mark;
			
			if( itr->alloc == 0 && itr != slab->head ) {
				prev->next = itr->next;
				ker_free( itr );
				itr = prev;
			} else {
				// mark it used to malloc
				itr->gc_mark = 0;
				ker_gc_mark( pid, itr );
			}
		} else {
			itr->gc_mark = 0;
			ker_gc_mark( pid, itr );
		}
		prev = itr;
		itr = itr->next;
	}
}
コード例 #3
0
ファイル: led.c プロジェクト: Rodobmx/ProjetBluetooth
// ------------------------------------
// Fonction permettant d'éteindre la led verte
// ------------------------------------
void led_red_off(void)
{
  P1OUT &= ~LEDR;                // Mise à 0 du bit 6 du port 1
                                //    xxxx xxxx
                                // TODO
                                //
  led_red_toggle();
}
コード例 #4
0
ファイル: led.c プロジェクト: Rodobmx/ProjetBluetooth
// ------------------------------------
// Fonction permettant d'allumer la led verte
// ------------------------------------
void led_red_on(void)
{
  P1OUT |= LEDR;                // Mise à 1 du bit 6 du port 1
                                //    xxxx xxxx
                                // OR  1
                                //     1
  led_red_toggle();
}
コード例 #5
0
ファイル: bluetooth.c プロジェクト: Rodobmx/ProjetBluetooth
// --------------------------
// Fonction    : bllth_run
// Description : ...
// Param(s)    : ...
// Output      : ...
// --------------------------
uint8_t bltth_parse(void)
{
  uint8_t ret = 1;
  char buffer[TRAME_MAX_SIZE];/* = "-v:+100,-100;"; test*/
  while(1)
  {
  if(uart_gets_startWithAndUntil(buffer, TRAME_CAR_START, TRAME_CAR_END, TRAME_MAX_SIZE) > 0)    // Si on a reçu des caracteres
  {
    switch(buffer[TRAME_CMD_INDEX])
    {
      case TRAME_CAR_VITESSE: // Type trame recue 2 vitesse des roues   
        {
          unsigned vitesseA=0, vitesseB=0;
          
          
          /* On peut réecrire la fonction atoi pour prendre que 3 caractere si tu veux, sinon comme sa c'est plus rapide que mettre en temp */
          vitesseA = (buffer[TRAME_SENSA_INDEX+1]-48)*100 +(buffer[TRAME_SENSA_INDEX+2]-48)*10 + (buffer[TRAME_SENSA_INDEX+3]-48);
          vitesseB = (buffer[TRAME_SENSB_INDEX+1]-48)*100 +(buffer[TRAME_SENSB_INDEX+2]-48)*10 + (buffer[TRAME_SENSB_INDEX+3]-48);
          
          motor_setDir(buffer[TRAME_SENSA_INDEX],buffer[TRAME_SENSB_INDEX]);     
          motor_setSpd(vitesseA,vitesseB);
          
        }      
        break;
   
      case TRAME_CAR_AU:
        TA1CCR1 = 0;
        TA1CCR2 = 0;
        break;
                  
      case TRAME_CAR_LED:
        if(buffer[TRAME_LEDG_INDEX] == '1')
          led_green_toggle();
        /*else
          led_green_off();
        */
        if(buffer[TRAME_LEDD_INDEX]== '1')
           led_red_toggle();
        /*else
          led_red_off();*/
        break;
                    
      default:
        break;
      
    } 
  }
  }
  /* Inutile, la lecture est une tache bloquante (attente d'un caractere), on ne peut donc pas revenir sur une trame recue.
  // Clear rx buffer
  memset(rx_buff, ' ', sizeof(rx_buff) );
  rx_buff[sizeof(rx_buff)-1] = '\0';
  */
  return ret;
}
コード例 #6
0
ファイル: keyboard.c プロジェクト: NexusIF/ProjectsBackup
void keyboard_task()
{
 uint16_t input;

while(1)
{
	input = read_inputs_image();

	if(input&BUTT_0_MASK) led_green_toggle();
	if(input&BUTT_1_MASK) led_red_toggle();
	if(input&BUTT_2_MASK) {led_green_toggle();led_red_toggle();}
	if(input&BUTT_3_MASK) {led_green_set();led_red_set();}
	if(input&BUTT_4_MASK) {led_green_reset();led_red_reset();}
	if(input&BUTT_5_MASK) {led_green_set();}
	if(input&BUTT_6_MASK) {led_red_set();}
	if(input&BUTT_7_MASK) {led_green_reset();}
	if(input&BUTT_8_MASK) {led_red_reset();}
	if(input&BUTT_9_MASK) {}
	if(input&BUTT_F_MASK) {}
	if(input&BUTT_N_MASK) {}
}

}
コード例 #7
0
ファイル: led.c プロジェクト: nesl/sos-2x
int8_t ker_led(uint8_t action)
{
  switch (action){
  case LED_RED_ON:        led_red_on();        break;
  case LED_GREEN_ON:      led_green_on();      break;
  case LED_YELLOW_ON:     led_yellow_on();     break;
  case LED_RED_OFF:       led_red_off();       break;
  case LED_GREEN_OFF:     led_green_off();     break;
  case LED_YELLOW_OFF:    led_yellow_off();    break;
  case LED_RED_TOGGLE:    led_red_toggle();    break;
  case LED_GREEN_TOGGLE:  led_green_toggle();  break;
  case LED_YELLOW_TOGGLE: led_yellow_toggle(); break;
  }
  return 0;
}
コード例 #8
0
ファイル: plat_avr.c プロジェクト: nesl/splt
void fft_task( void )
{
  static fixed    imag[NFFT];
  static uint16_t i = 0;
  TASK_BEGIN();
	
  while(1) {
    TASK_SEM_WAIT(&data_ready);
    led_red_toggle();
    for(i = 0; i < NFFT; i++) {
      imag[i] = 0;
    }
    // compute FFT from 512 samples, the routines takes 200 ms
    fix_fft(processing_buf, imag, M, 0);
    processing_buf = NULL;
    led_green_toggle();
  }
  TASK_END();
}
コード例 #9
0
ファイル: nokia_5110.c プロジェクト: talpadk/minimus32-sdk
void blink(void *data){
  led_red_toggle();
  switch (state_){
  case 0:
    if (lastState_!=state_){
      pcd8544_fill_screen(0);
      pcd8544_print(4,0, "MOVEING LINES", &vertical_byte_font_6x8);
      pcd8544_print(0,1, "==============", &vertical_byte_font_6x8);
      pcd8544_print(0,2, "Displays a", &vertical_byte_font_6x8);
      pcd8544_print(0,3, "pattern that", &vertical_byte_font_6x8);
      pcd8544_print(0,4, "tests every", &vertical_byte_font_6x8);
      pcd8544_print(0,5, "pixel", &vertical_byte_font_6x8);
    }
    break;
  case 1:
    pcd8544_test(bar_);
    bar_++;
    if (bar_==8) bar_=0;
    break;
  case 2:
    if (lastState_!=state_){
      pcd8544_fill_screen(0);
      pcd8544_print(16,0, "4 COLOURS", &vertical_byte_font_6x8);
      pcd8544_print(0,1, "==============", &vertical_byte_font_6x8);
      pcd8544_print(0,2, "Fakes 4 grey", &vertical_byte_font_6x8);
      pcd8544_print(0,3, "shades by", &vertical_byte_font_6x8);
      pcd8544_print(0,4, "flickering", &vertical_byte_font_6x8);
      pcd8544_print(0,5, "the display", &vertical_byte_font_6x8);
    }
    break;
  }

    
    lastState_ = state_;
  stateTimer_--;
  if (stateTimer_==0){
    state_++;
    if (state_>GREY_HACK_STATE) state_=0;
    stateTimer_=STATE_LENGTH;
  }
}
コード例 #10
0
/**
 * SPI task
 */
void spi_task(void *pvParameters) {
     
    while (1) {
		
		if(TEST_BIT_HIGH(SSI0_SR_R, 3))
		{
			// Receive full
			led_red_toggle();
		}
		
		if(TEST_BIT_LOW(SSI0_SR_R, 1))
		{
			// Send full
			led_green_toggle();
		}
		
        spi_send_task();
        spi_receive_task();
         
        vTaskDelay(10);
    }
}