int platform_thread_destroy(Thread* t) { if (!t) return -1; wiced_result_t rc = wiced_rtos_delete_thread(&t->tid); platform_semaphore_deinit(&t->join_sem); if (rc != WICED_SUCCESS) return -1; return 0; }
wiced_result_t ota_server_stop (ota_server_t* server) { server->quit = WICED_TRUE; if ( wiced_rtos_is_current_thread( &server->thread ) != WICED_SUCCESS ) { wiced_rtos_thread_force_awake( &server->thread ); wiced_rtos_thread_join( &server->thread ); wiced_rtos_delete_thread( &server->thread ); } return WICED_SUCCESS; }
wiced_result_t wiced_stop_dhcp_server(wiced_dhcp_server_t* server) { DHCP_CHECK_PARAMS( (server == NULL), WICED_BADARG ); server->quit = WICED_TRUE; if ( wiced_rtos_is_current_thread( &server->thread ) != WICED_SUCCESS ) { wiced_rtos_thread_force_awake( &server->thread ); wiced_rtos_thread_join( &server->thread ); wiced_rtos_delete_thread( &server->thread ); } return WICED_SUCCESS; }
wiced_result_t wiced_rtos_delete_worker_thread( wiced_worker_thread_t* worker_thread ) { if ( wiced_rtos_delete_thread( &worker_thread->thread ) != WICED_SUCCESS ) { rk_printf("iced_rtos_delete_thread delfail\n"); return WICED_ERROR; } if ( wiced_rtos_deinit_queue( &worker_thread->event_queue ) != WICED_SUCCESS ) { rk_printf("wiced_rtos_deinit_queue delfail\n"); return WICED_ERROR; } return WICED_SUCCESS; }
wiced_result_t command_console_deinit(void) { wiced_result_t result; cons.quit = WICED_TRUE; /* Wait on a semaphore till the console thread is ready to quit */ result = wiced_rtos_get_semaphore(&cons.console_quit_semaphore, 1000); if( result != WICED_SUCCESS ) { return result; } wiced_rtos_thread_join(&cons.console_thread); result = wiced_rtos_delete_thread( &cons.console_thread); wiced_rtos_deinit_semaphore(&cons.console_quit_semaphore); if( cons.uart != STDIO_UART ) { wiced_uart_deinit(cons.uart); } return WICED_SUCCESS; }
wiced_result_t wiced_wlu_server_serial_start( wiced_uart_t uart_id ) { wiced_assert("wlu_server already started", (wlu_server.started == WICED_FALSE)); wlu_server.started = WICED_TRUE; wlu_server.uart_id = uart_id; WWD_WLAN_KEEP_AWAKE( ); if ( uart_id != STDIO_UART ) { static const platform_uart_config_t uart_config = { .baud_rate = 115200, .data_width = DATA_WIDTH_8BIT, .parity = NO_PARITY, .stop_bits = STOP_BITS_1, .flow_control = FLOW_CONTROL_DISABLED, }; WICED_VERIFY( wiced_uart_init( uart_id, &uart_config, NULL ) ); } /* Start wlu server thread */ wiced_rtos_create_thread(&wlu_server.thread, WLU_SERVER_THREAD_PRIORITY, "wlu_server", wlu_server_thread, WLU_SERVER_STACK_SIZE, &wlu_server); return WICED_SUCCESS; } wiced_result_t wiced_wlu_server_serial_stop( void ) { if ( wiced_rtos_is_current_thread( &wlu_server.thread ) != WICED_SUCCESS ) { wiced_rtos_thread_force_awake( &wlu_server.thread ); wiced_rtos_thread_join( &wlu_server.thread ); wiced_rtos_delete_thread( &wlu_server.thread ); } WWD_WLAN_LET_SLEEP( ); wlu_server.started = WICED_FALSE; return WICED_SUCCESS; } static void wlu_server_thread( uint32_t thread_input ) { wiced_wlu_server_t* wlu = (wiced_wlu_server_t*) thread_input; int argc = 2; char *argv[] = { (char*)wlu->uart_id, "" }; #ifdef RWL_SOCKET char *arge[] = { (char *)wlu->eth_port, "" }; #endif wiced_assert( "invalid argument", wlu->uart_id < WICED_UART_MAX ); UNUSED_PARAMETER(thread_input); #ifdef RWL_SOCKET if (wlu->eth_started == WICED_TRUE) #endif { #ifdef RWL_SOCKET remote_server_exec( argc, (wlu->eth_started == WICED_TRUE)?arge:argv, NULL ); #else remote_server_exec(argc, argv, NULL); #endif } }