MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / keypad_read

Function keypad_read

core/keypad.c:96–129  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

94}
95
96static uint8_t keypad_read(const uint16_t pio, bool peek) {
97 uint16_t index = (pio >> 2) & 0x7F;
98 uint8_t bit_offset = (pio & 3) << 3;
99 uint8_t value = 0;
100 (void)peek;
101
102 switch(index) {
103 case 0x00:
104 value = read8(keypad.control, bit_offset);
105 break;
106 case 0x01:
107 value = read8(keypad.size, bit_offset);
108 break;
109 case 0x02:
110 value = read8(keypad.status & keypad.enable, bit_offset);
111 break;
112 case 0x03:
113 value = read8(keypad.enable, bit_offset);
114 break;
115 case 0x04: case 0x05: case 0x06: case 0x07:
116 case 0x08: case 0x09: case 0x0A: case 0x0B:
117 value = read8(keypad.data[(pio - 0x10) >> 1 & 15], pio << 3 & 8);
118 break;
119 case 0x10:
120 value = read8(keypad.gpioEnable, bit_offset);
121 break;
122 case 0x11: /* GPIO status is always 0 */
123 default:
124 break;
125 }
126
127 /* return 0x00 if unimplemented or not in range */
128 return value;
129}
130
131/* Scan next row of keypad, if scanning is enabled */
132static void keypad_scan_event(enum sched_item_id id) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected