Mercurial > ecos
comparison examples/serial.c @ 168:ead06911cbae
Add up-to-date examples
| author | jlarmour |
|---|---|
| date | Wed, 04 Jul 2001 17:34:09 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 167:59f91bb9f684 | 168:ead06911cbae |
|---|---|
| 1 /* | |
| 2 * Written 1999-03-19 by Jonathan Larmour, Cygnus Solutions | |
| 3 * This file is in the public domain and may be used for any purpose | |
| 4 */ | |
| 5 | |
| 6 /* CONFIGURATION CHECKS */ | |
| 7 | |
| 8 #include <pkgconf/system.h> /* which packages are enabled/disabled */ | |
| 9 #ifdef CYGPKG_KERNEL | |
| 10 # include <pkgconf/kernel.h> | |
| 11 #endif | |
| 12 #ifdef CYGPKG_LIBC | |
| 13 # include <pkgconf/libc.h> | |
| 14 #endif | |
| 15 #ifdef CYGPKG_IO_SERIAL | |
| 16 # include <pkgconf/io_serial.h> | |
| 17 #endif | |
| 18 | |
| 19 #ifndef CYGFUN_KERNEL_API_C | |
| 20 # error Kernel API must be enabled to build this example | |
| 21 #endif | |
| 22 | |
| 23 #ifndef CYGPKG_LIBC_STDIO | |
| 24 # error C library standard I/O must be enabled to build this example | |
| 25 #endif | |
| 26 | |
| 27 #ifndef CYGPKG_IO_SERIAL_HALDIAG | |
| 28 # error I/O HALDIAG pseudo-device driver must be enabled to build this example | |
| 29 #endif | |
| 30 | |
| 31 /* INCLUDES */ | |
| 32 | |
| 33 #include <stdio.h> /* printf */ | |
| 34 #include <string.h> /* strlen */ | |
| 35 #include <cyg/kernel/kapi.h> /* All the kernel specific stuff */ | |
| 36 #include <cyg/io/io.h> /* I/O functions */ | |
| 37 #include <cyg/hal/hal_arch.h> /* CYGNUM_HAL_STACK_SIZE_TYPICAL */ | |
| 38 | |
| 39 | |
| 40 | |
| 41 /* DEFINES */ | |
| 42 | |
| 43 #define NTHREADS 1 | |
| 44 #define STACKSIZE ( CYGNUM_HAL_STACK_SIZE_TYPICAL + 4096 ) | |
| 45 | |
| 46 /* STATICS */ | |
| 47 | |
| 48 static cyg_handle_t thread[NTHREADS]; | |
| 49 static cyg_thread thread_obj[NTHREADS]; | |
| 50 static char stack[NTHREADS][STACKSIZE]; | |
| 51 | |
| 52 /* FUNCTIONS */ | |
| 53 | |
| 54 static void simple_prog(CYG_ADDRESS data) | |
| 55 { | |
| 56 cyg_io_handle_t handle; | |
| 57 Cyg_ErrNo err; | |
| 58 const char test_string[] = "serial example is working correctly!\n"; | |
| 59 cyg_uint32 len = strlen(test_string); | |
| 60 | |
| 61 printf("Starting serial example\n"); | |
| 62 | |
| 63 err = cyg_io_lookup( "/dev/haldiag", &handle ); | |
| 64 | |
| 65 if (ENOERR == err) { | |
| 66 printf("Found /dev/haldiag. Writing string....\n"); | |
| 67 err = cyg_io_write( handle, test_string, &len ); | |
| 68 } | |
| 69 | |
| 70 if (ENOERR == err) { | |
| 71 printf("I think I wrote the string. Did you see it?\n"); | |
| 72 } | |
| 73 | |
| 74 printf("Serial example finished\n"); | |
| 75 | |
| 76 } | |
| 77 | |
| 78 void cyg_user_start(void) | |
| 79 { | |
| 80 cyg_thread_create(4, simple_prog, (cyg_addrword_t) 0, "serial", | |
| 81 (void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]); | |
| 82 cyg_thread_resume(thread[0]); | |
| 83 } |
