Example #1
0
File: clock.c Project: BruceYi/okl4
void
clock_test(void)
{
    int error;
    int border_timeout;

    error = okn_syscall_interrupt_register(CLOCK_IRQ);
    assert(!error);

    /* Find the border value that is the first value of timeout that will
     * actually generate an interrupt. */
    for (border_timeout = 1;; border_timeout++) {
        int interrupt_received;
        clock_pause(border_timeout, &interrupt_received);
        if (interrupt_received) {
            break;
        }
    }

    /* Test the range just above the border which is where most timeout
     * problems are. */
    for (int k = 0; k < 10; k++) {
        for (int timeout = max(1, border_timeout - 10);
                timeout < 3 * border_timeout + 10;
                timeout++) {
            for (int j = 0; j < 10; j++) {
                int interrupt_received;
                clock_pause(timeout, &interrupt_received);
            }
        }
    }

    error = okn_syscall_interrupt_deregister(CLOCK_IRQ);
    assert(!error);
}
Example #2
0
void blinking_leds(enabled_led_modes_t mode)
{
	switching_led_check_mode(mode);
	clock_pause(100);
	switching_led_check_mode(mode);
	clock_pause(100);
	switching_led_check_mode(mode);
	clock_pause(100);
	switching_led_check_mode(mode);
	clock_pause(100);
	LEDS_OFF_CHECK_MODE(mode);
}
Example #3
0
/* Main task, initialize hardware and start the FreeRTOS scheduler */
int main(void)
{
	// stop the watchdog timer
	WDTCTL = WDTPW | WDTHOLD | WDTCNTCL | WDTSSEL;
	
	immediate_debug(pdFALSE);
	
	/******************************************************/
	/* Initialize the SmartGrains hardware                */
	/******************************************************/
	hardware_setup();
	debug_init(0);

	queue_app = xQueueCreate( 4, sizeof( main_event_t ) );
	// buffers initialization
	if (buffers_init()!=START_SUCCESS) { debug("Buffer init failed!!\r\n"); }
	

	/********************************************************/
	/* Initialize the STACK including smart_mac & smart_nwk */
	/********************************************************/
	if (stack_init()==START_SUCCESS) { debug("OK\r\n");}
	else { debug("failed!!\r\n"); }
	address_utils_debug_address(&lgaddr_mac, ADDR_FULL);


	// blinking LEDs
	// Code is Green-Red-Green
	LEDS_OFF_CHECK_MODE(led_mode);
	LED0_ON_CHECK_MODE(led_mode);		// G
	clock_pause(200); LED0_OFF_CHECK_MODE(led_mode); clock_pause(200);
	LED1_ON_CHECK_MODE(led_mode);		// R
	clock_pause(200); LED1_OFF_CHECK_MODE(led_mode); clock_pause(200);
	LED0_ON_CHECK_MODE(led_mode);		// G
	clock_pause(200); LED0_OFF_CHECK_MODE(led_mode);
	
	// Demo App
	xTaskCreate( vDemo, "AppDemo", configMINIMAL_STACK_SIZE+200, NULL, (tskIDLE_PRIORITY + 1 ), NULL );
	
	vTaskStartScheduler();
	return 0;
}
Example #4
0
/**
 * \Function cDemo
 * \Brief    Some Demo
 */
static void vDemo( void *pvParameters )
{
	// I am Node 1
	uint8_t trial = 0;
	uint8_t main_frame_type;
	uint8_t src_detection_state;
	main_event_t curr_event;

	long_addr_t dst_addr= {{{0xff, 0, 0, 0}}, {0, 0xff}, {2, 2},{PAN_ID_LOW, PAN_ID_HIGH}, ADDR_SMG} ;

	uint8_t msg[8];
	uint8_t msg_length = 8;

	msg[0] = MURPHY_MSG_TYPE;
	msg[1] = msg_length;
	msg[2] = 0x0a;
	msg[3] = 0x0b;
	
	clock_pause(1500);

	// fill the msg as you wish !
	while(1)
	{
		if(xQueueReceive(queue_app, &(curr_event), 3000 / portTICK_RATE_MS) == pdTRUE)
		{
			debug("rcv\r\n");
			switch (curr_event.main_event_type)
			{
				case MAIN_BUFFER_UP:
					main_frame_type = curr_event.pbuf->buf[curr_event.pbuf->buf_ptr++];
					switch(main_frame_type)
					{
						case MURPHY_MSG_TYPE:
							
							src_detection_state = curr_event.pbuf->buf[curr_event.pbuf->buf_ptr++];
							if(src_detection_state == 0)
							{
								debug_printf("I have received an Empty MSG from :\r\n");
								
								LED1_ON_CHECK_MODE(led_mode); LED0_OFF_CHECK_MODE(led_mode);	
							}
							else
							{
								debug_printf("I have received a Full MSG from :\r\n");

								LED0_ON_CHECK_MODE(led_mode); LED1_OFF_CHECK_MODE(led_mode);
							}
							address_utils_debug_address(&curr_event.pbuf->src_addr, ADDR_FULL);
						break;
						default:
							
						break;
					}
				stack_buffer_free(curr_event.pbuf);
				curr_event.pbuf = 0;
				break;
				case MAIN_BUFFER_DOWN:
					/* ********************************************** */
					/* send message to nwk, if main_running is pdTRUE */
					/* ********************************************** */
					smart_nwk_handle(curr_event.pbuf);
				break;
				default:
				stack_buffer_free(curr_event.pbuf);
				curr_event.pbuf = 0;
				
				break;

				clock_pause(500);
				LEDS_OFF_CHECK_MODE(led_mode);
				
			}

		}
	}
}