Weather control switch for connected day. NXP LPC 1768 module. Ethernet connectivity.
Dependencies: EthernetInterface mbed-rtos mbed nanoservice_client_1_12
Fork of Trenton_Switch_LPC1768_WIFLY by
Diff: main.cpp
- 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 }