Revision 6
some more advances in func 1
timer.c | ||
---|---|---|
41 | 41 |
case 0: read_port = TIMER_0; break; |
42 | 42 |
case 1: read_port = TIMER_1; break; |
43 | 43 |
case 2: read_port = TIMER_2; break; |
44 |
default: return 1; break; |
|
44 |
default: return 1; break;
|
|
45 | 45 |
} |
46 | 46 |
if(util_sys_inb(read_port, st)) return 1; |
47 | 47 |
return 0; |
48 | 48 |
} |
49 | 49 |
|
50 |
int (timer_display_conf)(uint8_t timer, uint8_t st, |
|
51 |
enum timer_status_field field) { |
|
52 |
/* To be implemented by the students */ |
|
53 |
printf("%s is not yet implemented!\n", __func__); |
|
54 |
|
|
55 |
return 1; |
|
50 |
int (timer_display_conf)(uint8_t timer, uint8_t st, enum timer_status_field field) { |
|
51 |
union timer_status_field_val conf; |
|
52 |
uint8_t in_mode; |
|
53 |
if(field == tsf_all || field == tsf_initial){ |
|
54 |
in_mode = (st & TIMER_INMODE_MASK) >> TIMER_INMODE_POS; |
|
55 |
switch(in_mode){ |
|
56 |
case 0: conf.in_mode = INVAL_val ; break; |
|
57 |
case 1: conf.in_mode = LSB_only ; break; |
|
58 |
case 2: conf.in_mode = MSB_only ; break; |
|
59 |
case 3: conf.in_mode = MSB_after_LSB; break; |
|
60 |
default: return 1; break; |
|
61 |
} |
|
62 |
if(timer_print_config(timer, field, conf)) return 1; |
|
56 | 63 |
} |
64 |
if(field == tsf_all || field == tsf_mode){ |
|
65 |
conf.count_mode = (st & TIMER_MODE_MASK)>>TIMER_MODE_POS; |
|
66 |
if(timer_print_config(timer, field, conf)) return 1; |
|
67 |
} |
|
68 |
if(field == tsf_all || field == tsf_base){ |
|
69 |
conf.bcd = st & TIMER_BCD; |
|
70 |
if(timer_print_config(timer, field, conf)) return 1; |
|
71 |
} |
|
72 |
return 0; |
|
73 |
} |
Also available in: Unified diff