Skip to content

Commit

Permalink
Merge branch 'ide-1.5.x' into ide-1.5.x-avr-toolchain-gcc-4.8.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Federico Fissore committed Apr 23, 2014
2 parents fd0793e + f864cdc commit e2de88c
Show file tree
Hide file tree
Showing 19 changed files with 123 additions and 82 deletions.
4 changes: 1 addition & 3 deletions hardware/arduino/avr/cores/arduino/Arduino.h
Expand Up @@ -21,6 +21,7 @@
#define Arduino_h

#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <math.h>

Expand All @@ -43,9 +44,6 @@ void yield(void);
#define OUTPUT 0x1
#define INPUT_PULLUP 0x2

#define true 0x1
#define false 0x0

#define PI 3.1415926535897932384626433832795
#define HALF_PI 1.5707963267948966192313216916398
#define TWO_PI 6.283185307179586476925286766559
Expand Down
4 changes: 2 additions & 2 deletions hardware/arduino/avr/cores/arduino/CDC.cpp
Expand Up @@ -115,11 +115,11 @@ bool WEAK CDC_Setup(Setup& setup)


int _serialPeek = -1;
void Serial_::begin(unsigned long baud_count)
void Serial_::begin(unsigned long /* baud_count */)
{
}

void Serial_::begin(unsigned long baud_count, byte config)
void Serial_::begin(unsigned long /* baud_count */, byte /* config */)
{
}

Expand Down
10 changes: 5 additions & 5 deletions hardware/arduino/avr/cores/arduino/HID.cpp
Expand Up @@ -151,7 +151,7 @@ int WEAK HID_GetInterface(u8* interfaceNum)
return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface));
}

int WEAK HID_GetDescriptor(int i)
int WEAK HID_GetDescriptor(int /* i */)
{
return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor));
}
Expand Down Expand Up @@ -510,11 +510,11 @@ void Keyboard_::releaseAll(void)

size_t Keyboard_::write(uint8_t c)
{
uint8_t p = press(c); // Keydown
uint8_t r = release(c); // Keyup
return (p); // just return the result of press() since release() almost always returns 1
uint8_t p = press(c); // Keydown
release(c); // Keyup
return p; // just return the result of press() since release() almost always returns 1
}

#endif

#endif /* if defined(USBCON) */
#endif /* if defined(USBCON) */
24 changes: 12 additions & 12 deletions hardware/arduino/avr/cores/arduino/IPAddress.cpp
Expand Up @@ -22,53 +22,53 @@

IPAddress::IPAddress()
{
memset(_address, 0, sizeof(_address));
_address.dword = 0;
}

IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet)
{
_address[0] = first_octet;
_address[1] = second_octet;
_address[2] = third_octet;
_address[3] = fourth_octet;
_address.bytes[0] = first_octet;
_address.bytes[1] = second_octet;
_address.bytes[2] = third_octet;
_address.bytes[3] = fourth_octet;
}

IPAddress::IPAddress(uint32_t address)
{
memcpy(_address, &address, sizeof(_address));
_address.dword = address;
}

IPAddress::IPAddress(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
memcpy(_address.bytes, address, sizeof(_address.bytes));
}

IPAddress& IPAddress::operator=(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
memcpy(_address.bytes, address, sizeof(_address.bytes));
return *this;
}

IPAddress& IPAddress::operator=(uint32_t address)
{
memcpy(_address, (const uint8_t *)&address, sizeof(_address));
_address.dword = address;
return *this;
}

bool IPAddress::operator==(const uint8_t* addr) const
{
return memcmp(addr, _address, sizeof(_address)) == 0;
return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0;
}

size_t IPAddress::printTo(Print& p) const
{
size_t n = 0;
for (int i =0; i < 3; i++)
{
n += p.print(_address[i], DEC);
n += p.print(_address.bytes[i], DEC);
n += p.print('.');
}
n += p.print(_address[3], DEC);
n += p.print(_address.bytes[3], DEC);
return n;
}

16 changes: 10 additions & 6 deletions hardware/arduino/avr/cores/arduino/IPAddress.h
Expand Up @@ -27,12 +27,16 @@

