Connect to SSID, get ip by dhcp, ping google.com, display statistics

Dependencies:   NVIC_set_all_priorities cc3000_hostdriver_mbedsocket mbed

Files at this revision

API Documentation at this revision

Comitter:
Kojto
Date:
Sat Sep 14 05:13:00 2013 +0000
Child:
1:1ef047ffeef4
Commit message:
initial version of cc3000 ping demo; - ping google.com and print statistics

Changed in this revision

KL25Z_irq_proirities.lib Show annotated file Show diff for this revision Revisions of this file
cc3000_host_driver.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/KL25Z_irq_proirities.lib	Sat Sep 14 05:13:00 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/frankvnk/code/KL25Z_irq_proirities/#d2dd5df65f0e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cc3000_host_driver.lib	Sat Sep 14 05:13:00 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Kojto/code/cc3000_host_driver/#f8b31c6e96d6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Sep 14 05:13:00 2013 +0000
@@ -0,0 +1,137 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2006-2013 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "mbed.h"
+#include "KL25Z_irq_prio.h"
+#include "cc3000.h"
+#include "main.h"
+
+using namespace mbed_cc3000;
+
+#if (WIGO_BOARD)
+// Wi-Go battery charger control
+DigitalOut PWR_EN1(PTB2);
+DigitalOut PWR_EN2(PTB3);
+#endif
+
+Serial pc(USBTX, USBRX);
+cc3000 wigo(PTA16, PTA13, PTD0, SPI(PTD2, PTD3, PTC5), PORTA_IRQn);
+
+/** Print cc3000 information
+ *  \param  none
+ *  \return none
+ */
+void print_cc3000_info() {
+    uint8_t myMAC[8];
+    tUserFS user_info;
+
+    printf("MAC address + cc3000 info\n");
+    wigo.get_user_file_info((uint8_t *)&user_info, sizeof(user_info));
+    wigo.get_mac_address(myMAC);
+    printf(" MAC address %02x:%02x:%02x:%02x:%02x:%02x\n\n", myMAC[0], myMAC[1], myMAC[2], myMAC[3], myMAC[4], myMAC[5]);
+
+    printf(" FTC        %i\n",user_info.FTC);
+    printf(" PP_version %i.%i\n",user_info.PP_version[0], user_info.PP_version[1]);
+    printf(" SERV_PACK  %i.%i\n",user_info.SERV_PACK[0], user_info.SERV_PACK[1]);
+    printf(" DRV_VER    %i.%i.%i\n",user_info.DRV_VER[0], user_info.DRV_VER[1], user_info.DRV_VER[2]);
+    printf(" FW_VER     %i.%i.%i\n",user_info.FW_VER[0], user_info.FW_VER[1], user_info.FW_VER[2]);
+}
+
+/** Connect to SSID with a timeout
+ *  \param  ssid     Name of SSID
+ *  \param  key      Password
+ *  \param  sec_mode Security mode
+ *  \return none
+ */
+void connect_to_ssid(uint8_t *ssid, uint8_t *key, uint8_t sec_mode) {
+    printf("Connecting to SSID: %s. Timeout is 10s.\n",ssid);
+    if (wigo.connect_to_AP(ssid, key, sec_mode) == true) {
+        printf(" Connected\n");
+    } else {
+        printf(" Connection timed-out (error). Please restart.\n");
+        while(1);
+  }
+}
+
+/** Connect to SSID without security
+ *  \param  ssid Name of SSID
+ *  \return none
+ */
+void connect_to_ssid(uint8_t *ssid) {
+    wigo.connect_open(ssid);
+}
+
+void wigo_init(void) {
+    /* KL25 specific code */
+    // Wi-Go set current to 500mA since we're turning on the Wi-Fi
+    SET_PWR_EN1;
+    SET_PWR_EN2;
+  
+    NVIC_SetAllPriority(3);
+    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
+    CLEAR_PCR_INTERRUPT;
+    CLEAN_PORT_INTERRUPT;
+}
+
+/** Main function
+ *  \param  none
+ *  \return int
+ */
+int main() {
+    wigo_init();
+    pc.baud(115200);
+
+    wigo.start(0);
+    printf("CC3000 ping demo.\n");
+    print_cc3000_info();
+
+    printf("Attempting SSID Connection\n");
+#ifndef CC3000_TINY_DRIVER
+    #ifdef AP_KEY
+        connect_to_ssid((uint8_t *)SSID,(uint8_t *)AP_KEY,AP_SECURITY);
+    #else
+        connect_to_ssid((uint8_t *)SSID);
+    #endif
+#else
+        connect_to_ssid((uint8_t *)SSID);
+#endif
+
+    printf("DHCP request\n");
+    while (wigo.is_dhcp_configured() == false) {
+         wait_ms(500);
+         printf("  Waiting for dhcp to be set.\n");
+    }
+
+    uint32_t ip;
+    uint8_t *site = (uint8_t *)"google.com";
+    printf("Get an IP address of %s\n",site);
+    if (wigo._socket.gethostbyname(site,strlen((const char *)site), &ip)) {
+        uint8_t add0 = (ip >> 24);
+        uint8_t add1 = (ip >> 16);
+        uint8_t add2 = (ip >> 8);
+        uint8_t add3 = (ip >> 0);
+        printf("IP address of %s: %d:%d:%d:%d \n", site, add0, add1, add2, add3);
+    } else {
+        printf("Failed");
+    }
+
+    printf("Starting sending ping\n");
+    uint32_t reply_count = wigo.ping(ip, 5, 500, 32);
+    printf("Received %d replies\n", reply_count);
+    printf("Ping demo completed.\n");
+    wigo.disconnect();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.h	Sat Sep 14 05:13:00 2013 +0000
@@ -0,0 +1,74 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2006-2013 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef MAIN_H
+#define MAIN_H
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#define SMART_CONFIG_SET 0x55
+#define TCPIP_PORT 15000
+
+#define USE_DHCP      1
+#define USE_STATIC_IP 2
+
+#define NONE 0
+#define WEP  1
+#define WPA  2
+#define WPA2 3
+
+// Modify the following settings as necessary for your Wi-Fi Network setup:
+#define IP_ALLOC_METHOD USE_DHCP        // for DHCP assigned IP address
+//#define IP_ALLOC_METHOD USE_STATIC_IP // for static IP address
+
+// Default SSID Settings
+#define AP_KEY       "87654321"
+#define AP_SECURITY     WPA2            // WPA2 must be enabled for use with iPhone or Android phone hotspot!
+#define SSID           "test"
+//#define AP_SECURITY    NONE          // no security but will connect quicker!
+#define STATIC_IP_OCT1 192
+#define STATIC_IP_OCT2 168
+#define STATIC_IP_OCT3 0
+#define STATIC_IP_OCT4 103
+
+#define STATIC_GW_OCT4 1             // Static Gateway address  = STATIC_IP_OCT1.STATIC_IP_OCT2.STATIC_IP_OCT3.STATIC_GW_OCT4
+
+#define REQ_BUFFER_SIZE 400
+
+#define WIGO_BOARD 1
+
+#if (WIGO_BOARD == 1)
+
+#define SET_PWR_EN1    PWR_EN1 = 0
+#define SET_PWR_EN2    PWR_EN2 = 1
+
+#define WLAN_ISF_PCR        PORTA->PCR[16]
+#define WLAN_ISF_ISFR       PORTA->ISFR
+#define WLAN_ISF_MASK       (1<<16)
+
+#define CLEAR_PCR_INTERRUPT    WLAN_ISF_PCR|=PORT_PCR_ISF_MASK;
+#define CLEAN_PORT_INTERRUPT   WLAN_ISF_ISFR|=WLAN_ISF_MASK;
+
+#else
+
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Sep 14 05:13:00 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/9c8f0e3462fb
\ No newline at end of file