* 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
main.cpp@10:b994a1c2b54c, 2014-10-24 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
