Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ADT7410 MQTToveCC3000 MbedJSONValue NVIC_set_all_priorities cc3000_hostdriver_mbedsocket2 mbed
Fork of cc3000_simple_socket_demo 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
}
