Anonymous Anonymous - 3 months ago
399 0

No description

C

Preexam 3 spørgsmål 15

//Det ville have været smartere at lave en masse defines, men da dette burde have stået i toppen af koden, vælger jeg ikke at bruge defines, men skrive de rigtige tal direkte ind.

//Request af IRQ line gøres i open, så det skal ikke tages med i init.

static int ekg_init(void)
{

    gpio_request(101, "Sample_rdy");
	gpio_direction_input(101);

	adc_init(&ekg_adc);
	fifo_init(&ekg_fifo,250); 		// 200 Hz / 8 Hz = 25. HVIS nu brugeren ikke tømmer FIFO hver gang der læses, sætter vi tallet væsentligt højere.


	alloc_chrdev_region(&devno,0, 1,”ekg_dev_dri”); //Jeg antager at der kun er ét device. Minor starter i 0.

    // Initialize and register the character driver.
    cdev_init(&cdev, &fops);
    cdev_add(&cdev, devno, 1); //3. paramterer er number of devices (jeg antager der stadig kun er ét).

}



ssize_t ekg_read(struct file *filep, char __user *buf, size_t count, loff_t *f_pos)
{
	char read_buf[255];
	int len;
	int i = 0;
	
	len = fifo_get(&ekg_fifo, read_buf, count);
	
	copy_to_user(buf, read_buf, len);
	
	// Flytter fileptr
	*f_pos += len;
}