Example #1
0
int main(int argc, char *argv[]) {

    clock_init();
    led_init();
    uart_init();

    //interrupt_init();

    led_display(64);
    fprintf(stream_board, "Welcome to camera test.\n\n");
    camera_reset();
    fprintf(stream_board, "Camera has reset.\n\n");
    //camera_set_baudrate(9600);
    //uart_set_baudrate(stream_cam, 9600);
    camera_snap();
    fprintf(stream_board, "Camera has snapped.\n\n");
    
    uint16_t filesize = camera_get_filesize();
    fprintf(stream_cam, "finished, filesize is %d\n", filesize);
    /* Get a block */
    camera_get_block(0, 16);
    camera_stop_image();

    while (1) {

        fprintf(stream_board, "HELLO\n");
        
        _delay_ms(3000);
        
    }
    return 0;   
}
Example #2
0
static ssize_t led_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos)
{
	char *k_buf;

	k_buf = kmalloc(count, GFP_KERNEL);
	if(copy_from_user(k_buf, buf, count))
	{
		printk("led_write() fail!\n");
		return -EFAULT;
	}
	led_display(k_buf[0]);
	kfree(k_buf);

	return 0;
}
Example #3
0
static int led_init(void)
{
	int result;
	
	result = register_chrdev(LED_MAJOR, DEVICE_NAME, &led_fops);
	if(result < 0)
	{
		printk("%d character device driver can't be registered.\n", LED_MAJOR);
		return result;
	}

	GPFCON = 0x55aa;
	GPFUP = 0xff;
	led_display(0x0);

	printk("LED driver registered!\n");
	return 0;
}
Example #4
0
int main(int argc, char *argv[]) {
    clock_init();

    uart_init();

    led_init();
    motor_controller_init();
    commander_init();

    interrupt_init();

    cmd_t cmd = 0;

    while (1) {
        cmd = get_cmd();
        if (cmd != CMD_NONE) {
            VERBOSE("motor_test", "Command recieved: [%i]", cmd);
        }
        switch (cmd) {
            case CMD_STOP:
                motor_set_movement(VERT_STOPPED, HORIZ_STOPPED);
                led_display(0);
                break;
            case CMD_FORWARD:
                motor_set_movement(VERT_FORWARD, HORIZ_STOPPED);
                led_display(1);
                break;
            case CMD_BACK:
                motor_set_movement(VERT_BACKWARD, HORIZ_STOPPED);
                led_display(2);
                break;
            case CMD_LEFT:
                motor_set_movement(VERT_STOPPED, HORIZ_LEFT);
                led_display(3);
                break;
            case CMD_RIGHT:
                motor_set_movement(VERT_STOPPED, HORIZ_RIGHT);
                led_display(4);
                break;
            case CMD_NONE:
                // Ignore it
                break;
            default:
                led_display(cmd);
                break;
        }
    }

    return 0;
}
Example #5
0
/** \brief Main function. */
int main(void)
{
	uint8_t i;
	
	/* Initialize the board hardware and system clocks. */
	board_init();
	sysclk_init();

	/* Detection of all RESET excepted WDT RESET. */
	if (reset_cause_get_causes() & ~CHIP_RESET_CAUSE_WDT) {
		/* Wait for 2 s. */
		delay_ms(2000);
		state_flag = START_OF_PROG;
		reset_cause_clear_causes(
				CHIP_RESET_CAUSE_POR |
				CHIP_RESET_CAUSE_EXTRST |
				CHIP_RESET_CAUSE_BOD_CPU |
				CHIP_RESET_CAUSE_OCD |
				CHIP_RESET_CAUSE_SOFT |
				CHIP_RESET_CAUSE_SPIKE);
	} else {
		reset_cause_clear_causes(CHIP_RESET_CAUSE_WDT);
	}

	while (true) {
		led_display(state_flag);

		switch (state_flag) {
		case START_OF_PROG:
			/* Writing test. */
			wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_8CLK);
			if (wdt_get_timeout_period() != WDT_TIMEOUT_PERIOD_8CLK) {
				state_flag = ERROR_STATE;
				break;
			}

			wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_250CLK);
			if (wdt_get_timeout_period() != WDT_TIMEOUT_PERIOD_250CLK) {
				state_flag = ERROR_STATE;
				break;
			}

			/* Wait for 2 s. */
			delay_ms(2000);
			state_flag = WDT_MCU_RESET;
			break;

		case WDT_MCU_RESET:
			/* Wait for 2 s. */
			delay_ms(2000);
			state_flag = REFRESH_NO_WIN;
			wdt_reset_mcu();
			break;

		case REFRESH_NO_WIN:
			/* Enable WDT 500 ms. */
			wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_500CLK);
			wdt_enable();
			for (i = 0; i < 8; i++) {
				/* Wait for 8x 250 ms = 2 s. */
				delay_ms(250);
				wdt_reset();
			}
			wdt_disable();
			state_flag = REFRESH_WINDOW;
			break;

		case REFRESH_WINDOW:
			/* Enable Window 250 ms & WDT 500 ms. */
			wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_500CLK);
			wdt_enable();
			if (!(wdt_set_window_period(WDT_WINDOW_PERIOD_250CLK)))
			{
				state_flag = ERROR_STATE;
				break;
			}

			if (!(wdt_enable_window_mode())) {
				state_flag = ERROR_STATE;
				break;
			}

			for (i = 0; i < 4; i++) {
				/* Wait for 500 ms. */
				delay_ms(500);
				wdt_reset();
			}
			wdt_disable();
			state_flag = WDT_RST_NO_WIN;
			break;

		case WDT_RST_NO_WIN:
			state_flag = WDT_RST_WINDOW;
			/* Enable WDT 2 s. */
			wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_2KCLK);
			wdt_enable();
			while (true) {
				/* Wait for Watchdog reset. */
			}
			break;

		case WDT_RST_WINDOW:
			state_flag = WDT_RST_RFSH_W;
			/* Enable Window 1 s & WDT 1 s. */
			wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_1KCLK);
			wdt_enable();
			if (!(wdt_set_window_period(WDT_WINDOW_PERIOD_1KCLK))) {
				state_flag = ERROR_STATE;
				break;
			}

			if (!(wdt_enable_window_mode())) {
				state_flag = ERROR_STATE;
				break;
			}

			while (true) {
				/* Wait for Watchdog reset. */
			}

			break;

		case WDT_RST_RFSH_W:
			state_flag = END_OF_PROG;
			/* Enable Window 4 s & WDT 250 ms. */
			wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_250CLK);
			wdt_enable();
			if (!(wdt_set_window_period(WDT_WINDOW_PERIOD_4KCLK))) {
				state_flag = ERROR_STATE;
				break;
			}

			if (!(wdt_enable_window_mode())) {
				state_flag = ERROR_STATE;
				break;
			}

			/* Wait for 2 s. */
			delay_ms(2000);
			wdt_reset();
			while (true) {
				/* Wait for Watchdog reset. */
			}

			break;

		case ERROR_STATE:
			while (true) {
				led_display(ERROR_STATE);
				/* Wait for 500 ms. */
				delay_ms(500);
				/* Blinking. */
				led_display(~ERROR_STATE);
				/* Wait for 500 ms. */
				delay_ms(500);
			}
		
			break;

		case END_OF_PROG:
		default:
			/* Wait for 2 s. */
			delay_ms(2000);
			reset_do_soft_reset();
			break;
		}
	}
}
UWORD32 mac_isr(UWORD32 vector, UWORD32 data)
{
    led_display(0x0F);

    if(get_machw_hprx_comp_int() == BTRUE)
    {
        rx_complete_isr(HIGH_PRI_RXQ);
        reset_machw_hprx_comp_int();
        g_test_stats.hprxci++;
    }
    else if(get_machw_rx_comp_int() == BTRUE)
    {
        rx_complete_isr(NORMAL_PRI_RXQ);
        reset_machw_rx_comp_int();
        g_test_stats.rxci++;
    }
    else if(get_machw_tx_comp_int() == BTRUE)
    {
        tx_complete_isr();
        reset_machw_tx_comp_int();
        g_test_stats.txci++;
    }
    else if(get_machw_tbtt_int() == BTRUE)
    {
        tbtt_isr();
        reset_machw_tbtt_int();
        g_test_stats.tbtti++;
    }
    else if(get_machw_error_int() == BTRUE)
    {
        error_isr();
        reset_machw_error_int();
        g_test_stats.erri++;
    }
    else if(get_machw_deauth_int() == BTRUE)
    {
        deauth_isr();
        reset_machw_deauth_int();
        g_test_stats.deauthi++;
    }
    else if(get_machw_txsus_int() == BTRUE)
    {
        reset_machw_txsus_int();
        g_test_stats.txsusi++;
    }
    else if(get_machw_radar_det_int() == BTRUE)
    {
        radar_detect_isr();
        reset_machw_radar_det_int();
        g_test_stats.radardeti++;
    }
    else if(get_machw_cap_end_int() == BTRUE)
    {
        reset_machw_cap_end_int();
        g_test_stats.capei++;
    }
    else
    {
        g_test_stats.uki++;
    }

    acknowledge_interrupt(vector);

    /* Kill time after interrupt is Acked */
    add_delay(10);

#ifndef PHY_TEST_CODE
    led_display(0xF0);
#endif /* PHY_TEST_CODE */

    return OS_ISR_HANDLED;
}