| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #include <stdlib.h>
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include <string.h>
 | 
					
						
							|  |  |  | #include <inttypes.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "HardwareSerial.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HardwareSerial Serial(0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HardwareSerial::HardwareSerial(int uart_nr) : _uart_nr(uart_nr), _uart(NULL) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, int8_t txPin) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if(_uart_nr == 0 && rxPin < 0 && txPin < 0) { | 
					
						
							|  |  |  |         rxPin = 3; | 
					
						
							|  |  |  |         txPin = 1; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-11-13 17:01:44 +02:00
										 |  |  |     if(_uart_nr == 1 && rxPin < 0 && txPin < 0) { | 
					
						
							|  |  |  |         rxPin = 9; | 
					
						
							|  |  |  |         txPin = 10; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if(_uart_nr == 2 && rxPin < 0 && txPin < 0) { | 
					
						
							|  |  |  |         rxPin = 16; | 
					
						
							|  |  |  |         txPin = 17; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     _uart = uartBegin(_uart_nr, baud, config, rxPin, txPin, 256, false); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void HardwareSerial::end() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if(uartGetDebug() == _uart_nr) { | 
					
						
							|  |  |  |         uartSetDebug(0); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     uartEnd(_uart); | 
					
						
							|  |  |  |     _uart = 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void HardwareSerial::setDebugOutput(bool en) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if(_uart == 0) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if(en) { | 
					
						
							| 
									
										
										
										
											2016-10-14 03:02:40 +03:00
										 |  |  |         uartSetDebug(_uart); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     } else { | 
					
						
							|  |  |  |         if(uartGetDebug() == _uart_nr) { | 
					
						
							|  |  |  |             uartSetDebug(0); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int HardwareSerial::available(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-10-14 03:02:40 +03:00
										 |  |  |     return uartAvailable(_uart); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int HardwareSerial::peek(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-10-14 03:02:40 +03:00
										 |  |  |     if (available()) { | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |         return uartPeek(_uart); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return -1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int HardwareSerial::read(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-10-14 03:02:40 +03:00
										 |  |  |     if(available()) { | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |         return uartRead(_uart); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return -1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void HardwareSerial::flush() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uartFlush(_uart); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | size_t HardwareSerial::write(uint8_t c) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uartWrite(_uart, c); | 
					
						
							|  |  |  |     return 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | size_t HardwareSerial::write(const uint8_t *buffer, size_t size) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uartWriteBuf(_uart, buffer, size); | 
					
						
							|  |  |  |     return size; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HardwareSerial::operator bool() const | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-03-20 11:26:32 +02:00
										 |  |  |     return true; | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | } |