OSDN Git Service

Added low level I/O module directory.
[kozos-expbrd/kozos_expbrd.git] / firm / sample / simple_mp3_player / os / lowio / led.c
1 #include "led.h"
2 #include "defines.h"
3 #include "portconf.h"
4
5 int led_init(void)
6 {
7   volatile uint8 mask = PORTCONF_PABIT_LED1 | PORTCONF_PABIT_LED2 | PORTCONF_PABIT_LEDG | PORTCONF_PABIT_LEDR;
8
9   /*
10    * ¥Ý¡¼¥È¥Ç¥£¥ì¥¯¥·¥ç¥ó¤òÀßÄꤹ¤ëÁ°¤Ë¥Ç¡¼¥¿¥ì¥¸¥¹¥¿¤ò½é´ü²½¤¹¤ë¡£
11    * ÉéÏÀÍý¤Ê¤Î¤Ç¡¢½é´üÃͤΥ¼¥í¤À¤È½ÐÎϤˤ·¤¿»þÅÀ¤ÇÅÀÅô¾õÂ֤Ȥʤ롣
12    */
13   *PORTCONF_PADR |= mask;
14
15   /*
16    * ¥Ý¡¼¥ÈA¤Î¥Ó¥Ã¥È2,3,6,7¤Ï½ÐÎϥݡ¼¥È¤È¤·¤ÆÀßÄꤹ¤ë¡£
17    *
18    * ¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥·¥ç¥ó¥ì¥¸¥¹¥¿¤ÏWrite Only¤Ê¤Î¤Ç¡¢
19    * Â¾¤Î¥Ó¥Ã¥È¤ÎÀßÄ꤬ɬÍפˤʤä¿»þÅÀ¤Ç¡¢
20    * ¥Ý¡¼¥ÈÆþ½ÐÎÏÀßÄê¤ò¤Þ¤È¤á¤Æ´ÉÍý¤¹¤ë¤è¤¦¤Ê
21    * ²¿¤é¤«¤ÎÂкö¤¬É¬ÍפȤʤë¤À¤í¤¦¡£
22    */
23   *PORTCONF_PADDR = 0xCC;
24
25   return 0;
26 }
27
28 int led_write(led_target_t target, led_state_t state)
29 {
30   volatile uint8 mask = 0x00;
31
32   switch (target) {
33     case Led1:
34       mask = PORTCONF_PABIT_LED1;
35       break;
36     case Led2:
37       mask = PORTCONF_PABIT_LED2;
38       break;
39     case LedG:
40       mask = PORTCONF_PABIT_LEDG;
41       break;
42     case LedR:
43       mask = PORTCONF_PABIT_LEDR;
44       break;
45     default:
46       return -1;
47   }
48
49   switch (state) {
50     case LedOn:
51       *PORTCONF_PADR &= ~mask;
52       break;
53     case LedOff:
54       *PORTCONF_PADR |= mask;
55       break;
56     default:
57       return -1;
58   }
59
60   return 0;
61 }
62
63 int led_toggle(led_target_t target)
64 {
65   volatile uint8 mask = 0x00;
66
67   switch (target) {
68     case Led1:
69       mask = PORTCONF_PABIT_LED1;
70       break;
71     case Led2:
72       mask = PORTCONF_PABIT_LED2;
73       break;
74     case LedG:
75       mask = PORTCONF_PABIT_LEDG;
76       break;
77     case LedR:
78       mask = PORTCONF_PABIT_LEDR;
79       break;
80     default:
81       return -1;
82   }
83
84   if (*PORTCONF_PADR & mask) {
85     *PORTCONF_PADR &= ~mask;
86   } else {
87     *PORTCONF_PADR |= mask;
88   }
89
90   return 0;
91 }
92