예제 #1
0
파일: speed.c 프로젝트: smod/ecollect
/* public functions ========================================================= */
int speed_init(void) {
    if (running) {
        goto err_running;
    }

    if ((ostream = fopen("speed", "w")) == NULL) {
        goto err_ostream;
    }

    rt_intr_create(&intr, NULL, 81, 0);
    rt_intr_enable(&intr);
    rt_mutex_create(&mutex_instant, NULL);
    rt_mutex_create(&mutex_average, NULL);
    rt_queue_create(&queue, "irq81", QUEUE_SIZE, Q_UNLIMITED, Q_FIFO);
    rt_task_spawn(&task_soft, NULL, 0, 80, 0, task_soft_routine, NULL);
    rt_task_spawn(&task_hard, NULL, 0, 90, 0, task_hard_routine, NULL);

    instant = 0;
    average = 0;

    running = 1;

    return 0;

err_ostream:
err_running:
    return -1;
}
예제 #2
0
int main (int argc, char *argv[]) {
	int err;

	mlockall(MCL_CURRENT|MCL_FUTURE);
  
  	/* Version With 4 param only on userSpace */
	err = rt_intr_create(&intr_desc,"MyIrq",70,0);
  	if (err != 0){
    		printf("rt_intr_create : error\n");
    		return 1;
	}

	err = rt_task_create(&server_desc,
		"MyIrqServer",
		TASK_STKSZ,
		TASK_PRIO,
		TASK_MODE);
  	if (err == 0)
    		rt_task_start(&server_desc,&irq_server,NULL);
  	else{
    		printf("rt_task_start : error\n");
    		return 1;
  	}
  	getchar();
  	cleanup();
  	return 0;
}
예제 #3
0
파일: ex09a1.c 프로젝트: dopefishh/des2015
void keyboard_handler(void *arg)
{
	RT_INTR intr;
	rt_intr_create(&intr, "keyboard handler", KBDIRQ, I_PROPAGATE);
	int kps = 0;
	while(1){
		rt_printf("#Kbd interrupt %d\n",
                kps += rt_intr_wait(&intr, TM_INFINITE));
	}
}
예제 #4
0
파일: ex09a2.c 프로젝트: dopefishh/des2015
//startup code
void startup()
{
	rt_intr_create(&keypress, NULL, KEYBOARD_IRQ, I_PROPAGATE);

	rt_task_create(&key_isr, NULL,0,50,0);
	rt_task_start(&key_isr, &key_handler, NULL);
	
	// Higher priority
	rt_task_create(&dummy, NULL,0,53,0);
	rt_task_start(&dummy, &dummy_task, NULL);
}
예제 #5
0
//startup code
void startup()
{
	// define interrupt
	rt_printf("Creating interrupt...\n");
	rt_intr_create(&lightsens_intr,NULL,PARA_PORT_IRQ,I_PROPAGATE);
	
	// define interrupt handler
	rt_printf("Creating handler task...\n");
	rt_task_create(&handlertask,NULL,0,99,0);

	rt_printf("Starting task...\n");
	rt_task_start(&handlertask,&handler,NULL);
}
예제 #6
0
int __init init_module(void) {
	int err;

	/* Initialisation du timer */
	if (TIMER_PERIODIC)
		err = rt_timer_set_mode(MS);
	else
		err = rt_timer_set_mode(TM_ONESHOT);

	if (err != 0) {
		printk("rt-app: %s: Error timer: %d\n", __func__, err);
		return -1;
	}

	/* Initialize FB */
	fb_init();
	printk("rt-app: Framebuffer initialized\n");

	xeno_ts_init();
	printk("rt-app: Touchscreen initialized\n");

	/* Open Philips controller
	err = pca9554_open(NULL, NULL);
	if (err != 0) {
		printk("rt-app: %s: I2C slave open error: %d\n", __func__, err);
		goto fail_open;
	}*/

	/* Initializing IRQ */
	err = rt_intr_create(&isrDesc, "IMX_I2C", INT_I2C, imx_i2c_handler, NULL, 0);
	if (err != 0) {
		printk("rt-app: %s: Error interrupt registration: %d\n", __func__, err);
		goto fail_intr;
	}
	printk("rt-app: ISR initialized\n");


	/* To Be Completed */


	return space_invader();

//fail_open:
//	pca9554_close(NULL, NULL);

fail_intr:
	xeno_ts_exit();

	return -1;
}
예제 #7
0
//startup code
void startup(){
  int err = 0;

  // set timing to ns
  rt_timer_set_mode(BASEPERIOD);

  err = rt_intr_create(&keypress, NULL, LPT1_IRQ, I_PROPAGATE);
  if(err < 0) rt_printf("Failed creating interrupt: %d: %s", err, strerror(-err)); 
    err = 0;
  err = rt_task_create(&taskP, "high", 0, 50, 0);
  if(err < 0) rt_printf("Failed to create task ; error: %d: %s", err, strerror(-err)); 
    err = 0;
  err = rt_task_start(&taskP, &task, 0);
  if(err < 0) rt_printf("Failed to start task; error: %d: %s", err, strerror(-err)); 
    err = 0;
}
예제 #8
0
int __init init_module(void) {
	int err;

	/* Initialisation du timer */
	if (TIMER_PERIODIC)
		err = rt_timer_set_mode(MS);
	else
		err = rt_timer_set_mode(TM_ONESHOT);

	if (err != 0) {
		printk("rt-app: %s: Error timer: %d\n", __func__, err);
		return -1;
	}

	/* Initialize FB */
	fb_init();
	printk("rt-app: Framebuffer initialized\n");

	xeno_ts_init();
	printk("rt-app: Touchscreen initialized\n");

	/* Initializing IRQ */
	err = rt_intr_create(&isrDesc, "IMX_I2C", INT_I2C, imx_i2c_handler, NULL, 0);
	if (err != 0) {
		printk("rt-app: %s: Error interrupt registration: %d\n", __func__, err);
		goto fail_intr;
	}
	printk("rt-app: ISR initialized\n");

	printk("rt-app: i2c driver call\n");

	printk("rt_app: i2c driver ok\n");

	return space_invader();

fail_intr:
	xeno_ts_exit();

	return -1;
}