Cubic Hand project for EECS 249A course.
Dependencies: MMA8451Q TSI cc3000_hostdriver_mbedsocket NVIC_set_all_priorities mbed Multi_WS2811
Diff: GloveWifi.cpp
- Revision:
- 3:5f5d75cba8e1
- Child:
- 7:79cd3cf6daea
diff -r 587189fb6d87 -r 5f5d75cba8e1 GloveWifi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GloveWifi.cpp Fri Dec 05 21:35:37 2014 +0000 @@ -0,0 +1,86 @@ +#include "GloveWifi.h" +#include "mbed.h" +#include "cc3000.h" +#include "TCPSocketConnection.h" +#include "TCPSocketServer.h" +#include "NVIC_set_all_priorities.h" + +#define SSID "CubeNet" +#define PASSWORD "modelbased" + +#define MMA8451_I2C_ADDRESS (0x1d<<1) + + +using namespace mbed_cc3000; + + +GloveWifi::GloveWifi() : +ECHO_SERVER_ADDRESS("192.168.1.33"), +ECHO_SERVER_PORT(2000) +{ +} + +GloveWifi::~GloveWifi() +{ +} + +void GloveWifi::Init() +{ + + pc = new Serial(USBTX, USBRX); + //Init from the cc3000 example + DigitalOut PWR_EN1(PTB2); + DigitalOut PWR_EN2(PTB3); + + // Wi-Go set current to 500mA since we're turning on the Wi-Fi + PWR_EN1 = 0; + PWR_EN2 = 1; + + NVIC_set_all_irq_priorities(0x3); + NVIC_SetPriority(SPI0_IRQn, 0x0); // Wi-Fi SPI interrupt must be higher priority than SysTick + NVIC_SetPriority(PORTA_IRQn, 0x1); + NVIC_SetPriority(SysTick_IRQn, 0x2); // SysTick set to lower priority than Wi-Fi SPI bus interrupt + PORTA->PCR[16] |= PORT_PCR_ISF_MASK; + PORTA->ISFR |= (1 << 16); + + pc->baud(115200); +} + +void GloveWifi::Connect() +{ + //TODO: Make this call (or recall) the initial constructor. + wifi = new cc3000(PTD4, PTC9, PTD0, SPI(PTD2, PTD3, PTD1), SSID, PASSWORD, WPA2, false); + wifi->init(); + if (wifi->connect() == -1) + { + printf("Failed to connect. Please verify connection details and try again. \r\n"); + } else + { + printf("IP address: %s \r\n", wifi->getIPAddress()); + } + while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) + { + printf("Unable to connect to (%s) on port (%d) \r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT); + wait(1); + } + socket.set_blocking(true); + printf("Connected!\r\n"); +} + +void GloveWifi::Disconnect() +{ + socket.close(); + wifi->disconnect(); +} + +uint8_t GloveWifi::GetDataFromBuffer(uint8_t * buf, uint16_t size) +{ + return socket.receive((char *)buf, size); +} + +uint8_t GloveWifi::SendDataToGlove(uint8_t * buf, uint16_t size) +{ + return socket.send((char *)buf, size); +} + + \ No newline at end of file