/*---------------------------------------------------------------------------*/ 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); }
/*---------------------------------------------------------------------------*/ 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 */ }
/*---------------------------------------------------------------------------*/ 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 */ }
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(); }
/*---------------------------------------------------------------------------*/ 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); }
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); }
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); }
/*---------------------------------------------------------------------------*/ void leds_arch_init(void) { leds_arch_set(0); }