Changeset 79460ae in mainline for kbd/generic/key_buffer.c
- Timestamp:
- 2006-05-30T10:40:17Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 44c6d88d
- Parents:
- f25b73d6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kbd/generic/key_buffer.c
rf25b73d6 r79460ae 28 28 29 29 #include <key_buffer.h> 30 #include <libadt/fifo.h>31 32 #define KBD_BUFFER_SIZE 128 /**< Size of buffer for pressed keys */33 34 FIFO_INITIALIZE_STATIC(buffer, char, KBD_BUFFER_SIZE); /**< Fifo for storing pressed keys */35 fifo_count_t buffer_items; /**< Counter of used items for prevent fifo overflow */36 30 37 31 /** Clear key buffer. 38 32 */ 39 void key _buffer_free(void)33 void keybuffer_free(keybuffer_t *keybuffer) 40 34 { 41 buffer_items = 0; 42 buffer.head = buffer.tail = 0; 35 36 keybuffer->items = 0; 37 keybuffer->head = keybuffer->tail = keybuffer->items = 0; 43 38 } 44 39 … … 46 41 * 47 42 */ 48 void key _buffer_init(void)43 void keybuffer_init(keybuffer_t *keybuffer) 49 44 { 50 key _buffer_free();45 keybuffer_free(keybuffer); 51 46 } 52 47 … … 56 51 * @return empty buffer space 57 52 */ 58 int key _buffer_available(void)53 int keybuffer_available(keybuffer_t *keybuffer) 59 54 { 60 return K BD_BUFFER_SIZE - buffer_items;55 return KEYBUFFER_SIZE - keybuffer->items; 61 56 } 62 57 … … 64 59 * @return nonzero, if buffer is not empty. 65 60 */ 66 int key _buffer_empty(void)61 int keybuffer_empty(keybuffer_t *keybuffer) 67 62 { 68 return ( buffer_items == 0);63 return (keybuffer->items == 0); 69 64 } 70 65 … … 73 68 * @param key code of stored key 74 69 */ 75 void key _buffer_push(char key)70 void keybuffer_push(keybuffer_t *keybuffer, char key) 76 71 { 77 if ( buffer_items < KBD_BUFFER_SIZE) {78 fifo_push(buffer,key);79 buffer_items++;72 if (keybuffer->items < KEYBUFFER_SIZE) { 73 keybuffer->fifo[keybuffer->tail = (keybuffer->tail + 1) < keybuffer->items ? (keybuffer->tail + 1) : 0] = (key); 74 keybuffer->items++; 80 75 } 81 76 } … … 85 80 * @return zero on empty buffer, nonzero else 86 81 */ 87 int key _buffer_pop(char *c)82 int keybuffer_pop(keybuffer_t *keybuffer, char *c) 88 83 { 89 if ( buffer_items > 0) {90 buffer_items--;91 *c = fifo_pop(buffer);84 if (keybuffer->items > 0) { 85 keybuffer->items--; 86 *c = keybuffer->fifo[keybuffer->head = (keybuffer->head + 1) < keybuffer->items ? (keybuffer->head + 1) : 0]; 92 87 return 1; 93 88 }
Note:
See TracChangeset
for help on using the changeset viewer.