Skip to content

Commit

Permalink
Merge branch 'master' of http://github.com/energia/Energia into C2000
Browse files Browse the repository at this point in the history
  • Loading branch information
Trey German committed Oct 30, 2013
2 parents abd4251 + a6bbb54 commit 5cfd0e2
Show file tree
Hide file tree
Showing 55 changed files with 1,581 additions and 749 deletions.
26 changes: 26 additions & 0 deletions hardware/lm4f/cores/lm4f/Client.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef client_h
#define client_h
#include "Print.h"
#include "Stream.h"
#include "IPAddress.h"

class Client : public Stream {

public:
virtual int connect(IPAddress ip, uint16_t port) =0;
virtual int connect(const char *host, uint16_t port) =0;
virtual size_t write(uint8_t) =0;
virtual size_t write(const uint8_t *buf, size_t size) =0;
virtual int available() = 0;
virtual int read() = 0;
virtual int read(uint8_t *buf, size_t size) = 0;
virtual int peek() = 0;
virtual void flush() = 0;
virtual void stop() = 0;
virtual uint8_t connected() = 0;
virtual operator bool() = 0;
protected:
uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); };
};

#endif
File renamed without changes.
File renamed without changes.
40 changes: 4 additions & 36 deletions hardware/lm4f/libraries/SPI/SPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#define SSIBASE g_ulSSIBase[SSIModule]
#define NOT_ACTIVE 0xA

uint8_t SPIClass::slaveSelect = PA_5;
uint8_t SPIClass::SSIModule = NOT_ACTIVE;

static const unsigned long g_ulSSIBase[4] =
Expand Down Expand Up @@ -83,7 +82,7 @@ SPIClass::SPIClass(uint8_t module)
SSIModule = module;
}

