* switch from mbed to mbed-src, which works better with my board * list APs and their RSSI * read CC3000 firmware version
Dependencies: cc3000_hostdriver_mbedsocket mbed-src
Fork of cc3000_hello_world_demo_sparkfun by
Diff: main.cpp
- Revision:
- 10:b994a1c2b54c
- Parent:
- 9:053a5e3e4c06
--- a/main.cpp Tue Oct 14 22:48:10 2014 +0000 +++ b/main.cpp Fri Oct 24 02:06:43 2014 +0000 @@ -19,42 +19,112 @@ using namespace mbed_cc3000; +const char SSID[] = "yourap"; +const char KEY[] = "yourkey"; + /* cc3000 module declaration specific for user's board. Check also init() */ #if (MY_BOARD == WIGO) -cc3000 wifi(PTA16, PTA13, PTD0, SPI(PTD2, PTD3, PTC5), "ssid", "key", WPA2, false); +cc3000 wifi(PTA16, PTA13, PTD0, SPI(PTD2, PTD3, PTC5), SSID, KEY, WPA2, false); Serial pc(USBTX, USBRX); #elif (MY_BOARD == WIFI_DIPCORTEX) -cc3000 wifi(p28, p27, p30, SPI(p21, p14, p37), "ssid", "key", WPA2, false); +cc3000 wifi(p28, p27, p30, SPI(p21, p14, p37), SSID, KEY, WPA2, false); Serial pc(UART_TX, UART_RX); #elif (MY_BOARD == MBED_BOARD_EXAMPLE) -cc3000 wifi(p9, p10, p8, SPI(p5, p6, p7), "ssid", "key", WPA2, false); +cc3000 wifi(p9, p10, p8, SPI(p5, p6, p7), SSID, KEY, WPA2, false); Serial pc(USBTX, USBRX); #elif (MY_BOARD == SPARKFUN_WIFI_SHIELD) -cc3000 wifi(D2, D7, D10, SPI(D11, D12, D13), "demo", "ARMDEMO1", WPA2, false); //SparkFun Board on Arduino pin definitions +cc3000 wifi(D2, D7, D10, SPI(D11, D12, D13), SSID, KEY, WPA2, false); //SparkFun Board on Arduino pin definitions Serial pc(USBTX, USBRX); #elif (MY_BOARD == ADAFRUIT_WIFI_SHIELD) -cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13), "demo", "ARMDEMO1", WPA2, false); //SparkFun Board on Arduino pin definitions +cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13), SSID, KEY, WPA2, false); Serial pc(USBTX, USBRX); #endif + +// from http://developer.mbed.org/users/dflet/code/CC3000Test/ +typedef struct scanResults { + unsigned long numNetworksFound; + unsigned long results; + unsigned isValid:1; + unsigned rssi:7; + unsigned securityMode:2; + unsigned ssidLength:6; + unsigned short frameTime; + unsigned char ssid_name[32]; + unsigned char bssid[6]; +} scanResults; + +int8_t listAPs() { + int ret; + scanResults sr; + int apCounter; + + if ((ret = wifi._wlan.ioctl_get_scan_results(2000, (unsigned char *)&sr)) != 0) { + printf("get scan results failed ret=%d\r\n", ret); + return -1; + } + apCounter = sr.numNetworksFound; + printf("APs found: %d\r\n", apCounter); + + do { + if (sr.isValid) { + char ssidbuf[32]; + memcpy(ssidbuf, sr.ssid_name, sr.ssidLength); + ssidbuf[sr.ssidLength] = 0; + printf("ssid=%s rssi=%3d\r\n", ssidbuf, sr.rssi); + } + + if (--apCounter> 0) { + if ((ret = wifi._wlan.ioctl_get_scan_results(2000, (unsigned char *)&sr)) != 0) { + printf("get scan results failed ret=%d\r\n", ret); + return -1; + } + } + } while (apCounter > 0); + printf(("End of AP list.")); + return 0; +} + + /** - * \brief Hello World + * \brief Connect to an AP, read firmware version, and list APs * \param none * \return int */ int main() { + int i = 0; init(); /* board dependent init */ - pc.baud(9600); + pc.baud(115200); - printf("cc3000 Hello World demo. \r\n"); + // allow time to get a serial console + for (int i=10; i>=0; i--) { + wait(0.5); + pc.printf("Starting in %d\r\n", i); + } + + printf("cc3000 WiFi demo.\r\n"); wifi.init(); + printf("init done. connecting\r\n"); if (wifi.connect() == -1) { - printf("Failed to connect. Please verify connection details and try again. \r\n"); + while (++i < 10) { + printf("Failed to connect. Please verify connection details and try again. \r\n"); + wait(1.0); + } } else { - printf("IP address: %s \r\n",wifi.getIPAddress()); - printf("\r\ncc3000 connected to the Internet. Demo completed. \r\n"); + while (++i < 10) { + uint8_t v[2], ret; + + printf("IP address: %s \r\n",wifi.getIPAddress()); + wait(1.0); + + ret = wifi._nvmem.read_sp_version(v); + printf("cc3000 sp version=%d.%d ret=%x\r\n", v[0], v[1], ret); + + ret = listAPs(); + wait(60.0); + printf("\r\ncc3000 connected to the Internet. Demo completed.\r\n"); + } } wifi.disconnect(); -} - +} \ No newline at end of file