class IPAddress : public Printable {
private:
uint8_t _address[4]; // IPv4 address
union {
uint8_t bytes[4]; // IPv4 address
uint32_t dword;
} _address;

// Access the raw byte array containing the address. Because this returns a pointer
// to the internal structure rather than a copy of the address this function should only
// be used when you know that the usage of the returned uint8_t* will be transient and not
// stored.
uint8_t* raw_address() { return _address; };
uint8_t* raw_address() { return _address.bytes; };

public:
// Constructors
Expand All @@ -43,13 +47,13 @@ class IPAddress : public Printable {

// Overloaded cast operator to allow IPAddress objects to be used where a pointer
// to a four-byte uint8_t array is expected
operator uint32_t() const { return *((uint32_t*)_address); };
bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
operator uint32_t() const { return _address.dword; };
bool operator==(const IPAddress& addr) const { return _address.dword == addr._address.dword; };
bool operator==(const uint8_t* addr) const;

// Overloaded index operator to allow getting and setting individual octets of the address
uint8_t operator[](int index) const { return _address[index]; };
uint8_t& operator[](int index) { return _address[index]; };
uint8_t operator[](int index) const { return _address.bytes[index]; };
uint8_t& operator[](int index) { return _address.bytes[index]; };

// Overloaded copy operators to allow initialisation of IPAddress objects from other types
IPAddress& operator=(const uint8_t *address);
Expand Down
2 changes: 1 addition & 1 deletion hardware/arduino/avr/cores/arduino/Stream.cpp
Expand Up @@ -176,7 +176,7 @@ float Stream::parseFloat(char skipChar){
boolean isNegative = false;
boolean isFraction = false;
long value = 0;
char c;
int c;
float fraction = 1.0;

c = peekNextDigit();
Expand Down
16 changes: 11 additions & 5 deletions hardware/arduino/avr/cores/arduino/USBCore.cpp
Expand Up @@ -57,12 +57,18 @@ const u16 STRING_LANGUAGE[2] = {
const u8 STRING_PRODUCT[] PROGMEM = USB_PRODUCT;

#if USB_VID == 0x2341
#define USB_MANUFACTURER "Arduino LLC"
# if defined(USB_MANUFACTURER)
# undef USB_MANUFACTURER
# endif
# define USB_MANUFACTURER "Arduino LLC"
#elif USB_VID == 0x1b4f
#define USB_MANUFACTURER "SparkFun"
# if defined(USB_MANUFACTURER)
# undef USB_MANUFACTURER
# endif
# define USB_MANUFACTURER "SparkFun"
#elif !defined(USB_MANUFACTURER)
// Fall through to unknown if no manufacturer name was provided in a macro
#define USB_MANUFACTURER "Unknown"
# define USB_MANUFACTURER "Unknown"
#endif

const u8 STRING_MANUFACTURER[] PROGMEM = USB_MANUFACTURER;
Expand All @@ -88,7 +94,8 @@ volatile u8 _usbConfiguration = 0;

static inline void WaitIN(void)
{
while (!(UEINTX & (1<<TXINI)));
while (!(UEINTX & (1<<TXINI)))
;
}

static inline void ClearIN(void)
Expand Down Expand Up @@ -268,7 +275,6 @@ int USB_Send(u8 ep, const void* d, int len)

int r = len;
const u8* data = (const u8*)d;
u8 zero = ep & TRANSFER_ZERO;
u8 timeout = 250; // 250ms timeout on send? TODO
while (len)
{
Expand Down
24 changes: 12 additions & 12 deletions hardware/arduino/sam/cores/arduino/IPAddress.cpp
Expand Up @@ -22,53 +22,53 @@

IPAddress::IPAddress()
{
memset(_address, 0, sizeof(_address));
_address.dword = 0;
}

IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet)
{
_address[0] = first_octet;
_address[1] = second_octet;
_address[2] = third_octet;
_address[3] = fourth_octet;
_address.bytes[0] = first_octet;
_address.bytes[1] = second_octet;
_address.bytes[2] = third_octet;
_address.bytes[3] = fourth_octet;
}

IPAddress::IPAddress(uint32_t address)
{
memcpy(_address, &address, sizeof(_address));
_address.dword = address;
}

IPAddress::IPAddress(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
memcpy(_address.bytes, address, sizeof(_address.bytes));
}

IPAddress& IPAddress::operator=(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
memcpy(_address.bytes, address, sizeof(_address.bytes));
return *this;
}

IPAddress& IPAddress::operator=(uint32_t address)
{
memcpy(_address, (const uint8_t *)&address, sizeof(_address));
_address.dword = address;
return *this;
}

bool IPAddress::operator==(const uint8_t* addr) const
{
return memcmp(addr, _address, sizeof(_address)) == 0;
return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0;
}

size_t IPAddress::printTo(Print& p) const
{
size_t n = 0;
for (int i =0; i < 3; i++)
{
n += p.print(_address[i], DEC);
n += p.print(_address.bytes[i], DEC);
n += p.print('.');
}
n += p.print(_address[3], DEC);
n += p.print(_address.bytes[3], DEC);
return n;
}

17 changes: 11 additions & 6 deletions hardware/arduino/sam/cores/arduino/IPAddress.h
Expand Up @@ -20,18 +20,23 @@
#ifndef IPAddress_h
#define IPAddress_h

#include <stdint.h>
#include <Printable.h>

// A class to make it easier to handle and pass around IP addresses

class IPAddress : public Printable {
private:
uint8_t _address[4]; // IPv4 address
union {
uint8_t bytes[4]; // IPv4 address
uint32_t dword;
} _address;

// Access the raw byte array containing the address. Because this returns a pointer
// to the internal structure rather than a copy of the address this function should only
// be used when you know that the usage of the returned uint8_t* will be transient and not
// stored.
uint8_t* raw_address() { return _address; };
uint8_t* raw_address() { return _address.bytes; };

public:
// Constructors
Expand All @@ -42,13 +47,13 @@ class IPAddress : public Printable {

// Overloaded cast operator to allow IPAddress objects to be used where a pointer
// to a four-byte uint8_t array is expected
operator uint32_t() const { return *((uint32_t*)_address); };
bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
operator uint32_t() const { return _address.dword; };
bool operator==(const IPAddress& addr) const { return _address.dword == addr._address.dword; };
bool operator==(const uint8_t* addr) const;

// Overloaded index operator to allow getting and setting individual octets of the address
uint8_t operator[](int index) const { return _address[index]; };
uint8_t& operator[](int index) { return _address[index]; };
uint8_t operator[](int index) const { return _address.bytes[index]; };
uint8_t& operator[](int index) { return _address.bytes[index]; };

// Overloaded copy operators to allow initialisation of IPAddress objects from other types
IPAddress& operator=(const uint8_t *address);
Expand Down
2 changes: 1 addition & 1 deletion hardware/arduino/sam/cores/arduino/Stream.cpp
Expand Up @@ -176,7 +176,7 @@ float Stream::parseFloat(char skipChar){
boolean isNegative = false;
boolean isFraction = false;
long value = 0;
char c;
int c;
float fraction = 1.0;

c = peekNextDigit();
Expand Down
5 changes: 5 additions & 0 deletions hardware/arduino/sam/cores/arduino/USB/CDC.cpp
Expand Up @@ -147,10 +147,15 @@ bool WEAK CDC_Setup(Setup& setup)
int _serialPeek = -1;
void Serial_::begin(uint32_t baud_count)
{
// suppress "unused parameter" warning
(void)baud_count;
}

void Serial_::begin(uint32_t baud_count, uint8_t config)
{
// suppress "unused parameter" warning
(void)baud_count;
(void)config;
}

void Serial_::end(void)
Expand Down
9 changes: 6 additions & 3 deletions hardware/arduino/sam/cores/arduino/USB/USBCore.cpp
Expand Up @@ -69,10 +69,13 @@ const uint16_t STRING_LANGUAGE[2] = {
const uint8_t STRING_PRODUCT[] = USB_PRODUCT;

#if USB_VID == 0x2341
#define USB_MANUFACTURER "Arduino LLC"
# if defined(USB_MANUFACTURER)
# undef USB_MANUFACTURER
# endif
# define USB_MANUFACTURER "Arduino LLC"
#elif !defined(USB_MANUFACTURER)
// Fall through to unknown if no manufacturer name was provided in a macro
#define USB_MANUFACTURER "Unknown"
# define USB_MANUFACTURER "Unknown"
#endif

const uint8_t STRING_MANUFACTURER[12] = USB_MANUFACTURER;
Expand Down Expand Up @@ -139,7 +142,7 @@ uint32_t USBD_Available(uint32_t ep)
// Return number of bytes read
uint32_t USBD_Recv(uint32_t ep, void* d, uint32_t len)
{
if (!_usbConfiguration || len < 0)
if (!_usbConfiguration)
return -1;

LockEP lock(ep);
Expand Down
2 changes: 2 additions & 0 deletions hardware/arduino/sam/cores/arduino/avr/dtostrf.c
Expand Up @@ -18,6 +18,8 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

#include <stdio.h>

char *dtostrf (double val, signed char width, unsigned char prec, char *sout) {
char fmt[20];
sprintf(fmt, "%%%d.%df", width, prec);
Expand Down

0 comments on commit e2de88c

Please sign in to comment.