tetete

Dependencies:   FIFO

Files at this revision

API Documentation at this revision

Comitter:
babylonica
Date:
Thu Mar 30 02:21:20 2017 +0000
Parent:
0:907ac3c2fadc
Child:
2:243ed044a0d5
Commit message:
Minor changes

Changed in this revision

AsyncSerial.cpp Show annotated file Show diff for this revision Revisions of this file
AsyncSerial.hpp Show annotated file Show diff for this revision Revisions of this file
--- a/AsyncSerial.cpp	Thu Mar 30 02:18:24 2017 +0000
+++ b/AsyncSerial.cpp	Thu Mar 30 02:21:20 2017 +0000
@@ -1,172 +1,172 @@
-// -*- coding: utf-8 -*-
-/**
- @file		AsyncSerial.cpp
- @brief	 	Asynchronous (Non-brocking) Serial Communication library with variable length software ring buffer (FIFO). You can use also RawSerial Library's method. You can set the baudrate of the serial communication when instantiating.
- 
- @author	T.Kawamura
- @version	1.0
- @date		2017-03-29	T.Kawamura	Written for C++/mbed.
- 
- @see 
- Copyright (C) 2017 T.Kawamura.
- Released under the MIT license.
- http://opensource.org/licenses/mit-license.php
- 
-*/
-
-#include "AsyncSerial.hpp"
-
-AsyncSerial::AsyncSerial(PinName txpin, PinName rxpin, uint32_t baudrate, uint32_t buffer_size) : RawSerial(txpin, rxpin, baudrate), fifo_tx(buffer_size), fifo_rx(buffer_size){
-	//Initialize ISR
-	RawSerial::attach(this, &AsyncSerial::ISR_TX, RawSerial::TxIrq);
-	RawSerial::attach(this, &AsyncSerial::ISR_RX, RawSerial::RxIrq);
-
-	fifo_tx.clear();
-	fifo_rx.clear();
-	
-	Is_Serial_Sending = false;
-
-	return;
-}
-
-AsyncSerial::~AsyncSerial(){
-	RawSerial::attach(NULL, RawSerial::TxIrq);
-	RawSerial::attach(NULL, RawSerial::RxIrq);
-
-	return;
-}
-
-void AsyncSerial::ISR_TX(void){
-	int data;
-
-	if( fifo_tx.available() > 0 ){
-		data = (int)fifo_tx.get();
-		RawSerial::putc(data);
-	}else{
-		Is_Serial_Sending = false;
-	}	
-}
-
-void AsyncSerial::ISR_RX(void){
-	uint8_t data;
-
-	data = (uint8_t)RawSerial::getc();
-	fifo_rx.put(data);
-}
-
-uint32_t AsyncSerial::readable(void){
-	return fifo_rx.available();
-}
-
-uint8_t AsyncSerial::writeable(void){
-	return 1;
-}
-
-uint8_t AsyncSerial::getc(void){
-	return fifo_rx.get();
-}
-
-uint8_t AsyncSerial::peekc(void){
-	return fifo_rx.peek();
-}
-
-uint8_t AsyncSerial::putc(uint8_t data){
-	uint8_t status;
-
-	if( Is_Serial_Sending ){
-		status = fifo_tx.put(data);
-		if( status != 0 ){
-			return 1;
-		}else{
-			return 0;
-		}
-	}else{
-		Is_Serial_Sending = true;
-		RawSerial::putc((int)data);
-	}
-	return 1;
-}
-
-uint8_t AsyncSerial::puts(const char *str){
-	uint8_t temp, status = 0;
-
-	for(uint16_t i = 0; i < strlen(str); i++){
-		temp = (uint8_t)str[i];
-		status = fifo_tx.put(temp);
-	}
-
-	if( !Is_Serial_Sending ){
-		Is_Serial_Sending = true;
-		RawSerial::putc((int)fifo_tx.get());
-	}
-
-	if( status == 0 ){
-		return 0;
-	}
-
-	AsyncSerial::putc('\n');
-	return 1;
-}
-
-uint16_t AsyncSerial::printf(const char *format, ...){
-	int32_t wrote_length = 0;
-	char string_buffer[PRINTF_STRING_BUFFER_SIZE];
-
-	memset(string_buffer, 0, PRINTF_STRING_BUFFER_SIZE);
-	
-	va_list arg;
-	va_start(arg, format);
-	wrote_length = vsprintf(string_buffer, format, arg);
-	
-	if( wrote_length > PRINTF_STRING_BUFFER_SIZE ) {
-		error("%s @ %d : String is too large, string buffer overwrite. (Max buffer size: %d Wrote length: %d)\n", __FILE__, __LINE__, PRINTF_STRING_BUFFER_SIZE, wrote_length);
-		va_end(arg);
-		return 0;
-	}
-
-	if( wrote_length < 0 ){
-		va_end(arg);
-		error("Function vsprintf() was failed.");
-		return 0;
-	}
-
-	va_end(arg);
-	wrote_length = AsyncSerial::write((uint8_t*)string_buffer, wrote_length);
-	
-	return (uint16_t)wrote_length;
-}
-
-uint8_t AsyncSerial::write(const uint8_t *s, uint16_t length){
-	uint8_t temp, status;
-	
-	if ( length < 1 ){
-		return 0;
-	}
-
-	for(uint16_t i = 0; i < length; i++){
-		temp = (uint8_t)s[i];
-		status = fifo_tx.put(temp);
-	}
-
-	if( !Is_Serial_Sending ){
-		Is_Serial_Sending = true;
-		RawSerial::putc((int)fifo_tx.get());
-	}
-
-	if( status == 0 ){
-		return 0;
-	}
-
-	return 1;	
-}
-
-void AsyncSerial::flush(void){
-	fifo_rx.clear();
-	return;
-}
-
-void AsyncSerial::wait(void){
-	while( fifo_rx.available() > 0 ){}
-	return;
-}
+// -*- coding: utf-8 -*-
+/**
+ @file		AsyncSerial.cpp
+ @brief	 	Asynchronous (Non-blocking) Serial Communication library with variable length software ring buffer (FIFO). You can use also RawSerial Library's method. You can set the baud rate of the serial communication when instantiating.
+ 
+ @author	T.Kawamura
+ @version	1.0
+ @date		2017-03-29	T.Kawamura	Written for C++/mbed.
+ 
+ @see 
+ Copyright (C) 2017 T.Kawamura.
+ Released under the MIT license.
+ http://opensource.org/licenses/mit-license.php
+ 
+*/
+
+#include "AsyncSerial.hpp"
+
+AsyncSerial::AsyncSerial(PinName txpin, PinName rxpin, uint32_t baudrate, uint32_t buffer_size) : RawSerial(txpin, rxpin, baudrate), fifo_tx(buffer_size), fifo_rx(buffer_size){
+	//Initialize ISR
+	RawSerial::attach(this, &AsyncSerial::ISR_TX, RawSerial::TxIrq);
+	RawSerial::attach(this, &AsyncSerial::ISR_RX, RawSerial::RxIrq);
+
+	fifo_tx.clear();
+	fifo_rx.clear();
+	
+	Is_Serial_Sending = false;
+
+	return;
+}
+
+AsyncSerial::~AsyncSerial(){
+	RawSerial::attach(NULL, RawSerial::TxIrq);
+	RawSerial::attach(NULL, RawSerial::RxIrq);
+
+	return;
+}
+
+void AsyncSerial::ISR_TX(void){
+	int data;
+
+	if( fifo_tx.available() > 0 ){
+		data = (int)fifo_tx.get();
+		RawSerial::putc(data);
+	}else{
+		Is_Serial_Sending = false;
+	}	
+}
+
+void AsyncSerial::ISR_RX(void){
+	uint8_t data;
+
+	data = (uint8_t)RawSerial::getc();
+	fifo_rx.put(data);
+}
+
+uint32_t AsyncSerial::readable(void){
+	return fifo_rx.available();
+}
+
+uint8_t AsyncSerial::writeable(void){
+	return 1;
+}
+
+uint8_t AsyncSerial::getc(void){
+	return fifo_rx.get();
+}
+
+uint8_t AsyncSerial::peekc(void){
+	return fifo_rx.peek();
+}
+
+uint8_t AsyncSerial::putc(uint8_t data){
+	uint8_t status;
 
+	if( Is_Serial_Sending ){
+		status = fifo_tx.put(data);
+		if( status != 0 ){
+			return 1;
+		}else{
+			return 0;
+		}
+	}else{
+		Is_Serial_Sending = true;
+		RawSerial::putc((int)data);
+	}
+	return 1;
+}
+
+uint8_t AsyncSerial::puts(const char *str){
+	uint8_t temp, status = 0;
+
+	for(uint16_t i = 0; i < strlen(str); i++){
+		temp = (uint8_t)str[i];
+		status = fifo_tx.put(temp);
+	}
+
+	if( !Is_Serial_Sending ){
+		Is_Serial_Sending = true;
+		RawSerial::putc((int)fifo_tx.get());
+	}
+
+	if( status == 0 ){
+		return 0;
+	}
+
+	AsyncSerial::putc('\n');
+	return 1;
+}
+
+uint16_t AsyncSerial::printf(const char *format, ...){
+	int32_t wrote_length = 0;
+	char string_buffer[PRINTF_STRING_BUFFER_SIZE];
+
+	memset(string_buffer, 0, PRINTF_STRING_BUFFER_SIZE);
+	
+	va_list arg;
+	va_start(arg, format);
+	wrote_length = vsprintf(string_buffer, format, arg);
+	
+	if( wrote_length > PRINTF_STRING_BUFFER_SIZE ) {
+		error("%s @ %d : String is too large, string buffer overwrite. (Max buffer size: %d Wrote length: %d)\n", __FILE__, __LINE__, PRINTF_STRING_BUFFER_SIZE, wrote_length);
+		va_end(arg);
+		return 0;
+	}
+
+	if( wrote_length < 0 ){
+		va_end(arg);
+		error("Function vsprintf() was failed.");
+		return 0;
+	}
+
+	va_end(arg);
+	wrote_length = AsyncSerial::write((uint8_t*)string_buffer, wrote_length);
+	
+	return (uint16_t)wrote_length;
+}
+
+uint8_t AsyncSerial::write(const uint8_t *s, uint16_t length){
+	uint8_t temp, status;
+	
+	if ( length < 1 ){
+		return 0;
+	}
+
+	for(uint16_t i = 0; i < length; i++){
+		temp = (uint8_t)s[i];
+		status = fifo_tx.put(temp);
+	}
+
+	if( !Is_Serial_Sending ){
+		Is_Serial_Sending = true;
+		RawSerial::putc((int)fifo_tx.get());
+	}
+
+	if( status == 0 ){
+		return 0;
+	}
+
+	return 1;	
+}
+
+void AsyncSerial::flush(void){
+	fifo_rx.clear();
+	return;
+}
+
+void AsyncSerial::wait(void){
+	while( fifo_rx.available() > 0 ){}
+	return;
+}
+
--- a/AsyncSerial.hpp	Thu Mar 30 02:18:24 2017 +0000
+++ b/AsyncSerial.hpp	Thu Mar 30 02:21:20 2017 +0000
@@ -1,139 +1,139 @@
-// -*- coding: utf-8 -*-
-/**
- @file		AsyncSerial.cpp
- @brief	 	Asynchronous (Non-brocking) Serial Communication library with variable length software ring buffer (FIFO). You can use also RawSerial Library's method. You can set the baudrate of the serial communication when instantiating.
- 
- @author	T.Kawamura
- @version	1.0
- @date		2017-03-29	T.Kawamura	Written for C++/mbed.
- 
- @see 
- Copyright (C) 2017 T.Kawamura.
- Released under the MIT license.
- http://opensource.org/licenses/mit-license.php
- 
-*/
-
-#ifndef ASYNCSERIAL_H
-#define ASYNCSERIAL_H
-
-#include "mbed.h"
-#include "FIFO.hpp"
-#include <stdarg.h>
-#include <string.h>
-
-using namespace std;
-
-#define PRINTF_STRING_BUFFER_SIZE 256
-
-/**
-	@class	AsyncSerial
-  @brief	Asynchronous Serial Communication with FIFO
-*/
-class AsyncSerial : public RawSerial{
-private:
-
-	// FIFO is uint8_t(unsigned char) buffer;
-	FIFO<uint8_t> fifo_tx;
-	FIFO<uint8_t> fifo_rx;
-
-	bool Is_Serial_Sending;
-
-	void ISR_TX(void);
-	void ISR_RX(void);
-
-public:
-
-	/**
-		 @brief	Create a new AsyncSerial Port.
-		 @param	txpin	Tx pin name (Defined in PinName.h)
-		 @param	rxpin	Rx pin name (Defined in PinName.h)
-		 @param	baudrate	Baudrate (ex: 115200). Default value is 9600.
-		 @param	buffer_size	Buffer size. Default value is 256. (byte)
-	*/
-	AsyncSerial(PinName txpin, PinName rxpin, uint32_t baudrate=9600, uint32_t buffer_size=256);
-	/**
-		 @brief	Disable the AsyncSerial Port.
-		 @param	No parameters.
-	*/
-	virtual ~AsyncSerial(void);
-
-	/**
-		 @brief	Get how many bytes are in the rx buffer.
-		 @param	No parameters.
-		 @return	Size of readable data. (byte)
-	*/
-	virtual uint32_t readable(void);
-
-	/**
-		 @brief	Check writeable or not.
-		 @param	No Parameters.
-		 @retval	1	Always return 1 because this library provides asynchronous serial.
-	*/
-	virtual uint8_t writeable(void);
-
-	/**
-		 @brief	Get 1byte from the AsyncSerial port.
-		 @param	No parameters.
-		 @retval	All Got Data
-		 @retval	0	Error.
-	*/
-	virtual uint8_t getc(void);
-
-	/**
-		 @brief	Peek 1byte from the AsyncSerial port.
-		 @param	No parameters.
-		 @retval	ALL	Got Data
-		 @retval	0	Error.
-	*/
-	virtual uint8_t peekc(void);
-
-	/**
-		 @brief	Put 1byte to the AsyncSerial port.
-		 @param	data	A Data for put
-		 @retval	0	Error.
-		 @retval	1	Success.
-	*/
-	virtual uint8_t putc(uint8_t data);
-
-	/**
-		 @brief	Write a string with new line. The string must be NULL terminated.
-		 @param	*str	A String for write (Must be NULL terminated).
-		 @retval	0	Error.
-		 @retval	1	Success.
-	*/
-	virtual uint8_t puts(const char *str);
-
-	/**
-		 @brief	Write a formatted string to the AsyncSerial port. 
-		 @param	*format	A Formatted string for write.
-		 @retval	0	Error.
-		 @retval	1+	Wrote string size (byte).
-	*/
-	virtual uint16_t printf(const char *format, ...);
-
-	/**
-		 @brief	Write byte array to the AsyncSerial port.
-		 @param	*s	A pointer to the array for write.
-		 @param	length	Write size (byte).
-		 @retval	0	Error.
-		 @retval	1	Success.
-	*/
-	virtual uint8_t write(const uint8_t *s, uint16_t length);
-
-	/**
-		 @brief	Clear the rx buffer by compulsion.
-		 @param	No parameters.
-	*/
-	virtual void flush(void);
-
-	/**
-		 @brief	Wait until finish all sending.
-		 @param	No parameters.
-		 @return	
-	*/
-	virtual void wait(void);
-};
-
-#endif
+// -*- coding: utf-8 -*-
+/**
+ @file		AsyncSerial.cpp
+ @brief	 	Asynchronous (Non-blocking) Serial Communication library with variable length software ring buffer (FIFO). You can use also RawSerial Library's method. You can set the baud rate of the serial communication when instantiating.
+ 
+ @author	T.Kawamura
+ @version	1.0
+ @date		2017-03-29	T.Kawamura	Written for C++/mbed.
+ 
+ @see 
+ Copyright (C) 2017 T.Kawamura.
+ Released under the MIT license.
+ http://opensource.org/licenses/mit-license.php
+ 
+*/
+
+#ifndef ASYNCSERIAL_H
+#define ASYNCSERIAL_H
+
+#include "mbed.h"
+#include "FIFO.hpp"
+#include <stdarg.h>
+#include <string.h>
+
+using namespace std;
+
+#define PRINTF_STRING_BUFFER_SIZE 256
+
+/**
+	@class	AsyncSerial
+  @brief	Asynchronous Serial Communication with FIFO
+*/
+class AsyncSerial : public RawSerial{
+private:
+
+	// FIFO is uint8_t(unsigned char) buffer;
+	FIFO<uint8_t> fifo_tx;
+	FIFO<uint8_t> fifo_rx;
+
+	bool Is_Serial_Sending;
+
+	void ISR_TX(void);
+	void ISR_RX(void);
+
+public:
+
+	/**
+		 @brief	Create a new AsyncSerial Port.
+		 @param	txpin	Tx pin name (Defined in PinName.h)
+		 @param	rxpin	Rx pin name (Defined in PinName.h)
+		 @param	baudrate	Baud rate (ex: 115200). Default value is 9600.
+		 @param	buffer_size	Buffer size. Default value is 256. (byte)
+	*/
+	AsyncSerial(PinName txpin, PinName rxpin, uint32_t baudrate=9600, uint32_t buffer_size=256);
+	/**
+		 @brief	Disable the AsyncSerial Port.
+		 @param	No parameters.
+	*/
+	virtual ~AsyncSerial(void);
+
+	/**
+		 @brief	Get how many bytes are in the rx buffer.
+		 @param	No parameters.
+		 @return	Size of readable data. (byte)
+	*/
+	virtual uint32_t readable(void);
 
+	/**
+		 @brief	Check writeable or not.
+		 @param	No Parameters.
+		 @retval	1	Always return 1 because this library provides asynchronous serial.
+	*/
+	virtual uint8_t writeable(void);
+
+	/**
+		 @brief	Get 1byte from the AsyncSerial port.
+		 @param	No parameters.
+		 @retval	All Got Data
+		 @retval	0	Error.
+	*/
+	virtual uint8_t getc(void);
+
+	/**
+		 @brief	Peek 1byte from the AsyncSerial port.
+		 @param	No parameters.
+		 @retval	ALL	Got Data
+		 @retval	0	Error.
+	*/
+	virtual uint8_t peekc(void);
+
+	/**
+		 @brief	Put 1byte to the AsyncSerial port.
+		 @param	data	A Data for put
+		 @retval	0	Error.
+		 @retval	1	Success.
+	*/
+	virtual uint8_t putc(uint8_t data);
+
+	/**
+		 @brief	Write a string with new line. The string must be NULL terminated.
+		 @param	*str	A String for write (Must be NULL terminated).
+		 @retval	0	Error.
+		 @retval	1	Success.
+	*/
+	virtual uint8_t puts(const char *str);
+
+	/**
+		 @brief	Write a formatted string to the AsyncSerial port. 
+		 @param	*format	A Formatted string for write.
+		 @retval	0	Error.
+		 @retval	1+	Wrote string size (byte).
+	*/
+	virtual uint16_t printf(const char *format, ...);
+
+	/**
+		 @brief	Write byte array to the AsyncSerial port.
+		 @param	*s	A pointer to the array for write.
+		 @param	length	Write size (byte).
+		 @retval	0	Error.
+		 @retval	1	Success.
+	*/
+	virtual uint8_t write(const uint8_t *s, uint16_t length);
+
+	/**
+		 @brief	Clear the rx buffer by compulsion.
+		 @param	No parameters.
+	*/
+	virtual void flush(void);
+
+	/**
+		 @brief	Wait until finish all sending.
+		 @param	No parameters.
+		 @return	
+	*/
+	virtual void wait(void);
+};
+
+#endif
+