/* * Common stuff we always do at the end of setup */ EXTFN void morpheuz_load_standard_postamble() { read_internal_data(); read_config_data(); // Start clock tick_timer_service_subscribe(MINUTE_UNIT, handle_minute_tick); battery_state_handler(battery_state_service_peek()); battery_state_service_subscribe(&battery_state_handler); bluetooth_state_handler(bluetooth_connection_service_peek()); bluetooth_connection_service_subscribe(bluetooth_state_handler); init_morpheuz(); light_enable_interaction(); }
int main( int argc, char **argv ) { int port; char *config_data = (char *)malloc(MAX_SIZE_CONFIG_DATA * sizeof(char)); if(argc == 2) { read_config_data(argv[1], &port, config_data); } else { fprintf(stderr, "Не найден конфигурационный файл.\n"); return 1; } struct event_base *base = event_base_new(); if( !base ) { fprintf( stderr, "Ошибка при создании объекта event_base.\n" ); return 1; } struct sockaddr_in SockAddr; SockAddr.sin_family = AF_INET; SockAddr.sin_port = htons(port); SockAddr.sin_addr.s_addr = htonl(INADDR_ANY); memset(&(SockAddr.sin_zero), '\0', 8); struct evconnlistener *listener = evconnlistener_new_bind( base, accept_connection_cb, config_data, (LEV_OPT_CLOSE_ON_FREE | LEV_OPT_REUSEABLE), -1, (struct sockaddr *)&SockAddr, sizeof(SockAddr) ); if( !listener ) { fprintf(stderr, "Ошибка при создании объекта evconnlistener.\n" ); return 1; } evconnlistener_set_error_cb( listener, accept_error_cb ); event_base_dispatch( base ); free(config_data); return 0; }