Cubic Hand project for EECS 249A course.
Dependencies: MMA8451Q TSI cc3000_hostdriver_mbedsocket NVIC_set_all_priorities mbed Multi_WS2811
GloveWifi.cpp@15:b48ac00af0b8, 2014-12-07 (annotated)
- Committer:
- kalbers
- Date:
- Sun Dec 07 21:49:33 2014 +0000
- Revision:
- 15:b48ac00af0b8
- Parent:
- 14:0c4a26dc6873
- Child:
- 19:e751d075e2e6
Added a reconnect to GloveWifi.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kalbers | 3:5f5d75cba8e1 | 1 | #include "GloveWifi.h" |
kalbers | 3:5f5d75cba8e1 | 2 | #include "mbed.h" |
kalbers | 3:5f5d75cba8e1 | 3 | #include "cc3000.h" |
kalbers | 3:5f5d75cba8e1 | 4 | #include "TCPSocketConnection.h" |
kalbers | 3:5f5d75cba8e1 | 5 | #include "TCPSocketServer.h" |
kalbers | 3:5f5d75cba8e1 | 6 | #include "NVIC_set_all_priorities.h" |
kalbers | 3:5f5d75cba8e1 | 7 | |
kalbers | 3:5f5d75cba8e1 | 8 | #define SSID "CubeNet" |
kalbers | 3:5f5d75cba8e1 | 9 | #define PASSWORD "modelbased" |
kalbers | 3:5f5d75cba8e1 | 10 | |
kalbers | 13:c701f1122797 | 11 | #define ECHO_SERVER_ADDRESS "192.168.1.33" |
kalbers | 13:c701f1122797 | 12 | #define ECHO_SERVER_PORT 2000 |
kalbers | 13:c701f1122797 | 13 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
kalbers | 3:5f5d75cba8e1 | 14 | |
kalbers | 13:c701f1122797 | 15 | GloveWifi::GloveWifi() |
kalbers | 3:5f5d75cba8e1 | 16 | { |
kalbers | 3:5f5d75cba8e1 | 17 | } |
kalbers | 3:5f5d75cba8e1 | 18 | |
kalbers | 3:5f5d75cba8e1 | 19 | GloveWifi::~GloveWifi() |
kalbers | 3:5f5d75cba8e1 | 20 | { |
kalbers | 13:c701f1122797 | 21 | delete socket; |
kalbers | 13:c701f1122797 | 22 | delete wifi; |
kalbers | 3:5f5d75cba8e1 | 23 | } |
kalbers | 3:5f5d75cba8e1 | 24 | |
kalbers | 3:5f5d75cba8e1 | 25 | void GloveWifi::Init() |
kalbers | 3:5f5d75cba8e1 | 26 | { |
kalbers | 3:5f5d75cba8e1 | 27 | |
kalbers | 3:5f5d75cba8e1 | 28 | //Init from the cc3000 example |
kalbers | 3:5f5d75cba8e1 | 29 | DigitalOut PWR_EN1(PTB2); |
kalbers | 3:5f5d75cba8e1 | 30 | DigitalOut PWR_EN2(PTB3); |
kalbers | 3:5f5d75cba8e1 | 31 | |
kalbers | 3:5f5d75cba8e1 | 32 | // Wi-Go set current to 500mA since we're turning on the Wi-Fi |
kalbers | 3:5f5d75cba8e1 | 33 | PWR_EN1 = 0; |
kalbers | 3:5f5d75cba8e1 | 34 | PWR_EN2 = 1; |
kalbers | 3:5f5d75cba8e1 | 35 | |
kalbers | 3:5f5d75cba8e1 | 36 | NVIC_set_all_irq_priorities(0x3); |
kalbers | 3:5f5d75cba8e1 | 37 | NVIC_SetPriority(SPI0_IRQn, 0x0); // Wi-Fi SPI interrupt must be higher priority than SysTick |
kalbers | 3:5f5d75cba8e1 | 38 | NVIC_SetPriority(PORTA_IRQn, 0x1); |
kalbers | 3:5f5d75cba8e1 | 39 | NVIC_SetPriority(SysTick_IRQn, 0x2); // SysTick set to lower priority than Wi-Fi SPI bus interrupt |
kalbers | 3:5f5d75cba8e1 | 40 | PORTA->PCR[16] |= PORT_PCR_ISF_MASK; |
kalbers | 3:5f5d75cba8e1 | 41 | PORTA->ISFR |= (1 << 16); |
kalbers | 3:5f5d75cba8e1 | 42 | } |
kalbers | 3:5f5d75cba8e1 | 43 | |
kalbers | 3:5f5d75cba8e1 | 44 | void GloveWifi::Connect() |
kalbers | 3:5f5d75cba8e1 | 45 | { |
kalbers | 13:c701f1122797 | 46 | |
naren | 14:0c4a26dc6873 | 47 | //wifi = new cc3000(PTD4, PTC9, PTD0, SPI(PTD2, PTD3, PTD1), SSID, PASSWORD, WPA2, false); |
naren | 14:0c4a26dc6873 | 48 | wifi = new cc3000(PTD4, PTC9, PTC4, SPI(PTC6, PTC7, PTC5), SSID, PASSWORD, WPA2, false); |
kalbers | 3:5f5d75cba8e1 | 49 | wifi->init(); |
kalbers | 3:5f5d75cba8e1 | 50 | if (wifi->connect() == -1) |
kalbers | 3:5f5d75cba8e1 | 51 | { |
kalbers | 3:5f5d75cba8e1 | 52 | printf("Failed to connect. Please verify connection details and try again. \r\n"); |
kalbers | 3:5f5d75cba8e1 | 53 | } else |
kalbers | 3:5f5d75cba8e1 | 54 | { |
kalbers | 3:5f5d75cba8e1 | 55 | printf("IP address: %s \r\n", wifi->getIPAddress()); |
kalbers | 3:5f5d75cba8e1 | 56 | } |
kalbers | 15:b48ac00af0b8 | 57 | socket = new TCPSocketConnection; |
kalbers | 13:c701f1122797 | 58 | while (socket->connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) |
kalbers | 3:5f5d75cba8e1 | 59 | { |
kalbers | 3:5f5d75cba8e1 | 60 | printf("Unable to connect to (%s) on port (%d) \r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT); |
kalbers | 3:5f5d75cba8e1 | 61 | wait(1); |
kalbers | 3:5f5d75cba8e1 | 62 | } |
kalbers | 13:c701f1122797 | 63 | socket->set_blocking(true); |
kalbers | 3:5f5d75cba8e1 | 64 | printf("Connected!\r\n"); |
kalbers | 15:b48ac00af0b8 | 65 | |
kalbers | 3:5f5d75cba8e1 | 66 | } |
kalbers | 3:5f5d75cba8e1 | 67 | |
kalbers | 3:5f5d75cba8e1 | 68 | void GloveWifi::Disconnect() |
kalbers | 3:5f5d75cba8e1 | 69 | { |
kalbers | 13:c701f1122797 | 70 | socket->close(); |
kalbers | 3:5f5d75cba8e1 | 71 | wifi->disconnect(); |
kalbers | 13:c701f1122797 | 72 | delete socket; |
kalbers | 7:79cd3cf6daea | 73 | delete wifi; |
kalbers | 3:5f5d75cba8e1 | 74 | } |
kalbers | 3:5f5d75cba8e1 | 75 | |
kalbers | 15:b48ac00af0b8 | 76 | void GloveWifi::Reconnect() |
kalbers | 15:b48ac00af0b8 | 77 | { |
kalbers | 15:b48ac00af0b8 | 78 | delete socket; |
kalbers | 15:b48ac00af0b8 | 79 | socket = new TCPSocketConnection; |
kalbers | 15:b48ac00af0b8 | 80 | while (socket->connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) |
kalbers | 15:b48ac00af0b8 | 81 | { |
kalbers | 15:b48ac00af0b8 | 82 | printf("Unable to connect to (%s) on port (%d) \r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT); |
kalbers | 15:b48ac00af0b8 | 83 | wait(1); |
kalbers | 15:b48ac00af0b8 | 84 | } |
kalbers | 15:b48ac00af0b8 | 85 | socket->set_blocking(true); |
kalbers | 15:b48ac00af0b8 | 86 | printf("Reconnected!\r\n"); |
kalbers | 15:b48ac00af0b8 | 87 | } |
kalbers | 15:b48ac00af0b8 | 88 | |
kalbers | 3:5f5d75cba8e1 | 89 | uint8_t GloveWifi::GetDataFromBuffer(uint8_t * buf, uint16_t size) |
kalbers | 3:5f5d75cba8e1 | 90 | { |
kalbers | 15:b48ac00af0b8 | 91 | //printf("Buffer Size: %d\r\n", wifi->_simple_link.get_transmit_error()); |
kalbers | 13:c701f1122797 | 92 | return socket->receive((char *)buf, size); |
kalbers | 3:5f5d75cba8e1 | 93 | } |
kalbers | 3:5f5d75cba8e1 | 94 | |
kalbers | 3:5f5d75cba8e1 | 95 | uint8_t GloveWifi::SendDataToGlove(uint8_t * buf, uint16_t size) |
kalbers | 3:5f5d75cba8e1 | 96 | { |
kalbers | 13:c701f1122797 | 97 | return socket->send((char *)buf, size); |
kalbers | 3:5f5d75cba8e1 | 98 | } |
kalbers | 3:5f5d75cba8e1 | 99 | |
kalbers | 3:5f5d75cba8e1 | 100 |