Пример #1
0
static void init(void)
{
    memset(&time_digits_layers, 0, sizeof(time_digits_layers));
    memset(&time_digits_images, 0, sizeof(time_digits_images));

    const int inbound_size = 64;
    const int outbound_size = 64;
    app_message_open(inbound_size, outbound_size);  

    window = window_create();
    if (window == NULL)
    {
        return;
    }

    window_set_background_color(window, GColorBlack);
    
    canvas = layer_create(GRect(0, 0, 144, 168));
	layer_set_update_proc(canvas, (LayerUpdateProc) render);
	layer_add_child(window_get_root_layer(window), canvas);
	
    window_stack_push(window, true);
    Layer *window_layer = window_get_root_layer(window);
    
    load_settings();
    
    // Open AppMessage connection
    app_message_register_inbox_received(inbox_received_handler);
    app_message_open(128, 128);
    
    //owm_weather_init(5ba77aab84470992ddc7e49e4985aeab);
    //events_app_message_open();
    //owm_weather_fetch();    
    handle_weather();
    
    handle_battery(battery_state_service_peek());
    battery_state_service_subscribe(handle_battery);
 
    // Create time and date layers
    GRect dummy_frame = { {0, 0}, {0, 0} };

    for (int i = 0; i < TOTAL_TIME_DIGITS; i++)
    {
        time_digits_layers[i] = bitmap_layer_create(dummy_frame);
        layer_add_child(window_layer, bitmap_layer_get_layer(time_digits_layers[i]));
    }

    mFont = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_20));
    mDayText = malloc(mDayTextSize);
    mWeatherText = malloc(mWeatherTextSize);
    mBatteryText = malloc(mBatteryTextSize);
    
    // Avoids a blank screen on watch start.
    time_t now = time(NULL);
    struct tm *tick_time = localtime(&now);
    handle_tick(tick_time, DAY_UNIT + HOUR_UNIT + MINUTE_UNIT);
    
    tick_timer_service_subscribe(MINUTE_UNIT, handle_tick);
}
Пример #2
0
static void process_tuple(Tuple* t) {
    // Store incoming information
    static char conditions_buffer[16];
    
    switch(t->key) {    
        case KEY_SCALE:
            if (strcmp(t->value->cstring, "0") == 0)
                scale = 0;
            else if (strcmp(t->value->cstring, "1") == 0)
                scale = 1;
            else if (strcmp(t->value->cstring, "2") == 0)
                scale = 2;
            else if (strcmp(t->value->cstring, "3") == 0)
                scale = 3;
            write_settings_to_memory();
            handle_weather();
            break;
        case KEY_CLOCK:
            if (strcmp(t->value->cstring, "0") == 0)
                clock_format = 0;
            else if (strcmp(t->value->cstring, "1") == 0)
                clock_format = 1;
            write_settings_to_memory();
            update_time();
            break;
        case KEY_DATE:
            if (strcmp(t->value->cstring, "0") == 0)
                date_format = 0;
            else if (strcmp(t->value->cstring, "1") == 0)
                date_format = 1;
            else if (strcmp(t->value->cstring, "2") == 0)
                date_format = 2;
            write_settings_to_memory();
            handle_date();
            break;
        case KEY_TEMPERATURE:
            update_scale((int)t->value->int32);
            break;
        case KEY_CONDITIONS:
            snprintf(conditions_buffer, sizeof(conditions_buffer), "%s", t->value->cstring);
            text_layer_set_text(condition_layer, conditions_buffer);
            break;
        default:
            APP_LOG(APP_LOG_LEVEL_ERROR, "Key %d not recognized!", (int)t->key);
            break;
    }
}
Пример #3
0
void handle_minute_tick(struct tm *tick_time, TimeUnits units_changed) {
    handle_battery();
    handle_date();
    
    switch (clock_format) {
        case 0:    // diurnal
            if(((tick_time->tm_min) * 60 + tick_time->tm_sec) % 50 == 0)
		        update_time();
            break;
        case 1:    // semidiurnal
            if(((tick_time->tm_min) * 60 + tick_time->tm_sec) % 25 == 0)
		        update_time();
            break;
    }
    
    // Get weather update every 30 minutes
    if(tick_time->tm_min % 30 == 0)
        handle_weather();
}