arduino-0017-linux-x64
This commit is contained in:
		
							parent
							
								
									ed785c5798
								
							
						
					
					
						commit
						ddf58ffb08
					
				
					 436 changed files with 62981 additions and 0 deletions
				
			
		
							
								
								
									
										227
									
								
								arduino-0017-linux-x64/hardware/libraries/SoftwareSerial/SoftwareSerial.cpp
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										227
									
								
								arduino-0017-linux-x64/hardware/libraries/SoftwareSerial/SoftwareSerial.cpp
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,227 @@
 | 
			
		|||
/*
 | 
			
		||||
  SoftwareSerial.cpp - Software serial library
 | 
			
		||||
  Copyright (c) 2006 David A. Mellis.  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
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
 * Includes
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "WConstants.h"
 | 
			
		||||
#include "SoftwareSerial.h"
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
 * Definitions
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
 * Constructors
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
 | 
			
		||||
SoftwareSerial::SoftwareSerial(uint8_t receivePin, uint8_t transmitPin)
 | 
			
		||||
{
 | 
			
		||||
  _receivePin = receivePin;
 | 
			
		||||
  _transmitPin = transmitPin;
 | 
			
		||||
  _baudRate = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
 * User API
 | 
			
		||||
 ******************************************************************************/
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::begin(long speed)
 | 
			
		||||
{
 | 
			
		||||
  _baudRate = speed;
 | 
			
		||||
  _bitPeriod = 1000000 / _baudRate;
 | 
			
		||||
 | 
			
		||||
  digitalWrite(_transmitPin, HIGH);
 | 
			
		||||
  delayMicroseconds( _bitPeriod); // if we were low this establishes the end
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SoftwareSerial::read()
 | 
			
		||||
{
 | 
			
		||||
  int val = 0;
 | 
			
		||||
  int bitDelay = _bitPeriod - clockCyclesToMicroseconds(50);
 | 
			
		||||
  
 | 
			
		||||
  // one byte of serial data (LSB first)
 | 
			
		||||
  // ...--\    /--\/--\/--\/--\/--\/--\/--\/--\/--...
 | 
			
		||||
  //	 \--/\--/\--/\--/\--/\--/\--/\--/\--/
 | 
			
		||||
  //	start  0   1   2   3   4   5   6   7 stop
 | 
			
		||||
 | 
			
		||||
  while (digitalRead(_receivePin));
 | 
			
		||||
 | 
			
		||||
  // confirm that this is a real start bit, not line noise
 | 
			
		||||
  if (digitalRead(_receivePin) == LOW) {
 | 
			
		||||
    // frame start indicated by a falling edge and low start bit
 | 
			
		||||
    // jump to the middle of the low start bit
 | 
			
		||||
    delayMicroseconds(bitDelay / 2 - clockCyclesToMicroseconds(50));
 | 
			
		||||
	
 | 
			
		||||
    // offset of the bit in the byte: from 0 (LSB) to 7 (MSB)
 | 
			
		||||
    for (int offset = 0; offset < 8; offset++) {
 | 
			
		||||
	// jump to middle of next bit
 | 
			
		||||
	delayMicroseconds(bitDelay);
 | 
			
		||||
	
 | 
			
		||||
	// read bit
 | 
			
		||||
	val |= digitalRead(_receivePin) << offset;
 | 
			
		||||
    }
 | 
			
		||||
	
 | 
			
		||||
    delayMicroseconds(_bitPeriod);
 | 
			
		||||
    
 | 
			
		||||
    return val;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(uint8_t b)
 | 
			
		||||
{
 | 
			
		||||
  if (_baudRate == 0)
 | 
			
		||||
    return;
 | 
			
		||||
    
 | 
			
		||||
  int bitDelay = _bitPeriod - clockCyclesToMicroseconds(50); // a digitalWrite is about 50 cycles
 | 
			
		||||
  byte mask;
 | 
			
		||||
 | 
			
		||||
  digitalWrite(_transmitPin, LOW);
 | 
			
		||||
  delayMicroseconds(bitDelay);
 | 
			
		||||
 | 
			
		||||
  for (mask = 0x01; mask; mask <<= 1) {
 | 
			
		||||
    if (b & mask){ // choose bit
 | 
			
		||||
      digitalWrite(_transmitPin,HIGH); // send 1
 | 
			
		||||
    }
 | 
			
		||||
    else{
 | 
			
		||||
      digitalWrite(_transmitPin,LOW); // send 1
 | 
			
		||||
    }
 | 
			
		||||
    delayMicroseconds(bitDelay);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  digitalWrite(_transmitPin, HIGH);
 | 
			
		||||
  delayMicroseconds(bitDelay);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(const char *s)
 | 
			
		||||
{
 | 
			
		||||
  while (*s)
 | 
			
		||||
    print(*s++);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(char c)
 | 
			
		||||
{
 | 
			
		||||
  print((uint8_t) c);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(int n)
 | 
			
		||||
{
 | 
			
		||||
  print((long) n);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(unsigned int n)
 | 
			
		||||
{
 | 
			
		||||
  print((unsigned long) n);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(long n)
 | 
			
		||||
{
 | 
			
		||||
  if (n < 0) {
 | 
			
		||||
    print('-');
 | 
			
		||||
    n = -n;
 | 
			
		||||
  }
 | 
			
		||||
  printNumber(n, 10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(unsigned long n)
 | 
			
		||||
{
 | 
			
		||||
  printNumber(n, 10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::print(long n, int base)
 | 
			
		||||
{
 | 
			
		||||
  if (base == 0)
 | 
			
		||||
    print((char) n);
 | 
			
		||||
  else if (base == 10)
 | 
			
		||||
    print(n);
 | 
			
		||||
  else
 | 
			
		||||
    printNumber(n, base);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(void)
 | 
			
		||||
{
 | 
			
		||||
  print('\r');
 | 
			
		||||
  print('\n');  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(char c)
 | 
			
		||||
{
 | 
			
		||||
  print(c);
 | 
			
		||||
  println();  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(const char c[])
 | 
			
		||||
{
 | 
			
		||||
  print(c);
 | 
			
		||||
  println();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(uint8_t b)
 | 
			
		||||
{
 | 
			
		||||
  print(b);
 | 
			
		||||
  println();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(int n)
 | 
			
		||||
{
 | 
			
		||||
  print(n);
 | 
			
		||||
  println();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(long n)
 | 
			
		||||
{
 | 
			
		||||
  print(n);
 | 
			
		||||
  println();  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(unsigned long n)
 | 
			
		||||
{
 | 
			
		||||
  print(n);
 | 
			
		||||
  println();  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::println(long n, int base)
 | 
			
		||||
{
 | 
			
		||||
  print(n, base);
 | 
			
		||||
  println();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Private Methods /////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
void SoftwareSerial::printNumber(unsigned long n, uint8_t base)
 | 
			
		||||
{
 | 
			
		||||
  unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. 
 | 
			
		||||
  unsigned long i = 0;
 | 
			
		||||
 | 
			
		||||
  if (n == 0) {
 | 
			
		||||
    print('0');
 | 
			
		||||
    return;
 | 
			
		||||
  } 
 | 
			
		||||
 | 
			
		||||
  while (n > 0) {
 | 
			
		||||
    buf[i++] = n % base;
 | 
			
		||||
    n /= base;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (; i > 0; i--)
 | 
			
		||||
    print((char) (buf[i - 1] < 10 ? '0' + buf[i - 1] : 'A' + buf[i - 1] - 10));
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								arduino-0017-linux-x64/hardware/libraries/SoftwareSerial/SoftwareSerial.h
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										56
									
								
								arduino-0017-linux-x64/hardware/libraries/SoftwareSerial/SoftwareSerial.h
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
/*
 | 
			
		||||
  SoftwareSerial.h - Software serial library
 | 
			
		||||
  Copyright (c) 2006 David A. Mellis.  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 SoftwareSerial_h
 | 
			
		||||
#define SoftwareSerial_h
 | 
			
		||||
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
 | 
			
		||||
class SoftwareSerial
 | 
			
		||||
{
 | 
			
		||||
  private:
 | 
			
		||||
    uint8_t _receivePin;
 | 
			
		||||
    uint8_t _transmitPin;
 | 
			
		||||
    long _baudRate;
 | 
			
		||||
    int _bitPeriod;
 | 
			
		||||
    void printNumber(unsigned long, uint8_t);
 | 
			
		||||
  public:
 | 
			
		||||
    SoftwareSerial(uint8_t, uint8_t);
 | 
			
		||||
    void begin(long);
 | 
			
		||||
    int read();
 | 
			
		||||
    void print(char);
 | 
			
		||||
    void print(const char[]);
 | 
			
		||||
    void print(uint8_t);
 | 
			
		||||
    void print(int);
 | 
			
		||||
    void print(unsigned int);
 | 
			
		||||
    void print(long);
 | 
			
		||||
    void print(unsigned long);
 | 
			
		||||
    void print(long, int);
 | 
			
		||||
    void println(void);
 | 
			
		||||
    void println(char);
 | 
			
		||||
    void println(const char[]);
 | 
			
		||||
    void println(uint8_t);
 | 
			
		||||
    void println(int);
 | 
			
		||||
    void println(long);
 | 
			
		||||
    void println(unsigned long);
 | 
			
		||||
    void println(long, int);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
#######################################
 | 
			
		||||
# Syntax Coloring Map For Ultrasound
 | 
			
		||||
#######################################
 | 
			
		||||
 | 
			
		||||
#######################################
 | 
			
		||||
# Datatypes (KEYWORD1)
 | 
			
		||||
#######################################
 | 
			
		||||
 | 
			
		||||
SoftwareSerial	KEYWORD1
 | 
			
		||||
 | 
			
		||||
#######################################
 | 
			
		||||
# Methods and Functions (KEYWORD2)
 | 
			
		||||
#######################################
 | 
			
		||||
 | 
			
		||||
#######################################
 | 
			
		||||
# Constants (LITERAL1)
 | 
			
		||||
#######################################
 | 
			
		||||
 | 
			
		||||
		Reference in a new issue