void SPIClass::begin(uint8_t ssPin) {
void SPIClass::begin() {

unsigned long initialData = 0;

Expand All @@ -107,9 +106,6 @@ void SPIClass::begin(uint8_t ssPin) {
1 1 SSI_FRF_MOTO_MODE_3
*/

slaveSelect = ssPin;
pinMode(slaveSelect, OUTPUT);

/*
* Default to
* System Clock, SPI_MODE_0, MASTER,
Expand All @@ -125,17 +121,8 @@ void SPIClass::begin(uint8_t ssPin) {

}

void SPIClass::begin() {
//default to MSP430 launchpad ssPin
begin(PA_5);
}

void SPIClass::end(uint8_t ssPin) {
ROM_SSIDisable(SSIBASE);
}

void SPIClass::end() {
end(slaveSelect);
ROM_SSIDisable(SSIBASE);
}

void SPIClass::setBitOrder(uint8_t ssPin, uint8_t bitOrder)
Expand All @@ -162,42 +149,23 @@ void SPIClass::setClockDivider(uint8_t divider){

}

uint8_t SPIClass::transfer(uint8_t ssPin, uint8_t data, uint8_t transferMode) {
uint8_t SPIClass::transfer(uint8_t data) {

unsigned long rxData;

digitalWrite(ssPin, LOW);

ROM_SSIDataPut(SSIBASE, data);

while(ROM_SSIBusy(SSIBASE));

if(transferMode == SPI_LAST)
digitalWrite(ssPin, HIGH);
else
digitalWrite(ssPin, LOW);

ROM_SSIDataGet(SSIBASE, &rxData);

return (uint8_t) rxData;

}

uint8_t SPIClass::transfer(uint8_t ssPin, uint8_t data) {

return transfer(ssPin, data, SPI_LAST);

}

uint8_t SPIClass::transfer(uint8_t data) {

return transfer(slaveSelect, data, SPI_LAST);

}

void SPIClass::setModule(uint8_t module) {
SSIModule = module;
begin(slaveSelect);
begin();
}

SPIClass SPI;
8 changes: 1 addition & 7 deletions hardware/lm4f/libraries/SPI/SPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#define _SPI_H_INCLUDED

#include <stdio.h>
#include <Energia.h>

#define SPI_CLOCK_DIV2 2
#define SPI_CLOCK_DIV4 4
Expand All @@ -32,18 +33,14 @@ class SPIClass {

private:

static uint8_t slaveSelect;
static uint8_t SSIModule;

public:

SPIClass(void);
SPIClass(uint8_t);
static void begin(); // Default
static void begin(uint8_t);
static void end();
static void end(uint8_t);


static void setBitOrder(uint8_t);
static void setBitOrder(uint8_t, uint8_t);
Expand All @@ -53,9 +50,6 @@ class SPIClass {
static void setClockDivider(uint8_t);

static uint8_t transfer(uint8_t);
static uint8_t transfer(uint8_t, uint8_t);
static uint8_t transfer(uint8_t, uint8_t, uint8_t);


//Stellarpad-specific functions
static void setModule(uint8_t);
Expand Down
26 changes: 26 additions & 0 deletions hardware/msp430/cores/msp430/Client.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef client_h
#define client_h
#include "Print.h"
#include "Stream.h"
#include "IPAddress.h"

class Client : public Stream {

public:
virtual int connect(IPAddress ip, uint16_t port) =0;
virtual int connect(const char *host, uint16_t port) =0;
virtual size_t write(uint8_t) =0;
virtual size_t write(const uint8_t *buf, size_t size) =0;
virtual int available() = 0;
virtual int read() = 0;
virtual int read(uint8_t *buf, size_t size) = 0;
virtual int peek() = 0;
virtual void flush() = 0;
virtual void stop() = 0;
virtual uint8_t connected() = 0;
virtual operator bool() = 0;
protected:
uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); };
};

#endif
4 changes: 4 additions & 0 deletions hardware/msp430/cores/msp430/HardwareSerial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,10 @@ size_t HardwareSerial::write(uint8_t c)
return 1;
}

HardwareSerial::operator bool() {
return true;
}

void uart_rx_isr(uint8_t offset)
{
#ifdef SERIAL1_AVAILABLE
Expand Down
1 change: 1 addition & 0 deletions hardware/msp430/cores/msp430/HardwareSerial.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class HardwareSerial : public Stream
virtual void flush(void);
virtual size_t write(uint8_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};

extern HardwareSerial Serial;
Expand Down
56 changes: 56 additions & 0 deletions hardware/msp430/cores/msp430/IPAddress.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

#include <Arduino.h>
#include <IPAddress.h>

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

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;
}

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

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

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

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

bool IPAddress::operator==(const uint8_t* addr)
{
return memcmp(addr, _address, sizeof(_address)) == 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('.');
}
n += p.print(_address[3], DEC);
return n;
}

76 changes: 76 additions & 0 deletions hardware/msp430/cores/msp430/IPAddress.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
*
* MIT License:
* Copyright (c) 2011 Adrian McEwen
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* adrianm@mcqn.com 1/1/2011
*/

#ifndef IPAddress_h
#define IPAddress_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
// 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; };

public:
// Constructors
IPAddress();
IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet);
IPAddress(uint32_t address);
IPAddress(const uint8_t *address);

// 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() { return *(/*(uint32_t*)*/_address); };
bool operator==(const IPAddress& addr) { return (*(/*(uint32_t*)*/_address)) == (*(/*(uint32_t*)*/addr._address)); };
bool operator==(const uint8_t* addr);

// 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]; };

// Overloaded copy operators to allow initialisation of IPAddress objects from other types
IPAddress& operator=(const uint8_t *address);
IPAddress& operator=(uint32_t address);

virtual size_t printTo(Print& p) const;

friend class EthernetClass;
friend class UDP;
friend class Client;
friend class Server;
friend class DhcpClass;
friend class DNSClient;
};

const IPAddress INADDR_NONE(0,0,0,0);


#endif
2 changes: 1 addition & 1 deletion hardware/msp430/libraries/USBSerial/HAL_UCS.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ extern "C"
#endif

#include <stdint.h>
#include "hal_macros.h"
#include "HAL_MACROS.h"

/*******************************************************************************
* Macros
Expand Down
Loading

0 comments on commit 5cfd0e2

Please sign in to comment.