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
Revision 1:99076f2d9408, committed 2013-09-13
- Comitter:
- Kojto
- Date:
- Fri Sep 13 18:02:03 2013 +0000
- Parent:
- 0:ce33c63eefe5
- Child:
- 2:c8cdcef31933
- Commit message:
- tcp server addition
Changed in this revision
--- a/cc3000_HostDriver.lib Sun Sep 08 18:31:33 2013 +0000 +++ b/cc3000_HostDriver.lib Fri Sep 13 18:02:03 2013 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/Kojto/code/cc3000_HostDriver/#b1f1be2cdbc9 +http://mbed.org/users/Kojto/code/cc3000_HostDriver/#f8b31c6e96d6
--- a/doTCPIP.cpp Sun Sep 08 18:31:33 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -#include "doTCPIP.h" -#include "cc3000.h" -#include "main.h" - -using namespace mbed_cc3000; - -extern cc3000 wigo; - -//volatile uint8_t newData; -// int32_t server_running; -//uint8_t ForceFixedSSID; -//int8_t runSmartConfig; // Flag indicating whether user requested to perform Smart Config -//volatile uint32_t ulCC3000Connected; -uint8_t ConnectUsingSmartConfig; -uint8_t myMAC[8]; -tUserFS userFS; - -int8_t requestBuffer[REQ_BUFFER_SIZE]; -//int32_t LAN_Connected = 0; - -uint8_t SmartConfigProfilestored = 0xff; - -#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 = NULL; -#endif - -/** \brief Flag indicating whether to print CC3000 Connection info */ - -//Device name - used for Smart config in order to stop the Smart phone configuration process -uint8_t DevServname[] = "CC3000"; -//volatile uint32_t SendmDNSAdvertisment; - - -/* TODO */ -void create_tcp_connection(int32_t port) -{ - const char python_msg[] = "Hello Python\n"; - int32_t stat; - int32_t sock; - //new TCP socket descriptor - int32_t newsock; - //destination address - sockaddr destAddr; - //local address - sockaddr LocalAddr; - socklen_t addrlen; - memset(&LocalAddr, 0, 8); - LocalAddr.family = AF_INET; - LocalAddr.data[0] = (port >> 8) & 0xff; - LocalAddr.data[1] = port & 0xff; - memset (&LocalAddr.data[2], 0, 4); - sock = wigo._socket.socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - while(sock == -1) sock = wigo._socket.socket(AF_INET, SOCK_DGRAM, IPPROTO_TCP); - wigo._socket.bind(sock,&LocalAddr,sizeof(sockaddr)); - wigo._socket.listen(sock, 1); - addrlen = sizeof(destAddr); - while(1) - { - newsock = -2; - printf("Server waiting for connection to Python\n"); - LED_D2_ON; - while((newsock == -1) || (newsock == -2)) - { - newsock = wigo._socket.accept(sock,&destAddr, &addrlen); - } - printf("Connected\n"); - //receive TCP data - if(newsock >= 0) - { - wigo._socket.recv(newsock, requestBuffer,20,0); - printf("Input = %s\n", requestBuffer); - stat = -2; - stat = wigo._socket.send(newsock, python_msg, strlen(python_msg), 0); - printf("status= %d\n", stat); - LED_D2_OFF; - } else printf("bad socket= %d\n", newsock); - wigo._socket.closesocket(newsock); - printf("Done, press any key to repeat\n"); - getchar(); -// printf("\x1B[2J"); //VT100 erase screen -// printf("\x1B[H"); //VT100 home - } -} - -void start_smart_config() { - wigo.start_smart_config(smartconfigkey); -} - -void init_tcp(void) -{ - int t; - tNetappIpconfigRetArgs ipinfo2; - - check_dhcp(); - //while(checkWiFiConnected() == false); - // If connectivity is good, run the primary functionality - // while(1) - // { - // if (checkWiFiConnected()) break; - // wait(1); - // } -// printf("Connected\n"); - // If we're not blocked by accept or others, obtain the latest status - wigo.get_ip_config(&ipinfo2); // data is returned in the ipinfo2 structure - printf("\n*** Wi-Go board DHCP assigned IP Address = %d.%d.%d.%d\n", ipinfo2.aucIP[3], ipinfo2.aucIP[2], ipinfo2.aucIP[1], ipinfo2.aucIP[0]); - LED_D3_ON; - - t = wigo._socket.mdnsAdvertiser(1, DevServname, sizeof(DevServname)); - printf("mDNS Status= %x\n", t); -} - -void run_tcp_server(void) -{ - LED_D3_OFF; - LED_D2_OFF; - printf("\n\nStarting TCP/IP Server\n"); - init_tcp(); - create_tcp_connection(TCPIP_PORT); -} - -bool check_dhcp(void) -{ - int32_t t; - //static uint8_t obtainIpInfoFlag = FALSE; - - // Wait until for dhcp - while (wigo.is_dhcp_configured() == false) - { - wait_ms(500); - printf("waiting\n"); - } - - // Check if we are in a connected state. If so, set flags and LED - //if (wigo.is_connected() == true) - //{ - //if (obtainIpInfoFlag == FALSE) - //{ - // obtainIpInfoFlag = TRUE; // Set flag so we don't constantly turn the LED on - //LED_D3_ON; - //If Smart Config was performed, we need to send complete notification to the configure (Smart Phone App) - // if (ConnectUsingSmartConfig==1) - // { - // ConnectUsingSmartConfig = 0; - // SmartConfigProfilestored = SMART_CONFIG_SET; - // } - - //} - t = wigo._socket.mdnsAdvertiser(1, DevServname, sizeof(DevServname)); - printf("mDNS Status= %x\n", t); - return true; - //} - //return FALSE; -} - -void do_FTC(void) -{ - printf("Running First Time Configuration\n"); - // server_running = 1; - //runSmartConfig = 1; - start_smart_config(); - init_tcp(); - RED_OFF; - GREEN_OFF; - BLUE_OFF; - userFS.FTC = 1; - wigo._nvmem.write( NVMEM_USER_FILE_1_FILEID, sizeof(userFS), 0, (uint8_t *) &userFS); - //runSmartConfig = 0; - SmartConfigProfilestored = SMART_CONFIG_SET; - wigo._wlan.stop(); - printf("FTC finished\n"); -} - - -
--- a/doTCPIP.h Sun Sep 08 18:31:33 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/**************************************************************************** -* -* doTCPIP.h - CC3000 TCP/IP -* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* -* Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the -* distribution. -* -* Neither the name of Texas Instruments Incorporated nor the names of -* its contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*****************************************************************************/ - -#ifndef DOTCPIP_H -#define DOTCPIP_H - -#include "cc3000.h" - -/** TCP/IP Functions -* -*/ -#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 - -// typedef struct { -// uint8_t FTC; // First time config performed -// uint8_t PP_version[2]; // Patch Programmer version -// uint8_t SERV_PACK[2]; // Service Pack Version -// uint8_t DRV_VER[3]; // Driver Version -// uint8_t FW_VER[3]; // Firmware Version -// uint8_t validCIK; // CIK[] is valid (Client Interface Key) -// uint8_t CIK[40]; -// } userFS_t; - -extern mbed_cc3000::tUserFS userFS; - -// extern volatile uint32_t ulSmartConfigFinished,ulCC3000DHCP, OkToDoShutDown, ulCC3000DHCP_configured; -// extern int32_t server_running; -// extern volatile uint8_t newData; -// extern uint8_t ForceFixedSSID; -// extern int8_t runSmartConfig; -// extern int8_t requestBuffer[]; - extern uint8_t myMAC[8]; - extern uint8_t SmartConfigProfilestored; - -// extern void StartSmartConfig(void); - -bool check_dhcp(void); -void start_smart_config(void); -void create_tcp_connection(int32_t port); -void init_tcp(void); -void run_tcp_server(void); -void do_FTC(void); - -#endif // DOTCPIP_H
--- 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 }
--- a/main.h Sun Sep 08 18:31:33 2013 +0000 +++ b/main.h Fri Sep 13 18:02:03 2013 +0000 @@ -1,6 +1,25 @@ +/* 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_BOARD 1 + +#if (WIGO_BOARD == 1) + extern DigitalOut ledr; extern DigitalOut ledg; extern DigitalOut ledb; @@ -27,4 +46,47 @@ #define LED_D3_ON led3 = 0; #define LED_D3_TOGGLE led3 = !led3; +#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 + +#define CLEAR_PCR_INTERRUPT +#define CLEAN_PORT_INTERRUPT + +#define RED_OFF +#define RED_ON +#define RED_TOGGLE +#define GREEN_OFF +#define GREEN_ON +#define GREEN_TOGGLE +#define BLUE_OFF +#define BLUE_ON +#define BLUE_TOGGLE +#define LED_D1_OFF +#define LED_D1_ON +#define LED_D1_TOGGLE +#define LED_D2_OFF +#define LED_D2_ON +#define LED_D2_TOGGLE +#define LED_D3_OFF +#define LED_D3_ON +#define LED_D3_TOGGLE + +#define SET_PWR_EN1 +#define SET_PWR_EN2 + +#define WLAN_ISF_PCR +#define WLAN_ISF_ISFR +#define WLAN_ISF_MASK + #endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tcp_ip_demo.cpp Fri Sep 13 18:02:03 2013 +0000 @@ -0,0 +1,197 @@ +/* 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 "tcp_ip_demo.h" +#include "cc3000.h" +#include "main.h" + +using namespace mbed_cc3000; + +extern cc3000 wigo; + +uint8_t ConnectUsingSmartConfig; +uint8_t myMAC[8]; +tUserFS userFS; + +uint8_t SmartConfigProfilestored = 0xff; + +#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 + +/* Device name - used for Smart config in order to stop the Smart phone configuration process */ +static uint8_t DevServname[] = "CC3000"; +static int8_t requestBuffer[REQ_BUFFER_SIZE]; + +/** Start tcp server + * \param port Port for server + * \return none + */ +void create_tcp_connection(int32_t port) { + const char python_msg[] = "Hello Python\n"; + int32_t stat; + cc3000_server server = wigo.create_tcp_server(0, 15000); + + server.bind(); + server.listen(1); /* backlog = 1 */ + while (1) { + stat = server.accept(); + printf("Connected\n"); + if (stat >= 0) { + server.receive(requestBuffer,20,0); + printf("Input = %s\n", requestBuffer); + stat = server.send((void *)python_msg, strlen(python_msg), 0); + printf("status= %d\n", stat); + } else { + printf("bad socket= %d\n", stat); + } + server.close(); + printf("Done, press any key to repeat\n"); + getchar(); + } +} + +/** Start smart config + * \param none + * \return none + */ +void start_smart_config() { + wigo.start_smart_config(smartconfigkey); +} + +/** Initialize + * \param none + * \return none + */ +void init_dhcp(void) +{ + int32_t t; + tNetappIpconfigRetArgs ipinfo2; + + //dynamic dhcp is set by default +#if IP_ALLOC_METHOD == USE_STATIC_IP + set_static_dhcp(); +#endif + check_dhcp(); + + // If we're not blocked by accept or others, obtain the latest status + wigo.get_ip_config(&ipinfo2); // data is returned in the ipinfo2 structure + printf("\n*** Wi-Go board DHCP assigned IP Address = %d.%d.%d.%d\n", ipinfo2.aucIP[3], ipinfo2.aucIP[2], ipinfo2.aucIP[1], ipinfo2.aucIP[0]); + + t = wigo._socket.mdnsAdvertiser(1, DevServname, sizeof(DevServname)); + printf("mDNS Status= %x\n", t); +} + +/** Waits for dhcp to be set + * \param none + * \return none + */ +void check_dhcp(void) +{ + int32_t t; + + while (wigo.is_dhcp_configured() == false) + { + wait_ms(500); + printf("Waiting for dhcp to be set.\n"); + } + + t = wigo._socket.mdnsAdvertiser(1, DevServname, sizeof(DevServname)); + printf("mDNS Status= %x\n", t); +} + +/** Sets static DHCP (auto dhpc by default) + * \param none + * \return none + */ +void 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); +} + +/** Executes functions for tcp/ip server + * \param none + * \return none + */ +void run_tcp_server(void) +{ + init_dhcp(); + printf("\n\nStarting TCP/IP Server\n"); + create_tcp_connection(TCPIP_PORT); +} + +/** First time configuration + * \param none + * \return none + */ +void do_FTC(void) +{ + printf("Running First Time Configuration\n"); + start_smart_config(); + init_dhcp(); + userFS.FTC = 1; + wigo.set_user_file_info((uint8_t *)&userFS, sizeof(userFS)); + SmartConfigProfilestored = SMART_CONFIG_SET; + wigo._wlan.stop(); + printf("FTC finished.\n"); +} + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tcp_ip_demo.h Fri Sep 13 18:02:03 2013 +0000 @@ -0,0 +1,61 @@ +#ifndef DOTCPIP_H +#define DOTCPIP_H + +#include "cc3000.h" + +/** TCP/IP Functions +* +*/ +#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 + + +extern mbed_cc3000::tUserFS userFS; + +extern uint8_t myMAC[8]; +extern uint8_t SmartConfigProfilestored; + + +void check_dhcp(void); +void start_smart_config(void); +void create_tcp_connection(int32_t port); +void init_dhcp(void); +void run_tcp_server(void); +void do_FTC(void); +void set_dhcp(void); + +#endif // DOTCPIP_H