|
@@ -42,112 +42,128 @@
|
|
#include "hal/ws2812.h"
|
|
#include "hal/ws2812.h"
|
|
|
|
|
|
#include "interface/wifi_interface.h"
|
|
#include "interface/wifi_interface.h"
|
|
|
|
+#include "interface/encoder_interface.h"
|
|
|
|
|
|
#include "user_config.h"
|
|
#include "user_config.h"
|
|
|
|
|
|
static const char* TAG = "main.c";
|
|
static const char* TAG = "main.c";
|
|
|
|
|
|
|
|
+typedef struct {
|
|
|
|
+ bool wifi_connected;
|
|
|
|
+ bool motion_detector;
|
|
|
|
+} system_config_t;
|
|
|
|
+
|
|
|
|
+static system_config_t system_config;
|
|
|
|
+
|
|
|
|
+void ICACHE_FLASH_ATTR imu_cb(IMU_Interrupt_et interrupt)
|
|
|
|
+{
|
|
|
|
+ switch(interrupt)
|
|
|
|
+ {
|
|
|
|
+ case IMU_MOTION:
|
|
|
|
+ {
|
|
|
|
+ system_config.motion_detector = false;
|
|
|
|
+ if (system_config.wifi_connected == false)
|
|
|
|
+ {
|
|
|
|
+ Encoder_DisableIOInterrupts();
|
|
|
|
+ Encoder_DisableMotion();
|
|
|
|
+ Light_AccessPointSearching();
|
|
|
|
+ WiFi_Connect(WIFI_TIMEOUT);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ default:
|
|
|
|
+ {
|
|
|
|
+ ESP_LOGE(TAG, "Unknown IMU interrupt")
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
|
|
void ICACHE_FLASH_ATTR wifi_success_cb(void)
|
|
void ICACHE_FLASH_ATTR wifi_success_cb(void)
|
|
{
|
|
{
|
|
- ESP_LOGV(TAG, "Wi-Fi Success");
|
|
+ system_config.wifi_connected = true;
|
|
}
|
|
}
|
|
|
|
|
|
void ICACHE_FLASH_ATTR wifi_fail_cb(wifi_failure_et failure_code)
|
|
void ICACHE_FLASH_ATTR wifi_fail_cb(wifi_failure_et failure_code)
|
|
{
|
|
{
|
|
- ESP_LOGV(TAG, "Wi-Fi failure")
|
|
+ system_config.wifi_connected = false;
|
|
|
|
+
|
|
switch (failure_code)
|
|
switch (failure_code)
|
|
{
|
|
{
|
|
case WIFI_AP_DISCONNECTED:
|
|
case WIFI_AP_DISCONNECTED:
|
|
{
|
|
{
|
|
ESP_LOGI(TAG, "Wi-Fi connection lost");
|
|
ESP_LOGI(TAG, "Wi-Fi connection lost");
|
|
|
|
+ Light_AccessPointFailure();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFI_AP_AUTHMODE_CHANGE:
|
|
case WIFI_AP_AUTHMODE_CHANGE:
|
|
{
|
|
{
|
|
ESP_LOGI(TAG, "Wi-Fi credential failure or change");
|
|
ESP_LOGI(TAG, "Wi-Fi credential failure or change");
|
|
|
|
+ Light_AccessPointFailure();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFI_NO_STORED_APS_FAILURE:
|
|
case WIFI_NO_STORED_APS_FAILURE:
|
|
{
|
|
{
|
|
ESP_LOGI(TAG, "no stored Wi-Fi credentials");
|
|
ESP_LOGI(TAG, "no stored Wi-Fi credentials");
|
|
|
|
+ Light_AccessPointNoCredentials();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFI_NO_AVAILABLE_APS_FAILURE:
|
|
case WIFI_NO_AVAILABLE_APS_FAILURE:
|
|
{
|
|
{
|
|
ESP_LOGI(TAG, "no Wi-Fi available");
|
|
ESP_LOGI(TAG, "no Wi-Fi available");
|
|
|
|
+ Light_AccessPointFailure();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFI_TIMEOUT_FAILURE:
|
|
case WIFI_TIMEOUT_FAILURE:
|
|
{
|
|
{
|
|
ESP_LOGI(TAG, "Wi-Fi timeout");
|
|
ESP_LOGI(TAG, "Wi-Fi timeout");
|
|
|
|
+ Light_AccessPointFailure();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFI_SCAN_FAILURE:
|
|
case WIFI_SCAN_FAILURE:
|
|
{
|
|
{
|
|
- ESP_LOGW(TAG, "Wi-Fi scan failure");
|
|
+ ESP_LOGE(TAG, "Wi-Fi scan failure");
|
|
|
|
+ Light_SystemFailure();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
default:
|
|
default:
|
|
{
|
|
{
|
|
ESP_LOGW(TAG, "unknown Wi-Fi failure code");
|
|
ESP_LOGW(TAG, "unknown Wi-Fi failure code");
|
|
|
|
+ Light_SystemFailure();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ system_config.motion_detector = true;
|
|
|
|
+ Encoder_EnableMotion();
|
|
|
|
+ Encoder_EnableIOInterrupts();
|
|
}
|
|
}
|
|
|
|
|
|
void ICACHE_FLASH_ATTR app_init(void)
|
|
void ICACHE_FLASH_ATTR app_init(void)
|
|
{
|
|
{
|
|
- uart_init(BIT_RATE_115200, BIT_RATE_115200, DISABLE_UART1);
|
|
+ system_config.wifi_connected = false;
|
|
-
|
|
+ Light_AccessPointSearching();
|
|
-
|
|
+ WiFi_Connect(WIFI_TIMEOUT);
|
|
- ESP_LOGD(TAG, "LSM6DS3, MAX17043, and LPS25HB Testing...");
|
|
+}
|
|
-
|
|
|
|
- {
|
|
|
|
- LSM6DS3_Enable_I2C_Bridge(1);
|
|
|
|
- uint16_t x = max17043_getVoltage();
|
|
|
|
- ESP_LOGI(TAG, "MAX17043 Voltage %d", x);
|
|
|
|
- uint8_t y;
|
|
|
|
- LPS25HB_Get_DeviceID(&y);
|
|
|
|
- ESP_LOGI(TAG, "DEVICEID %x", y);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- system_soft_wdt_feed();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- ESP_LOGI(TAG, "WS2812B Testing...");
|
|
|
|
-
|
|
|
|
- {
|
|
|
|
- ESP_LOGI(TAG, "Setting WS2812B");
|
|
|
|
-
|
|
|
|
- WS2812_SetColor(WS2812_ORANGE, WS2812_PULSE);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
|
|
- ESP_LOGI(TAG, "IO Testing...")
|
|
+void user_init(void)
|
|
- {
|
|
+{
|
|
- IO_InitIO();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- LSM6DS3_EnableMotion();
|
|
|
|
- IO_EnableIOInterrupts();
|
|
|
|
|
|
|
|
- }
|
|
+ uart_init(BIT_RATE_115200, BIT_RATE_115200, DISABLE_UART1);
|
|
|
|
|
|
- ESP_LOGI(TAG, "WiFi Interface Testing...")
|
|
+ os_printf("\n\n----------------------------------------------------------\n");
|
|
- {
|
|
+ os_printf("\tIdeasX Encoder - Tyler Berezowsky\n");
|
|
- WiFi_SetCallbacks(wifi_success_cb, wifi_fail_cb);
|
|
+ os_printf("----------------------------------------------------------\n\n");
|
|
- WiFi_Connect(30*1000);
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
+ WiFi_Initialize();
|
|
|
|
+ Encoder_InitIO();
|
|
|
|
+ Encoder_DisableIOInterrupts();
|
|
|
|
+ IO_Shutdown();
|
|
|
|
|
|
-}
|
|
+ WiFi_SetCallbacks(wifi_success_cb, wifi_fail_cb);
|
|
|
|
+
|
|
|
|
+ Encoder_SetIMUCallback(imu_cb);
|
|
|
|
|
|
-void user_init(void)
|
|
|
|
-{
|
|
|
|
- WiFi_Initialize();
|
|
|
|
system_init_done_cb(app_init);
|
|
system_init_done_cb(app_init);
|
|
-
|
|
|
|
}
|
|
}
|