void application_start( void ) { user_dct_data_t* dct; uint32_t sample_interval; uint16_t max_sockets = 10; wiced_init( ); /* Configure device */ wiced_configure_device( app_config ); /* Initialise Xively data. Xively data is shared among multiple threads; therefore a mutex is required */ memset( &xively_data, 0, sizeof( xively_data ) ); wiced_rtos_init_mutex( &xively_data.mutex ); /* Initialise temperature set point. Set point is shared among multiple threads; therefore a mutex is required */ wiced_rtos_init_mutex( &setpoint.mutex ); setpoint.temperature = DEFAULT_SETPOINT; adjust_setpoint_led_brightness( ); /* Initialise Thermistor */ wiced_adc_init( THERMISTOR_ADC, 5 ); /* Initialise Set Point Control keypad and assigns it's callback function to run on hardware_io_worker_thread's context */ gpio_keypad_enable( &setpoint_control_keypad, WICED_HARDWARE_IO_WORKER_THREAD, setpoint_control_keypad_handler, 250, 2, setpoint_control_key_list ); /* Disable roaming to other access points */ wiced_wifi_set_roam_trigger( -99 ); /* -99dBm ie. extremely low signal level */ /* Bringup the network interface */ wiced_network_up( WICED_STA_INTERFACE, WICED_USE_EXTERNAL_DHCP_SERVER, NULL ); /* Timestamp is needed for sending data to Xively. * Start automatic time synchronisation and synchronise once every day. */ sntp_start_auto_time_sync( 1 * DAYS ); wiced_dct_read_lock( (void**) &dct, WICED_FALSE, DCT_APP_SECTION, 0, sizeof(user_dct_data_t) ); sample_interval = dct->sample_interval; wiced_dct_read_unlock( dct, WICED_FALSE ); /* Setup timed events that will take a measurement & activate Xively thread to send measurements to Xively */ wiced_rtos_register_timed_event( &xively_timed_event, WICED_NETWORKING_WORKER_THREAD, send_data_to_xively, 10 * SECONDS, 0 ); wiced_rtos_register_timed_event( &temperature_timed_event, WICED_HARDWARE_IO_WORKER_THREAD, take_temperature_reading, sample_interval, 0 ); /* Start web server to display current temperature & setpoint */ wiced_http_server_start( &http_server, 80, max_sockets, web_pages, WICED_STA_INTERFACE, DEFAULT_URL_PROCESSOR_STACK_SIZE ); /* Advertise webpage services using Gedday */ gedday_init( WICED_STA_INTERFACE, "wiced-temp-controller" ); gedday_add_service( "temp_control web server", "_http._tcp.local", 80, 300, "" ); }
void application_start( ) { /* Initialise the WICED device */ wiced_init(); while ( 1 ) { WPRINT_APP_INFO( ( "Analog input voltage measurement:\n" ) ); for(uint8_t i=0; i<8; i++) { wiced_adc_init( analog_channel[i], 480 ); // This function only takes sample for the channel that selected by the last time invoking wiced_adc_init(). // So if you change to take sample for another channel, you need to invoke wiced_adc_init() to select this channel first. wiced_adc_take_sample( analog_channel[i], &analog_value[i] ); WPRINT_APP_INFO( ( "Channel %d input voltage: %d\n", i, analog_value[i] ) ); } wiced_rtos_delay_milliseconds( 3000 ); WPRINT_APP_INFO( ( "\n\n" ) ); } }
/* * Main application */ void application_start( void ) { char *msg = MSG_OFF; wiced_result_t ret = WICED_SUCCESS; int retries; uint16_t light_value; ret = aws_app_init(&app_info); /* Initialise Light sensor */ WPRINT_APP_INFO( ("Initializing Light Sensor\n" )); wiced_adc_init( WICED_LIGHT, 5 ); do { ret = aws_mqtt_conn_open( app_info.mqtt_object, mqtt_connection_event_cb ); if ( ret != WICED_SUCCESS ) { WPRINT_APP_INFO(("Failed\n")); break; } while ( 1 ) { /* Read light sensor */ wiced_adc_take_sample( WICED_LIGHT, &light_value ); WPRINT_APP_INFO( ("Light value %u\n", light_value) ); if ( light_value >= LIGHT_THRESHOLD ) { msg = MSG_ON; } else { msg = MSG_OFF; } /* Controlling the LED by publishing to mqtt topic "WICED_BULB" */ retries = 0; do { ret = aws_mqtt_app_publish( app_info.mqtt_object, WICED_MQTT_QOS_DELIVER_AT_LEAST_ONCE, (uint8_t*) app_info.thing_name, (uint8_t*) msg, strlen( msg ) ); retries++ ; } while ( ( ret != WICED_SUCCESS ) && ( retries < MQTT_PUBLISH_RETRY_COUNT ) ); if ( ret != WICED_SUCCESS ) { break; } wiced_rtos_delay_milliseconds( 5000 ); } aws_mqtt_conn_close( app_info.mqtt_object ); wiced_rtos_delay_milliseconds( MQTT_DELAY_IN_MILLISECONDS * 2 ); } while ( 1 ); aws_mqtt_conn_close( app_info.mqtt_object ); wiced_rtos_deinit_semaphore( &app_info.msg_semaphore ); WPRINT_APP_INFO(("[MQTT] Deinit connection...\n")); ret = wiced_mqtt_deinit( app_info.mqtt_object ); free( app_info.mqtt_object ); app_info.mqtt_object = NULL; return; }