示例#1
0
/*---------------------------------------------------------------------------*/
static void
show_leds(unsigned char changed)
{
  if(changed & LEDS_GREEN) {
    /* Green did change */
    if((invert ^ leds) & LEDS_GREEN) {
      ENERGEST_ON(ENERGEST_TYPE_LED_GREEN);
    } else {
      ENERGEST_OFF(ENERGEST_TYPE_LED_GREEN);
    }
  }
  if(changed & LEDS_YELLOW) {
    if((invert ^ leds) & LEDS_YELLOW) {
      ENERGEST_ON(ENERGEST_TYPE_LED_YELLOW);
    } else {
      ENERGEST_OFF(ENERGEST_TYPE_LED_YELLOW);
    }
  }
  if(changed & LEDS_RED) {
    if((invert ^ leds) & LEDS_RED) {
      ENERGEST_ON(ENERGEST_TYPE_LED_RED);
    } else {
      ENERGEST_OFF(ENERGEST_TYPE_LED_RED);
    }
  }
  leds_arch_set(leds ^ invert);
}
示例#2
0
/*---------------------------------------------------------------------------*/
static void
thread_rollback(int fd)
{
#if INCLUDE_RAM
  unsigned char *addr;
  uint16_t size = 0;
  unsigned char *thread_mem_start = (unsigned char *)&checkpoint_thread.thread.stack;
  unsigned char *thread_mem_end = thread_mem_start + sizeof(checkpoint_thread.thread.stack);
  unsigned char *coffee_mem_start = cfs_coffee_get_protected_mem(&size);
  unsigned char *coffee_mem_end = coffee_mem_start + size;
#endif /* INCLUDE_RAM */

  /*PRINTF("protected thread memory: %u, size=%u\n", (uint16_t) thread_mem_start, sizeof(checkpoint_thread.thread.stack));*/
  /*PRINTF("protected coffee memory: %u, size=%u\n", (uint16_t) coffee_mem_start, size);*/

  /* RAM */
#if INCLUDE_RAM
  if (coffee_mem_start < thread_mem_start) {
    read(fd, RAM_START, coffee_mem_start-RAM_START);
    read(fd, coffee_mem_end, thread_mem_start-coffee_mem_end);
    read(fd, thread_mem_end, RAM_END-thread_mem_end);
  } else {
    read(fd, RAM_START, thread_mem_start-RAM_START);
    read(fd, thread_mem_end, coffee_mem_start-thread_mem_end);
    read(fd, coffee_mem_end, RAM_END-coffee_mem_end);
  }
#endif /* INCLUDE_RAM */

  /* Timers */
#if INCLUDE_TIMERS
  TACTL = read_word(fd);
  TACCTL1 = read_word(fd);
  TACCR1 = read_word(fd);
  TAR = read_word(fd);

  TBCTL = read_word(fd);
  TBCCTL1 = read_word(fd);
  TBCCR1 = read_word(fd);
  TBR = read_word(fd);
#endif /* INCLUDE_TIMERS */

  /* LEDs */
#if INCLUDE_LEDS
  leds_arch_set(read_byte(fd));
#endif /* INCLUDE_LEDS */

  /* UART DMA */
#if INCLUDE_UART_DMA
  read_word(fd); /* DMA0SZ ignored */
  uart1_reset_dma();
#endif /* INCLUDE_UART_DMA */

  /* Radio */
  /* ADC */
  /* ... */

#if INCLUDE_PADDING
  read_byte(fd);
#endif /* INCLUDE_PADDING */
}
示例#3
0
/*---------------------------------------------------------------------------*/
static void
thread_rollback(int fd)
{
#if INCLUDE_RAM
  unsigned char *addr;
  uint16_t size = 0;
  unsigned char *thread_mem_start = (unsigned char *)&checkpoint_thread.thread.stack;
  unsigned char *thread_mem_end = thread_mem_start + sizeof(checkpoint_thread.thread.stack) - 1;
  unsigned char *coffee_mem_start = cfs_coffee_get_protected_mem(&size);
  unsigned char *coffee_mem_end = coffee_mem_start + size - 1;
#endif /* INCLUDE_RAM */

  /*PRINTF("protected thread memory: %u, size=%u\n", (uint16_t) thread_mem_start, sizeof(checkpoint_thread.thread.stack));*/
  /*PRINTF("protected coffee memory: %u, size=%u\n", (uint16_t) coffee_mem_start, size);*/

  /* RAM */
#if INCLUDE_RAM
  for(addr = (unsigned char *)RAM_START;
  addr < (unsigned char *)RAM_END;
  addr++) {
    if((addr >= thread_mem_start && addr <= thread_mem_end)) {
      /* Skip */
      continue;
    }

    if((addr >= coffee_mem_start && addr <= coffee_mem_end)) {
      /* Skip */
      continue;
    }

    *addr = read_byte(fd);
  }
#endif /* INCLUDE_RAM */

  /* Timers */
#if INCLUDE_TIMERS
  TACTL = read_word(fd);
  TACCTL1 = read_word(fd);
  TACCR1 = read_word(fd);
  TAR = read_word(fd);

  TBCTL = read_word(fd);
  TBCCTL1 = read_word(fd);
  TBCCR1 = read_word(fd);
  TBR = read_word(fd);
#endif /* INCLUDE_TIMERS */

  /* LEDs */
#if INCLUDE_LEDS
  leds_arch_set(read_byte(fd));
#endif /* INCLUDE_LEDS */

  /* Radio */
  /* ADC */
  /* ... */

  read_byte(fd); /* Coffee padding byte */
}
示例#4
0
PROCESS_THREAD(hello_world_process, ev, data)
{
  int i=0;
  static struct etimer period_timer;

  PROCESS_BEGIN();
  PROCESS_PAUSE();
  
  etimer_set(&period_timer, INTERVAL);

  while(1){
	PROCESS_YIELD_UNTIL(ev == PROCESS_EVENT_TIMER);
	etimer_set(&period_timer, INTERVAL);
	if(i^=0)leds_arch_set(0); else leds_arch_set(LEDS_ALL);
  }
  
  PROCESS_END();
}
示例#5
0
/*---------------------------------------------------------------------------*/
void
leds_arch_init(void)
{
  vAHI_DioSetDirection(0, E_AHI_DIO8_INT|
                          E_AHI_DIO9_INT|
                          E_AHI_DIO10_INT|
                          E_AHI_DIO16_INT);
  leds_arch_set(0);
}
示例#6
0
void leds_arch_init(void)
{
	RCC->AHBENR |= RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN;

	MODIFY_REG(GPIOB->MODER, GPIO_MODER_MODER2, GPIO_Mode_OUT * GPIO_MODER_MODER2_0);
	MODIFY_REG(GPIOB->OTYPER, GPIO_OTYPER_OT_2, GPIO_OType_PP * GPIO_OTYPER_OT_2);
	MODIFY_REG(GPIOB->PUPDR, GPIO_PUPDR_PUPDR2, GPIO_PuPd_NOPULL * GPIO_PUPDR_PUPDR2_0);

	MODIFY_REG(GPIOC->MODER, GPIO_MODER_MODER13, GPIO_Mode_OUT * GPIO_MODER_MODER13_0);
	MODIFY_REG(GPIOC->OTYPER, GPIO_OTYPER_OT_13, GPIO_OType_PP * GPIO_OTYPER_OT_13);
	MODIFY_REG(GPIOC->PUPDR, GPIO_PUPDR_PUPDR13, GPIO_PuPd_NOPULL * GPIO_PUPDR_PUPDR13_0);

	leds_arch_set(0);
}
示例#7
0
void platform_leds_setup(void)
{
    gpio_enable(LED_0_PORT);
    gpio_enable(LED_1_PORT);
    gpio_enable(LED_2_PORT);

    // Set output pins B10 and B12
    gpio_set_output(LED_0_PORT, LED_0_PIN);
    gpio_set_output(LED_1_PORT, LED_1_PIN);
    gpio_set_output(LED_2_PORT, LED_2_PIN);

    // Clear LEDs
    leds_arch_set(0);
}
示例#8
0
/*---------------------------------------------------------------------------*/
void
leds_arch_init(void)
{
  leds_arch_set(0);
}