mbed(SerialHalfDuplex入り)
Fork of mbed by
Revision 97:aa8eef601944, committed 2015-03-31
- Comitter:
- yusuke_kyo
- Date:
- Tue Mar 31 09:45:52 2015 +0000
- Parent:
- 96:487b796308b0
- Child:
- 98:01a414ca7d6d
- Commit message:
- mbed
Changed in this revision
SerialHalfDuplex.h | Show annotated file Show diff for this revision Revisions of this file |
error.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SerialHalfDuplex.h Tue Mar 31 09:45:52 2015 +0000 @@ -0,0 +1,161 @@ +/* mbed Microcontroller Library - SerialHalfDuplex + * Copyright (c) 2010 ARM Limited. All rights reserved. + * jward + */ + +#ifndef MBED_SERIALHALFDUPLEX_H +#define MBED_SERIALHALFDUPLEX_H + +#include "Serial.h" +#include "PinNames.h" +#include "PeripheralNames.h" + +namespace mbed { + +/* Class: SerialHalfDuplex + * A serial port (UART) for communication with other devices, with a single + * shared transmit and receive line. + * + * If the device both transmits and receives, then both (separate) pins need + * to be defined, and tied together externally. + * + * Example: + * > // Send a byte as a master, and receive a byte as a slave + * > + * > #include "mbed.h" + * > + * > SerialHalfDuplex master(p9, p10); + * > + * > int main() { + * > int outbyte = master.putc(0x55); + * > int retbyte = master.getc(); + * > printf("Wrote: %02X Read: %02X\n", outbyte, retbyte); + * > } + */ +class SerialHalfDuplex : public Serial { + +public: + /* Constructor: SerialHalfDuplex + * Create a half-duplex serial port, connected to the specified transmit + * and receive pins. + * + * Variables: + * tx - Transmit pin + * rx - Receive pin + * + * Note: Either tx or rx may be specified as NC if unused + */ + + SerialHalfDuplex(PinName tx, PinName rx, const char *name = NULL); + +#if 0 // Inherited from Serial class, for documentation + /* Function: baud + * Set the baud rate of the serial port + * + * Variables: + * baudrate - The baudrate of the serial port (default = 9600). + */ + void baud(int baudrate); + + enum Parity { + None = 0 + , Odd + , Even + , Forced1 + , Forced0 + }; + + /* Function: format + * Set the transmission format used by the Serial port + * + * Variables: + * bits - The number of bits in a word (5-8; default = 8) + * parity - The parity used (Serial::None, Serial::Odd, +Serial::Even, Serial::Forced1, Serial::Forced0; default = Serial::None) + * stop - The number of stop bits (1 or 2; default = 1) + */ + void format(int bits = 8, Parity parity = Serial::None, int stop_bits += 1); + + /* Function: putc + * Write a character + * + * Variables: + * c - The character to write to the serial port + */ + int putc(int c); + + /* Function: getc + * Read a character + * + * Variables: + * returns - The character read from the serial port + */ + int getc(); + + /* Function: printf + * Write a formated string + * + * Variables: + * format - A printf-style format string, followed by the + * variables to use in formating the string. + */ + int printf(const char* format, ...); + + /* Function: scanf + * Read a formated string + * + * Variables: + * format - A scanf-style format string, + * followed by the pointers to variables to store the results. + */ + int scanf(const char* format, ...); + + /* Function: readable + * Determine if there is a character available to read + * + * Variables: + * returns - 1 if there is a character available to read, else 0 + */ + int readable(); + + /* Function: writeable + * Determine if there is space available to write a character + * + * Variables: + * returns - 1 if there is space to write a character, else 0 + */ + int writeable(); + + /* Function: attach + * Attach a function to call whenever a serial interrupt is generated + * + * Variables: + * fptr - A pointer to a void function, or 0 to set as none + */ + void attach(void (*fptr)(void)); + + /* Function: attach + * Attach a member function to call whenever a serial interrupt is generated + * + * Variables: + * tptr - pointer to the object to call the member function on + * mptr - pointer to the member function to be called + */ + template<typename T> + void attach(T* tptr, void (T::*mptr)(void)); + +#endif + +protected: + PinName _txpin; + int _pinfunc; + + virtual int _putc(int c); + virtual int _getc(void); + +}; // End class SerialHalfDuplex + +} // End namespace + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/error.h Tue Mar 31 09:45:52 2015 +0000 @@ -0,0 +1,61 @@ +/* mbed Microcontroller Library - error + * Copyright (c) 2006-2009 ARM Limited. All rights reserved. + * sford + */ + +#ifndef MBED_ERROR_H +#define MBED_ERROR_H + +/* Reporting Compile-Time Errors: + * To generate a fatal compile-time error, you can use the pre-processor #error directive. + * + * > #error "That shouldn't have happened!" + * + * If the compiler evaluates this line, it will report the error and stop the compile. + * + * For example, you could use this to check some user-defined compile-time variables: + * + * > #define NUM_PORTS 7 + * > #if (NUM_PORTS > 4) + * > #error "NUM_PORTS must be less than 4" + * > #endif + * + * Reporting Run-Time Errors: + * To generate a fatal run-time error, you can use the mbed error() function. + * + * > error("That shouldn't have happened!"); + * + * If the mbed running the program executes this function, it will print the + * message via the USB serial port, and then die with the blue lights of death! + * + * The message can use printf-style formatting, so you can report variables in the + * message too. For example, you could use this to check a run-time condition: + * + * > if(x >= 5) { + * > error("expected x to be less than 5, but got %d", x); + * > } + */ + +#if 0 // for documentation only +/* Function: error + * Report a fatal runtime error + * + * Outputs the specified error message to stderr so it will appear via the USB + * serial port, and then calls exit(1) to die with the blue lights of death. + * + * Variables: + * format - printf-style format string, followed by associated variables + */ +void error(const char* format, ...); +#endif + +#include <stdlib.h> + +#ifdef NDEBUG + #define error(...) (exit(1)) +#else + #include <stdio.h> + #define error(...) (fprintf(stderr, __VA_ARGS__), exit(1)) +#endif + +#endif