Changeset b6f2ebc in mainline for kernel/genarch/src/srln/srln.c
- Timestamp:
- 2009-03-12T17:52:33Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a0e1b48
- Parents:
- a7efdec
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/srln/srln.c
ra7efdec rb6f2ebc 27 27 */ 28 28 29 /** @addtogroup genarch 29 /** @addtogroup genarch 30 30 * @{ 31 31 */ 32 32 /** 33 33 * @file 34 * @brief 34 * @brief Serial line processing. 35 35 */ 36 36 … … 41 41 #include <arch.h> 42 42 43 chardev_t srlnin; 44 static chardev_t *srlnout; 43 static indev_t srlnout; 45 44 46 static void srlnin_suspend(chardev_t *d) 47 { 48 } 49 50 static void srlnin_resume(chardev_t *d) 51 { 52 } 53 54 chardev_operations_t srlnin_ops = { 55 .suspend = srlnin_suspend, 56 .resume = srlnin_resume, 45 indev_operations_t srlnout_ops = { 46 .poll = NULL 57 47 }; 58 48 59 49 static void ksrln(void *arg) 60 50 { 61 chardev_t *in = (chardev_t *) arg;62 uint8_t ch;63 64 while ( 1) {65 ch = _getc(in);51 indev_t *in = (indev_t *) arg; 52 bool cr = false; 53 54 while (true) { 55 uint8_t ch = _getc(in); 66 56 67 if (ch == '\r') 57 if ((ch == '\n') && (cr)) { 58 cr = false; 68 59 continue; 60 } 69 61 70 chardev_push_character(srlnout, ch); 62 if (ch == '\r') { 63 ch = '\n'; 64 cr = true; 65 } else 66 cr = false; 67 68 if (ch == 0x7f) 69 ch = '\b'; 70 71 indev_push_character(stdin, ch); 71 72 } 72 73 } 73 74 74 75 void srln_init(chardev_t *devout) 75 void srln_init(indev_t *devin) 76 76 { 77 thread_t *t; 78 79 chardev_initialize("srln", &srlnin, &srlnin_ops); 80 srlnout = devout; 77 indev_initialize("srln", &srlnout, &srlnout_ops); 78 thread_t *thread 79 = thread_create(ksrln, devin, TASK, 0, "ksrln", false); 81 80 82 t = thread_create(ksrln, &srlnin, TASK, 0, "ksrln", false); 83 ASSERT(t); 84 thread_ready(t); 81 if (thread) { 82 stdin = &srlnout; 83 thread_ready(thread); 84 } 85 85 } 86 86 87 87 /** @} 88 88 */ 89
Note:
See TracChangeset
for help on using the changeset viewer.