]> the.earth.li Git - esp8266-clock.git/blobdiff - user_main.c
Update for SDK 3.0.4
[esp8266-clock.git] / user_main.c
index c6ae56740d36e6165f85be9b37d114ca865086c3..8bd1628975429e79b388f43edeca12916ea0ad90 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Jonathan McDowell <noodles@earth.li>
+ * Copyright 2017-2019 Jonathan McDowell <noodles@earth.li>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,6 +28,7 @@
 
 struct station_config wificfg;
 static os_timer_t update_timer;
+static os_timer_t ntp_timer;
 
 static const struct fontchar clocknums[] = {
        { .width = 5,
@@ -105,15 +106,24 @@ void ICACHE_FLASH_ATTR update_func(void *arg)
        max7219_show();
 }
 
+void ICACHE_FLASH_ATTR ntp_func(void *arg)
+{
+       ntp_get_time();
+}
+
 void ICACHE_FLASH_ATTR wifi_callback(System_Event_t *evt)
 {
        switch (evt->event) {
        case EVENT_STAMODE_CONNECTED:
        case EVENT_STAMODE_DISCONNECTED:
+               os_timer_disarm(&ntp_timer);
                break;
        case EVENT_STAMODE_GOT_IP:
                ntp_get_time();
                ota_check();
+               os_timer_disarm(&ntp_timer);
+               os_timer_setfn(&ntp_timer, ntp_func, NULL);
+               os_timer_arm(&ntp_timer, 3600 * 1000 /* Hourly */, 1);
        default:
                break;
        }
@@ -134,6 +144,42 @@ void ICACHE_FLASH_ATTR wifi_init(void)
        wifi_set_event_handler_cb(wifi_callback);
 }
 
+#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM SYSTEM_PARTITION_CUSTOMER_BEGIN
+
+void user_pre_init(void)
+{
+       partition_item_t p_table[] = {
+               { SYSTEM_PARTITION_BOOTLOADER,          0x00000, 0x01000 },
+               { SYSTEM_PARTITION_OTA_1,               0x01000, 0x76000 },
+               { SYSTEM_PARTITION_OTA_2,               0x81000, 0x76000 },
+               { SYSTEM_PARTITION_RF_CAL,              0xFB000, 0x01000 },
+               { SYSTEM_PARTITION_PHY_DATA,            0xFC000, 0x01000 },
+               { SYSTEM_PARTITION_SYSTEM_PARAMETER,    0xFD000, 0x03000 },
+       };
+       uint32_t map = system_get_flash_size_map();
+
+       switch (map) {
+       case FLASH_SIZE_8M_MAP_512_512: /* 1MB /  8Mb */
+               break;
+       case FLASH_SIZE_32M_MAP_512_512: /* 4MB / 32Mb */
+               /* Fix up system partition table bits */
+               p_table[5].addr += 0x300000;
+               p_table[6].addr += 0x300000;
+               p_table[7].addr += 0x300000;
+               break;
+       default:
+               os_printf("Unknown flash map %u\n", map);
+               while(1) ;
+       }
+
+       if (!system_partition_table_regist(p_table,
+                               sizeof(p_table)/sizeof(p_table[0]),
+                               map)) {
+               os_printf("system_partition_table_regist fail\n");
+               while(1);
+       }
+}
+
 void user_init(void)
 {
        /* Fix up UART0 baud rate */