You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					70 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					70 lines
				
				2.0 KiB
			|   
											14 years ago
										 | /*
 | ||
|  |   HardwareSerial.h - Hardware serial library for Wiring | ||
|  |   Copyright (c) 2006 Nicholas Zambetti.  All right reserved. | ||
|  | 
 | ||
|  |   This library is free software; you can redistribute it and/or | ||
|  |   modify it under the terms of the GNU Lesser General Public | ||
|  |   License as published by the Free Software Foundation; either | ||
|  |   version 2.1 of the License, or (at your option) any later version. | ||
|  | 
 | ||
|  |   This library is distributed in the hope that it will be useful, | ||
|  |   but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  |   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||
|  |   Lesser General Public License for more details. | ||
|  | 
 | ||
|  |   You should have received a copy of the GNU Lesser General Public | ||
|  |   License along with this library; if not, write to the Free Software | ||
|  |   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | ||
|  | */ | ||
|  | 
 | ||
|  | #ifndef HardwareSerial_h
 | ||
|  | #define HardwareSerial_h
 | ||
|  | 
 | ||
|  | #include <inttypes.h>
 | ||
|  | 
 | ||
|  | #include "Print.h"
 | ||
|  | 
 | ||
|  | struct ring_buffer; | ||
|  | 
 | ||
|  | class HardwareSerial : public Print | ||
|  | { | ||
|  |   private: | ||
|  |     ring_buffer *_rx_buffer; | ||
|  |     volatile uint8_t *_ubrrh; | ||
|  |     volatile uint8_t *_ubrrl; | ||
|  |     volatile uint8_t *_ucsra; | ||
|  |     volatile uint8_t *_ucsrb; | ||
|  |     volatile uint8_t *_udr; | ||
|  |     uint8_t _rxen; | ||
|  |     uint8_t _txen; | ||
|  |     uint8_t _rxcie; | ||
|  |     uint8_t _udre; | ||
|  |     uint8_t _u2x; | ||
|  |   public: | ||
|  |     HardwareSerial(ring_buffer *rx_buffer, | ||
|  |       volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, | ||
|  |       volatile uint8_t *ucsra, volatile uint8_t *ucsrb, | ||
|  |       volatile uint8_t *udr, | ||
|  |       uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); | ||
|  |     void begin(long); | ||
|  |     void end(); | ||
|  |     uint8_t available(void); | ||
|  |     int read(void); | ||
|  |     void flush(void); | ||
|  |     virtual void write(uint8_t); | ||
|  |     using Print::write; // pull in write(str) and write(buf, size) from Print
 | ||
|  | }; | ||
|  | 
 | ||
|  | extern HardwareSerial Serial; | ||
|  | 
 | ||
|  | #if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1280__)
 | ||
|  | extern HardwareSerial Serial1; | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if defined(__AVR_ATmega1280__)
 | ||
|  | extern HardwareSerial Serial2; | ||
|  | extern HardwareSerial Serial3; | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 |