mbed Sensor node for Instrumented Booth over ETH.

Dependencies:   EthernetInterface-1 MaxbotixDriver Presence HTU21D_TEMP_HUMID_SENSOR_SAMPLE Resources SHARPIR mbed-rtos mbed-src WDT_K64F nsdl_lib

Fork of Trenton_Switch_LPC1768_ETH by Demo Team

Revision:
1:99076f2d9408
Parent:
0:ce33c63eefe5
Child:
4:b5875efcf0e5
--- a/main.cpp	Sun Sep 08 18:31:33 2013 +0000
+++ b/main.cpp	Fri Sep 13 18:02:03 2013 +0000
@@ -1,13 +1,27 @@
+/* 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 "doTCPIP.h"
+#include "tcp_ip_demo.h"
 #include "main.h"
 
 using namespace mbed_cc3000;
 
-// Serial USB port
-Serial pc(USBTX, USBRX);
+#if (WIGO_BOARD)
 // Wi-Go battery charger control
 DigitalOut PWR_EN1(PTB2);
 DigitalOut PWR_EN2(PTB3);
@@ -18,14 +32,15 @@
 DigitalOut led1 (PTB8);
 DigitalOut led2 (PTB9);
 DigitalOut led3 (PTB10);
-// Wi-go cc3000 
+#endif
+
+Serial pc(USBTX, USBRX);
 cc3000 wigo(PTA16, PTA13, PTD0, SPI(PTD2, PTD3, PTC5), PORTA_IRQn);
 
-/* TODO REMOVE -> new function with all priorities as well */
-#define WLAN_ISF_PCR        PORTA->PCR[16]
-#define WLAN_ISF_ISFR       PORTA->ISFR
-#define WLAN_ISF_MASK       (1<<16)
-
+/** Initialize LED (only for Wi-go board)
+ *  \param  none
+ *  \return none
+ */
 void initLEDs(void)
 {
     RED_OFF;
@@ -36,6 +51,10 @@
     LED_D3_OFF;
 }
 
+/** Print cc3000 information
+ *  \param  none
+ *  \return none
+ */
 void print_cc3000_info() {
     wigo.get_user_file_info((uint8_t *)&userFS, sizeof(userFS));
     wigo.get_mac_address(myMAC);
@@ -48,83 +67,49 @@
     printf("FW_VER     %i.%i.%i\n",userFS.FW_VER[0], userFS.FW_VER[1], userFS.FW_VER[2]);
 }
 
-int32_t set_static_dhcp(void)
-{
-    uint8_t pucIP_Addr[4];
-    uint8_t pucIP_DefaultGWAddr[4];
-    uint8_t pucSubnetMask[4];
-    uint8_t pucDNS[4];
-
-    // Subnet mask is assumed to be 255.255.255.0
-    pucSubnetMask[0] = 0xFF;
-    pucSubnetMask[1] = 0xFF;
-    pucSubnetMask[2] = 0xFF;
-    pucSubnetMask[3] = 0x0;
-
-    // CC3000's IP
-    pucIP_Addr[0] = STATIC_IP_OCT1;
-    pucIP_Addr[1] = STATIC_IP_OCT2;
-    pucIP_Addr[2] = STATIC_IP_OCT3;
-    pucIP_Addr[3] = STATIC_IP_OCT4;
-
-    // Default Gateway/Router IP
-    // 192.168.1.1
-    pucIP_DefaultGWAddr[0] = STATIC_IP_OCT1;
-    pucIP_DefaultGWAddr[1] = STATIC_IP_OCT2;
-    pucIP_DefaultGWAddr[2] = STATIC_IP_OCT3;
-    pucIP_DefaultGWAddr[3] = STATIC_GW_OCT4;
-
-    // We assume the router is also a DNS server
-    pucDNS[0] = STATIC_IP_OCT1;
-    pucDNS[1] = STATIC_IP_OCT2;
-    pucDNS[2] = STATIC_IP_OCT3;
-    pucDNS[3] = STATIC_GW_OCT4;
-
-    wigo._netapp.dhcp((uint32_t *)pucIP_Addr,
-                (uint32_t *)pucSubnetMask,
-                (uint32_t *)pucIP_DefaultGWAddr,
-                (uint32_t *)pucDNS);
-
-    // reset the CC3000 to apply Static Setting
-    wigo._wlan.stop();
-    wait(1);
-    wigo._wlan.start(0);
-
-    // Mask out all non-required events from CC3000
-    wigo._wlan.set_event_mask(HCI_EVNT_WLAN_KEEPALIVE|
-                        HCI_EVNT_WLAN_UNSOL_INIT|
-                        HCI_EVNT_WLAN_ASYNC_PING_REPORT);
-    return(0);
-}
-
+/** Connect to SSID with security
+ *  \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).\n");
+        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);
 }
 
+/** Main function
+ *  \param  none
+ *  \return int
+ */
 int main() {
-    // set current to 500mA since we're turning on the Wi-Fi
-    PWR_EN1 = 0;
-    PWR_EN2 = 1;
+    // Wi-Go set current to 500mA since we're turning on the Wi-Fi
+    SET_PWR_EN1;
+    SET_PWR_EN2;
 
-    pc.baud (115200);
+    pc.baud(115200);
 
-    NVIC_SetAllPriority(3);               // Set ALL interrupt priorities to level 3
+    /* KL25 specific code */
+    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 pending interrupt
-    WLAN_ISF_PCR  |= PORT_PCR_ISF_MASK;
-    WLAN_ISF_ISFR |= WLAN_ISF_MASK;
+    CLEAR_PCR_INTERRUPT;
+    CLEAN_PORT_INTERRUPT;
 
     GREEN_ON;
     wigo.start(0);
@@ -151,44 +136,28 @@
     #ifdef AP_KEY
             connect_to_ssid((uint8_t *)SSID,(uint8_t *)AP_KEY,AP_SECURITY); /* TODO rewrite to const vraiables - NOT MACROS */
     #else
-            connect_to_ssid(SSID);
+            connect_to_ssid((uint8_t *)SSID);
     #endif
 #else
-            connect_to_ssid(SSID);
+            connect_to_ssid((uint8_t *)SSID);
 #endif
             break;
         case '2':
-            //server_running = 1;
-            //runSmartConfig = 1;
+            printf("Starting Smart Config configuration.\n");
             start_smart_config();
-            init_tcp();
-            //server_running = 1;
-            RED_OFF;
-            GREEN_OFF;
-            BLUE_OFF;
-            printf("Press the reset button on your board and select 1...\n");
-            while(1)
-            {
-                GREEN_ON;
-                wait_ms(500);
-                GREEN_OFF;
-                wait_ms(500);
-            }
+            init_dhcp();
+
+            printf("Press the reset button on your board and select 0...\n");
+            while(1);
         default:
             printf("Wrong selection.\n");
             printf("Reset the board and try again.\n");
             break;
     }
-    //server_running = 0;
     SmartConfigProfilestored = SMART_CONFIG_SET;
     RED_OFF;
     GREEN_OFF;
     BLUE_OFF;
 
-    //dynamic dhcp is set by default
-#if IP_ALLOC_METHOD == USE_STATIC_IP
-    set_static_dhcp();
-#endif
-
     run_tcp_server();    // Run TCP/IP Connection to host
 }