cc3000 websocket demo for cc3000

Dependencies:   NVIC_set_all_priorities WebSocketClient cc3000_hostdriver_mbedsocket mbed

Files at this revision

API Documentation at this revision

Comitter:
Kojto
Date:
Tue Oct 01 15:42:21 2013 +0000
Child:
1:214d23448fa7
Commit message:
websocket demo initial version

Changed in this revision

NVIC_set_all_priorities.lib Show annotated file Show diff for this revision Revisions of this file
WebSocketClient.lib Show annotated file Show diff for this revision Revisions of this file
cc3000_hostdriver_mbedsocket.lib Show annotated file Show diff for this revision Revisions of this file
init.cpp 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/NVIC_set_all_priorities.lib	Tue Oct 01 15:42:21 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/frankvnk/code/NVIC_set_all_priorities/#d3f63dfa84b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebSocketClient.lib	Tue Oct 01 15:42:21 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/samux/code/WebSocketClient/#4567996414a5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cc3000_hostdriver_mbedsocket.lib	Tue Oct 01 15:42:21 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Kojto/code/cc3000_hostdriver_mbedsocket/#7069c5f1e6f4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/init.cpp	Tue Oct 01 15:42:21 2013 +0000
@@ -0,0 +1,50 @@
+#include "main.h"
+
+#if (MY_BOARD == WIGO)
+
+#include "NVIC_set_all_priorities.h"
+
+/**
+ *  \brief Wi-Go initialization
+ *  \param none
+ *  \return none
+ */
+void init() {
+    DigitalOut PWR_EN1(PTB2);
+    DigitalOut PWR_EN2(PTB3);
+
+    // Wi-Go set current to 500mA since we're turning on the Wi-Fi
+    PWR_EN1 = 0;
+    PWR_EN2 = 1;
+
+    NVIC_set_all_irq_priorities(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
+    PORTA->PCR[16] |=PORT_PCR_ISF_MASK;
+    PORTA->ISFR |= (1<<16);
+}
+
+#elif (MY_BOARD == WIFI_DIPCORTEX)
+
+/**
+ *  \brief Wifi DipCortex initialization
+ *  \param none
+ *  \return none
+ */
+void init() {
+
+}
+
+#else
+
+/**
+ *  \brief Place here init routine for your board
+ *  \param none
+ *  \return none
+ */
+void init() {
+
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Oct 01 15:42:21 2013 +0000
@@ -0,0 +1,160 @@
+/* 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 "cc3000.h"
+#include "main.h"
+
+#include "Websocket.h"
+
+using namespace mbed_cc3000;
+
+Serial pc(USBTX, USBRX);
+tUserFS user_info;
+
+/* cc3000 module declaration specific for user's board. Check also init() */
+#if (MY_BOARD == WIGO)
+cc3000 wifi(PTA16, PTA13, PTD0, SPI(PTD2, PTD3, PTC5), PORTA_IRQn);
+#elif (MY_BOARD == WIFI_DIPCORTEX)
+
+#else
+
+#endif
+
+#ifndef CC3000_UNENCRYPTED_SMART_CONFIG
+  const uint8_t smartconfigkey[] = {0x73,0x6d,0x61,0x72,0x74,0x63,0x6f,0x6e,0x66,0x69,0x67,0x41,0x45,0x53,0x31,0x36};
+#else
+  const uint8_t smartconfigkey = 0;
+#endif
+
+/**
+ *  \brief Print cc3000 information
+ *  \param none
+ *  \return none
+ */
+void print_cc3000_info() {
+    uint8_t myMAC[8];
+
+    printf("MAC address + cc3000 info\n");
+    wifi.get_user_file_info((uint8_t *)&user_info, sizeof(user_info));
+    wifi.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]);
+}
+
+/**
+ *  \brief 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(char *ssid, char *key, unsigned char sec_mode) {
+    printf("Connecting to SSID: %s. Timeout is 10s.\n",ssid);
+    if (wifi.connect_to_AP((uint8_t *)ssid, (uint8_t *)key, sec_mode) == true) {
+        printf(" Connected\n");
+    } else {
+        printf(" Connection timed-out (error). Please restart.\n");
+        while(1);
+  }
+}
+
+/**
+ *  \brief Connect to SSID without security
+ *  \param ssid Name of SSID
+ *  \return none
+ */
+void connect_to_ssid(uint8_t *ssid) {
+    wifi.connect_open((uint8_t *)ssid);
+}
+
+/**
+ *  \brief First time configuration
+ *  \param none
+ *  \return none
+ */
+void do_FTC(void) {
+    printf("Running First Time Configuration\n");
+    wifi.start_smart_config(smartconfigkey);
+    while (wifi.is_dhcp_configured() == false) {
+         wait_ms(500);
+         printf("Waiting for dhcp to be set.\n");
+    }
+    user_info.FTC = 1;
+    wifi.set_user_file_info((uint8_t *)&user_info, sizeof(user_info));
+    wifi._wlan.stop();
+    printf("FTC finished.\n");
+}
+
+/** Ping a site
+ *  \param  none
+ *  \return int
+ */
+int main() {
+    init(); /* board dependent init */
+    pc.baud(115200);
+
+    wifi.start(0);
+    printf("cc3000 Websocket demo.\n");
+    print_cc3000_info();
+
+    printf("Attempting SSID Connection\n");
+#if (USE_SMART_CONFIG == 1)
+    if (user_info.FTC == 1) {
+        wifi._wlan.ioctl_set_connection_policy(0, 1, 1);
+    } else {
+        printf("Smart config is not set, starting configuration\n");
+        do_FTC();
+        printf("Smart config is set. Please restart your board.\n");
+        while(1);
+    }
+#else
+    wifi._wlan.ioctl_set_connection_policy(0, 0, 0);
+#ifndef CC3000_TINY_DRIVER
+#ifdef AP_KEY
+    connect_to_ssid(SSID,AP_KEY,AP_SECURITY);
+#else
+    connect_to_ssid((uint8_t *)SSID);
+#endif
+#else
+    connect_to_ssid((uint8_t *)SSID);
+#endif
+#endif
+    printf("DHCP request\n");
+    while (wifi.is_dhcp_configured() == false) {
+         wait_ms(500);
+         printf("  Waiting for dhcp to be set.\n");
+    }
+
+    tNetappIpconfigRetArgs ipinfo2;
+    wifi.get_ip_config(&ipinfo2);                  // data is returned in the ipinfo2 structure
+    printf("\n DHCP assigned IP Address = %d.%d.%d.%d\n", ipinfo2.aucIP[3], ipinfo2.aucIP[2], ipinfo2.aucIP[1], ipinfo2.aucIP[0]);
+
+        Websocket ws("ws://sockets.mbed.org/ws/Kojto/rw");
+    while (!ws.connect());
+
+        printf("Connected to websocket server.\n");
+    while (1) {
+            ws.send("WebSocket Hello World over cc3000");
+            wait(1.0);
+    }
+
+     wifi.disconnect();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.h	Tue Oct 01 15:42:21 2013 +0000
@@ -0,0 +1,41 @@
+/* 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
+
+#define WIGO           1
+#define WIFI_DIPCORTEX 2
+#define UNDEFINED      3
+
+#define MY_BOARD WIGO
+
+/* use this defines in AP_SECURITY */
+#define NONE 0
+#define WEP  1
+#define WPA  2
+#define WPA2 3
+
+// use smart config
+#define USE_SMART_CONFIG 0
+
+ // Default SSID Settings
+#define AP_KEY         "test"
+#define AP_SECURITY     WPA2            // WPA2 must be enabled for use with iPhone or Android phone hotspot!
+#define SSID           "test"
+
+void init();
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Oct 01 15:42:21 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f
\ No newline at end of file