int initDriver(unsigned short patch) { ulCC3000DHCP = 0; ulCC3000Connected = 0; //ulSocket = 0; ulSmartConfigFinished=0; bEnableUnSolEvent = 0; wlan_init( CC3000_UsynchCallback,sendWLFWPatch, sendDriverPatch, sendBootLoaderPatch, ReadWlanInterruptPin, WlanInterruptEnable, WlanInterruptDisable, WriteWlanPin); wlan_start(patch); wlan_set_event_mask(HCI_EVNT_WLAN_ASYNC_PING_REPORT); ucStopSmartConfig = 0; bEnableUnSolEvent = 1;//To Call hci_unsolicited_event_handler() in every 500ms } void SmartConfig() { long lStatus = 0; char loop = 1; int loop_index = 0; char device_name[] = "CC3000"; char smartconfigkey[] = "Charleston56"; bEnableUnSolEvent = 0; if((lStatus = wlan_ioctl_set_connection_policy(0, 0, 0)) != 0) return; if((lStatus = wlan_ioctl_del_profile(255)) != 0) return; if((lStatus = wlan_first_time_config_set_prefix(aucCC3000_prefix)) != 0) return; if((lStatus = wlan_smart_config_start(0)) != 0) return; hci_unsolicited_event_handler(); while (ulSmartConfigFinished == 0) { hci_unsolicited_event_handler(); MCF_GPIO_GPIO_OUT ^= MCF_GPIO_GPIO_OUT_GPIO_OUT16; //LG6 -WIFI LED } if((lStatus = wlan_smart_config_process()) != 0) return; if((lStatus = wlan_ioctl_set_connection_policy(0, 0, 1)) != 0) return; wlan_stop(); DEASSERT_CS(); tx_thread_sleep(3000); wlan_start(0); while(loop) { if ((ucStopSmartConfig == 1) && (ulCC3000DHCP == 1)) { while (loop_index < 3) { if((lStatus = mdnsAdvertiser(1,device_name,strlen(device_name))) != 0) return; loop_index++; } ucStopSmartConfig = 0; loop =0; } } } void CC3000_UsynchCallback(long lEventType, char * data, unsigned char length) { if (lEventType == HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE) { ulSmartConfigFinished = 1; ucStopSmartConfig = 1; } if (lEventType == HCI_EVNT_WLAN_UNSOL_CONNECT) { ulCC3000Connected = 1; } if (lEventType == HCI_EVNT_WLAN_UNSOL_DISCONNECT) { ulCC3000Connected = 0; ulCC3000DHCP = 0; ulCC3000DHCP_configured = 0; } if (lEventType == HCI_EVNT_WLAN_UNSOL_DHCP) { ulCC3000DHCP = 1; } if (lEventType == HCI_EVENT_CC3000_CAN_SHUT_DOWN) { OkToDoShutDown = 1; } void CC3000_UsynchCallback(long lEventType, char * data, unsigned char length) { if (lEventType == HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE) { ulSmartConfigFinished = 1; ucStopSmartConfig = 1; } if (lEventType == HCI_EVNT_WLAN_UNSOL_CONNECT) { ulCC3000Connected = 1; } if (lEventType == HCI_EVNT_WLAN_UNSOL_DISCONNECT) { ulCC3000Connected = 0; ulCC3000DHCP = 0; ulCC3000DHCP_configured = 0; } if (lEventType == HCI_EVNT_WLAN_UNSOL_DHCP) { ulCC3000DHCP = 1; } if (lEventType == HCI_EVENT_CC3000_CAN_SHUT_DOWN) { OkToDoShutDown = 1; } if (lEventType == HCI_EVNT_WLAN_KEEPALIVE) { MCF_GPIO_GPIO1_OUT ^= MCF_GPIO_GPIO1_OUT_GPIO_OUT37; //LG3 -J1708 LED } } } void main { init_spi(); initDriver(0); while(1) { tx_thread_sleep(100); } SmartConfig(); }