* 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 MBED_DEMOS

Committer:
lwrnc
Date:
Fri Oct 24 02:06:43 2014 +0000
Revision:
10:b994a1c2b54c
Parent:
9:053a5e3e4c06
use mbed-src, read firmware version, list APs; ; wifi with the precompiled mbed currently doesn't work with my board, so switch to mbed-src.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 0:db8738fc21e8 1 /* mbed Microcontroller Library
Kojto 0:db8738fc21e8 2 * Copyright (c) 2006-2013 ARM Limited
Kojto 0:db8738fc21e8 3 *
Kojto 0:db8738fc21e8 4 * Licensed under the Apache License, Version 2.0 (the "License");
Kojto 0:db8738fc21e8 5 * you may not use this file except in compliance with the License.
Kojto 0:db8738fc21e8 6 * You may obtain a copy of the License at
Kojto 0:db8738fc21e8 7 *
Kojto 0:db8738fc21e8 8 * http://www.apache.org/licenses/LICENSE-2.0
Kojto 0:db8738fc21e8 9 *
Kojto 0:db8738fc21e8 10 * Unless required by applicable law or agreed to in writing, software
Kojto 0:db8738fc21e8 11 * distributed under the License is distributed on an "AS IS" BASIS,
Kojto 0:db8738fc21e8 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Kojto 0:db8738fc21e8 13 * See the License for the specific language governing permissions and
Kojto 0:db8738fc21e8 14 * limitations under the License.
Kojto 0:db8738fc21e8 15 */
Kojto 0:db8738fc21e8 16 #include "mbed.h"
Kojto 0:db8738fc21e8 17 #include "cc3000.h"
Kojto 0:db8738fc21e8 18 #include "main.h"
Kojto 0:db8738fc21e8 19
Kojto 0:db8738fc21e8 20 using namespace mbed_cc3000;
Kojto 0:db8738fc21e8 21
lwrnc 10:b994a1c2b54c 22 const char SSID[] = "yourap";
lwrnc 10:b994a1c2b54c 23 const char KEY[] = "yourkey";
lwrnc 10:b994a1c2b54c 24
Kojto 0:db8738fc21e8 25 /* cc3000 module declaration specific for user's board. Check also init() */
Kojto 0:db8738fc21e8 26 #if (MY_BOARD == WIGO)
lwrnc 10:b994a1c2b54c 27 cc3000 wifi(PTA16, PTA13, PTD0, SPI(PTD2, PTD3, PTC5), SSID, KEY, WPA2, false);
Kojto 0:db8738fc21e8 28 Serial pc(USBTX, USBRX);
Kojto 0:db8738fc21e8 29 #elif (MY_BOARD == WIFI_DIPCORTEX)
lwrnc 10:b994a1c2b54c 30 cc3000 wifi(p28, p27, p30, SPI(p21, p14, p37), SSID, KEY, WPA2, false);
Kojto 0:db8738fc21e8 31 Serial pc(UART_TX, UART_RX);
Kojto 4:2304a105c87f 32 #elif (MY_BOARD == MBED_BOARD_EXAMPLE)
lwrnc 10:b994a1c2b54c 33 cc3000 wifi(p9, p10, p8, SPI(p5, p6, p7), SSID, KEY, WPA2, false);
Kojto 4:2304a105c87f 34 Serial pc(USBTX, USBRX);
michaeljkoster 7:a4e91e42f008 35 #elif (MY_BOARD == SPARKFUN_WIFI_SHIELD)
lwrnc 10:b994a1c2b54c 36 cc3000 wifi(D2, D7, D10, SPI(D11, D12, D13), SSID, KEY, WPA2, false); //SparkFun Board on Arduino pin definitions
michaeljkoster 9:053a5e3e4c06 37 Serial pc(USBTX, USBRX);
michaeljkoster 9:053a5e3e4c06 38 #elif (MY_BOARD == ADAFRUIT_WIFI_SHIELD)
lwrnc 10:b994a1c2b54c 39 cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13), SSID, KEY, WPA2, false);
michaeljkoster 7:a4e91e42f008 40 Serial pc(USBTX, USBRX);
Kojto 0:db8738fc21e8 41 #endif
Kojto 0:db8738fc21e8 42
lwrnc 10:b994a1c2b54c 43
lwrnc 10:b994a1c2b54c 44 // from http://developer.mbed.org/users/dflet/code/CC3000Test/
lwrnc 10:b994a1c2b54c 45 typedef struct scanResults {
lwrnc 10:b994a1c2b54c 46 unsigned long numNetworksFound;
lwrnc 10:b994a1c2b54c 47 unsigned long results;
lwrnc 10:b994a1c2b54c 48 unsigned isValid:1;
lwrnc 10:b994a1c2b54c 49 unsigned rssi:7;
lwrnc 10:b994a1c2b54c 50 unsigned securityMode:2;
lwrnc 10:b994a1c2b54c 51 unsigned ssidLength:6;
lwrnc 10:b994a1c2b54c 52 unsigned short frameTime;
lwrnc 10:b994a1c2b54c 53 unsigned char ssid_name[32];
lwrnc 10:b994a1c2b54c 54 unsigned char bssid[6];
lwrnc 10:b994a1c2b54c 55 } scanResults;
lwrnc 10:b994a1c2b54c 56
lwrnc 10:b994a1c2b54c 57 int8_t listAPs() {
lwrnc 10:b994a1c2b54c 58 int ret;
lwrnc 10:b994a1c2b54c 59 scanResults sr;
lwrnc 10:b994a1c2b54c 60 int apCounter;
lwrnc 10:b994a1c2b54c 61
lwrnc 10:b994a1c2b54c 62 if ((ret = wifi._wlan.ioctl_get_scan_results(2000, (unsigned char *)&sr)) != 0) {
lwrnc 10:b994a1c2b54c 63 printf("get scan results failed ret=%d\r\n", ret);
lwrnc 10:b994a1c2b54c 64 return -1;
lwrnc 10:b994a1c2b54c 65 }
lwrnc 10:b994a1c2b54c 66 apCounter = sr.numNetworksFound;
lwrnc 10:b994a1c2b54c 67 printf("APs found: %d\r\n", apCounter);
lwrnc 10:b994a1c2b54c 68
lwrnc 10:b994a1c2b54c 69 do {
lwrnc 10:b994a1c2b54c 70 if (sr.isValid) {
lwrnc 10:b994a1c2b54c 71 char ssidbuf[32];
lwrnc 10:b994a1c2b54c 72 memcpy(ssidbuf, sr.ssid_name, sr.ssidLength);
lwrnc 10:b994a1c2b54c 73 ssidbuf[sr.ssidLength] = 0;
lwrnc 10:b994a1c2b54c 74 printf("ssid=%s rssi=%3d\r\n", ssidbuf, sr.rssi);
lwrnc 10:b994a1c2b54c 75 }
lwrnc 10:b994a1c2b54c 76
lwrnc 10:b994a1c2b54c 77 if (--apCounter> 0) {
lwrnc 10:b994a1c2b54c 78 if ((ret = wifi._wlan.ioctl_get_scan_results(2000, (unsigned char *)&sr)) != 0) {
lwrnc 10:b994a1c2b54c 79 printf("get scan results failed ret=%d\r\n", ret);
lwrnc 10:b994a1c2b54c 80 return -1;
lwrnc 10:b994a1c2b54c 81 }
lwrnc 10:b994a1c2b54c 82 }
lwrnc 10:b994a1c2b54c 83 } while (apCounter > 0);
lwrnc 10:b994a1c2b54c 84 printf(("End of AP list."));
lwrnc 10:b994a1c2b54c 85 return 0;
lwrnc 10:b994a1c2b54c 86 }
lwrnc 10:b994a1c2b54c 87
lwrnc 10:b994a1c2b54c 88
Kojto 0:db8738fc21e8 89 /**
lwrnc 10:b994a1c2b54c 90 * \brief Connect to an AP, read firmware version, and list APs
Kojto 0:db8738fc21e8 91 * \param none
Kojto 0:db8738fc21e8 92 * \return int
Kojto 0:db8738fc21e8 93 */
Kojto 0:db8738fc21e8 94 int main() {
lwrnc 10:b994a1c2b54c 95 int i = 0;
Kojto 0:db8738fc21e8 96 init(); /* board dependent init */
lwrnc 10:b994a1c2b54c 97 pc.baud(115200);
Kojto 0:db8738fc21e8 98
lwrnc 10:b994a1c2b54c 99 // allow time to get a serial console
lwrnc 10:b994a1c2b54c 100 for (int i=10; i>=0; i--) {
lwrnc 10:b994a1c2b54c 101 wait(0.5);
lwrnc 10:b994a1c2b54c 102 pc.printf("Starting in %d\r\n", i);
lwrnc 10:b994a1c2b54c 103 }
lwrnc 10:b994a1c2b54c 104
lwrnc 10:b994a1c2b54c 105 printf("cc3000 WiFi demo.\r\n");
Kojto 4:2304a105c87f 106 wifi.init();
lwrnc 10:b994a1c2b54c 107 printf("init done. connecting\r\n");
Kojto 4:2304a105c87f 108 if (wifi.connect() == -1) {
lwrnc 10:b994a1c2b54c 109 while (++i < 10) {
lwrnc 10:b994a1c2b54c 110 printf("Failed to connect. Please verify connection details and try again. \r\n");
lwrnc 10:b994a1c2b54c 111 wait(1.0);
lwrnc 10:b994a1c2b54c 112 }
Kojto 4:2304a105c87f 113 } else {
lwrnc 10:b994a1c2b54c 114 while (++i < 10) {
lwrnc 10:b994a1c2b54c 115 uint8_t v[2], ret;
lwrnc 10:b994a1c2b54c 116
lwrnc 10:b994a1c2b54c 117 printf("IP address: %s \r\n",wifi.getIPAddress());
lwrnc 10:b994a1c2b54c 118 wait(1.0);
lwrnc 10:b994a1c2b54c 119
lwrnc 10:b994a1c2b54c 120 ret = wifi._nvmem.read_sp_version(v);
lwrnc 10:b994a1c2b54c 121 printf("cc3000 sp version=%d.%d ret=%x\r\n", v[0], v[1], ret);
lwrnc 10:b994a1c2b54c 122
lwrnc 10:b994a1c2b54c 123 ret = listAPs();
lwrnc 10:b994a1c2b54c 124 wait(60.0);
lwrnc 10:b994a1c2b54c 125 printf("\r\ncc3000 connected to the Internet. Demo completed.\r\n");
lwrnc 10:b994a1c2b54c 126 }
Kojto 0:db8738fc21e8 127 }
Kojto 1:c3a27e2adf93 128
Kojto 0:db8738fc21e8 129 wifi.disconnect();
lwrnc 10:b994a1c2b54c 130 }