/***************************************************************************** * * Description: * The first function to execute * ****************************************************************************/ int main(void) { tU8 error; tU8 pid; //immediately turn off buzzer (if connected) IODIR0 |= 0x00000080; IOSET0 = 0x00000080; osInit(); osCreateProcess(initProc, initStack, INIT_STACK_SIZE, &pid, 1, NULL, &error); osStartProcess(pid, &error); osStart(); return 0; }
int_t main(void) { error_t error; NetInterface *interface; OsTask *task; static DhcpClientSettings dhcpClientSettings; static DhcpClientCtx dhcpClientContext; //Update system core clock SystemCoreClockUpdate(); //Configure debug UART debugInit(115200); //Start-up message TRACE_INFO("\r\n"); TRACE_INFO("**********************************\r\n"); TRACE_INFO("*** CycloneTCP FTP Client Demo ***\r\n"); TRACE_INFO("**********************************\r\n"); TRACE_INFO("Copyright: 2010-2013 Oryx Embedded\r\n"); TRACE_INFO("Compiled: %s %s\r\n", __DATE__, __TIME__); TRACE_INFO("Target: SAM4E\r\n"); TRACE_INFO("\r\n"); //IO configuration ioInit(); //Initialize LCD display GLCD_Init(); GLCD_SetBackColor(Blue); GLCD_SetTextColor(White); GLCD_Clear(Blue); //Welcome message lcdSetCursor(0, 0); printf("FTP Client Demo\r\n"); //TCP/IP stack initialization error = tcpIpStackInit(); //Any error to report? if(error) { //Debug message TRACE_ERROR("Failed to initialize TCP/IP stack!\r\n"); } //Configure the first Ethernet interface interface = &netInterface[0]; //Select the relevant network adapter interface->nicDriver = &sam4eEthDriver; interface->phyDriver = &ksz8051PhyDriver; //Interface name strcpy(interface->name, "eth0"); //Set host MAC address macStringToAddr("00-AB-CD-EF-04-16", &interface->macAddr); #if (IPV6_SUPPORT == ENABLED) //Set link-local IPv6 address ipv6StringToAddr("fe80::00ab:cdef:0416", &interface->ipv6Config.linkLocalAddr); #endif //Initialize network interface error = tcpIpStackConfigInterface(interface); //Any error to report? if(error) { //Debug message TRACE_ERROR("Failed to configure interface %s!\r\n", interface->name); } #if 1 //Set the network interface to be configured by DHCP dhcpClientSettings.interface = &netInterface[0]; //Disable rapid commit option dhcpClientSettings.rapidCommit = FALSE; //Start DHCP client error = dhcpClientStart(&dhcpClientContext, &dhcpClientSettings); //Failed to start DHCP client? if(error) { //Debug message TRACE_ERROR("Failed to start DHCP client!\r\n"); } #else //Manual configuration interface = &netInterface[0]; //IPv4 address ipv4StringToAddr("192.168.0.20", &interface->ipv4Config.addr); //Subnet mask ipv4StringToAddr("255.255.255.0", &interface->ipv4Config.subnetMask); //Default gateway ipv4StringToAddr("192.168.0.254", &interface->ipv4Config.defaultGateway); //Primary and secondary DNS servers interface->ipv4Config.dnsServerCount = 2; ipv4StringToAddr("212.27.40.240", &interface->ipv4Config.dnsServer[0]); ipv4StringToAddr ("212.27.40.241", &interface->ipv4Config.dnsServer[1]); #endif //Create user task task = osTaskCreate("User Task", userTask, NULL, 500, 1); //Failed to create the task? if(task == OS_INVALID_HANDLE) { //Debug message TRACE_ERROR("Failed to create task!\r\n"); } //Create a task to blink the LED task = osTaskCreate("Blink", blinkTask, NULL, 500, 1); //Failed to create the task? if(task == OS_INVALID_HANDLE) { //Debug message TRACE_ERROR("Failed to create task!\r\n"); } //Start the execution of tasks osStart(); //This function should never return return 0; }
int_t main(void) { error_t error; NetInterface *interface; OsTask *task; #if USE_DHCP static DhcpClientSettings dhcpClientSettings; static DhcpClientCtx dhcpClientContext; #endif static HttpServerSettings httpServerSettings; static HttpServerContext httpServerContext; SystemInit(); //Configure debug UART debugInit(); //Start-up message TRACE_INFO("\r\n"); TRACE_INFO("***********************************\r\n"); TRACE_INFO("*** CycloneTCP HTTP Client Demo ***\r\n"); TRACE_INFO("***********************************\r\n"); TRACE_INFO("Copyright: 2010-2013 Oryx Embedded\r\n"); TRACE_INFO("Compiled: %s %s\r\n", __DATE__, __TIME__); TRACE_INFO("Target: STM32F407\r\n"); TRACE_INFO("\r\n"); //LED configuration STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); STM_EVAL_LEDInit(LED5); STM_EVAL_LEDInit(LED6); //Clear LEDs STM_EVAL_LEDOff(LED3); STM_EVAL_LEDOff(LED4); STM_EVAL_LEDOff(LED5); STM_EVAL_LEDOff(LED6); //Initialize user button STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_GPIO); //PRNG initialization error = yarrowInit(&yarrowContext); //Any error to report? if(error) { //Debug message TRACE_ERROR("Failed to initialize PRNG!\r\n"); } //Generate a random seed //Properly seed the PRNG error = yarrowSeed(&yarrowContext, seed, sizeof(seed)); //Any error to report? if(error) { //Debug message TRACE_ERROR("Failed to seed PRNG!\r\n"); } //TCP/IP stack initialization error = tcpIpStackInit(); //Any error to report? if(error) { //Debug message TRACE_ERROR("Failed to initialize TCP/IP stack!\r\n"); } //Configure the first Ethernet interface interface = &netInterface[0]; //Select the relevant network adapter interface->nicDriver = &stm32f4x7EthDriver; interface->phyDriver = &dp83848PhyDriver; //Interface name strcpy(interface->name, "eth0"); //Set host MAC address macStringToAddr("00-AB-CD-EF-04-07", &interface->macAddr); #if (IPV6_SUPPORT == ENABLED) //Set link-local IPv6 address ipv6StringToAddr("fe80::00ab:cdef:0407", &interface->ipv6Config.linkLocalAddr); #endif //Initialize network interface error = tcpIpStackConfigInterface(interface); //Any error to report? if(error) { //Debug message TRACE_ERROR("Failed to configure interface %s!\r\n", interface->name); } #if USE_DHCP //Set the network interface to be configured by DHCP dhcpClientSettings.interface = &netInterface[0]; //Disable rapid commit option dhcpClientSettings.rapidCommit = FALSE; //Start DHCP client error = dhcpClientStart(&dhcpClientContext, &dhcpClientSettings); //Failed to start DHCP client? if(error) { //Debug message TRACE_ERROR("Failed to start DHCP client!\r\n"); } #else //Manual configuration interface = &netInterface[0]; //IPv4 address ipv4StringToAddr(IPV4_STATIC_IP, &interface->ipv4Config.addr); //Subnet mask ipv4StringToAddr(IPV4_STATIC_MASK, &interface->ipv4Config.subnetMask); //Default gateway ipv4StringToAddr(IPV4_STATIC_GW, &interface->ipv4Config.defaultGateway); //Primary and secondary DNS servers interface->ipv4Config.dnsServerCount = 2; ipv4StringToAddr(IPV4_STATIC_DNS0, &interface->ipv4Config.dnsServer[0]); ipv4StringToAddr(IPV4_STATIC_DNS1, &interface->ipv4Config.dnsServer[1]); #endif //Bind HTTP server to the desired interface httpServerSettings.interface = &netInterface[0]; //Listen to port 80 httpServerSettings.port = HTTP_PORT; //Specify the server's root directory strcpy(httpServerSettings.rootDirectory, "/www/"); //Set default home page strcpy(httpServerSettings.defaultDocument, "index.shtm"); //Callback functions httpServerSettings.cgiCallback = httpServerCgiCallback; httpServerSettings.uriNotFoundCallback = httpServerUriNotFoundCallback; //Start HTTP server error = httpServerStart(&httpServerContext, &httpServerSettings); //Failed to start HTTP server? if(error) { //Debug message TRACE_ERROR("Failed to start HTTP server!\r\n"); } //Create user task task = osTaskCreate("User Task", userTask, interface, 500, 1); //Failed to create the task? if(task == OS_INVALID_HANDLE) { //Debug message TRACE_ERROR("Failed to create task!\r\n"); } //Create a task to blink the LED task = osTaskCreate("Blink", blinkTask, NULL, 500, 1); //Failed to create the task? if(task == OS_INVALID_HANDLE) { //Debug message TRACE_ERROR("Failed to create task!\r\n"); } //Start the execution of tasks osStart(); //This function should never return return 0; }