Mercurial > ecos
view examples/serial.c @ 3077:2dde4203a2c7
* cdl/io_can.cdl: support for add/remove compiler flags
* doc/can.sgml, doc/can_driver_doc.html: updated doc reflecting API
changes (range/mask filtering, listen-only mode, return values for
xmt_msg/rcv_event, new flags).
* include/can.h: given in a match the types of function pointers for
can_callbacks_t according to the changes made in can.c.
* include/canio.h: flags field in event enlarged to 32 bits to fit
new events 'CYGNUM_CAN_EVENT_ERR_ACTIVE' and
'CYGNUM_CAN_EVENT_OVERRUN_RX_HW'. Made a 'flag' typedef.
cyg_can_event fields reordered so flags size change keeps events the
same size. Defined new filtering capabilities (range/mask). New
convenience macro CYGNUM_CAN_EVENT_ALL. New listen-only mode.
* src/can.c: can_rcv_event() and can_xmt_msg() now returns cyg_bool
(were 'void'). flags using cyg_can_event_flags_t type.
[ Bugzilla 1001453 ]
| author | sergeig |
|---|---|
| date | Thu, 09 Feb 2012 21:16:48 +0000 |
| parents | ead06911cbae |
| children |
line wrap: on
line source
/* * Written 1999-03-19 by Jonathan Larmour, Cygnus Solutions * This file is in the public domain and may be used for any purpose */ /* CONFIGURATION CHECKS */ #include <pkgconf/system.h> /* which packages are enabled/disabled */ #ifdef CYGPKG_KERNEL # include <pkgconf/kernel.h> #endif #ifdef CYGPKG_LIBC # include <pkgconf/libc.h> #endif #ifdef CYGPKG_IO_SERIAL # include <pkgconf/io_serial.h> #endif #ifndef CYGFUN_KERNEL_API_C # error Kernel API must be enabled to build this example #endif #ifndef CYGPKG_LIBC_STDIO # error C library standard I/O must be enabled to build this example #endif #ifndef CYGPKG_IO_SERIAL_HALDIAG # error I/O HALDIAG pseudo-device driver must be enabled to build this example #endif /* INCLUDES */ #include <stdio.h> /* printf */ #include <string.h> /* strlen */ #include <cyg/kernel/kapi.h> /* All the kernel specific stuff */ #include <cyg/io/io.h> /* I/O functions */ #include <cyg/hal/hal_arch.h> /* CYGNUM_HAL_STACK_SIZE_TYPICAL */ /* DEFINES */ #define NTHREADS 1 #define STACKSIZE ( CYGNUM_HAL_STACK_SIZE_TYPICAL + 4096 ) /* STATICS */ static cyg_handle_t thread[NTHREADS]; static cyg_thread thread_obj[NTHREADS]; static char stack[NTHREADS][STACKSIZE]; /* FUNCTIONS */ static void simple_prog(CYG_ADDRESS data) { cyg_io_handle_t handle; Cyg_ErrNo err; const char test_string[] = "serial example is working correctly!\n"; cyg_uint32 len = strlen(test_string); printf("Starting serial example\n"); err = cyg_io_lookup( "/dev/haldiag", &handle ); if (ENOERR == err) { printf("Found /dev/haldiag. Writing string....\n"); err = cyg_io_write( handle, test_string, &len ); } if (ENOERR == err) { printf("I think I wrote the string. Did you see it?\n"); } printf("Serial example finished\n"); } void cyg_user_start(void) { cyg_thread_create(4, simple_prog, (cyg_addrword_t) 0, "serial", (void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]); cyg_thread_resume(thread[0]); }
