improved task synchronization
This commit is contained in:
@@ -62,7 +62,7 @@ void powermgm_loop( TTGOClass *ttgo ) {
|
||||
// if we are in standby, wake up
|
||||
if ( powermgm_get_event( POWERMGM_STANDBY ) ) {
|
||||
powermgm_clear_event( POWERMGM_STANDBY );
|
||||
ttgo->power->setDCDC3Voltage( 3000 );
|
||||
ttgo->power->setDCDC3Voltage( 3300 );
|
||||
ttgo->openBL();
|
||||
ttgo->displayWakeup();
|
||||
ttgo->bl->adjust( 0 );
|
||||
@@ -81,12 +81,12 @@ void powermgm_loop( TTGOClass *ttgo ) {
|
||||
ttgo->displaySleep();
|
||||
ttgo->closeBL();
|
||||
if ( powermgm_get_event( POWERMGM_WIFI_ACTIVE ) ) wifictl_off();
|
||||
while( powermgm_get_event( POWERMGM_WIFI_ACTIVE | POWERMGM_WIFI_CONNECTED | POWERMGM_WIFI_OFF_REQUEST | POWERMGM_WIFI_ON_REQUEST | POWERMGM_WIFI_SCAN ) ) {}
|
||||
while( powermgm_get_event( POWERMGM_WIFI_ACTIVE | POWERMGM_WIFI_CONNECTED | POWERMGM_WIFI_OFF_REQUEST | POWERMGM_WIFI_ON_REQUEST | POWERMGM_WIFI_SCAN ) ) { yield(); }
|
||||
ttgo->stopLvglTick();
|
||||
if ( bma_get_config( BMA_STEPCOUNTER ) )
|
||||
ttgo->bma->enableStepCountInterrupt( false );
|
||||
powermgm_set_event( POWERMGM_STANDBY );
|
||||
ttgo->power->setDCDC3Voltage( 2600 );
|
||||
ttgo->power->setDCDC3Voltage( 3000 );
|
||||
setCpuFrequencyMhz( 10 );
|
||||
gpio_wakeup_enable ((gpio_num_t)AXP202_INT, GPIO_INTR_LOW_LEVEL);
|
||||
gpio_wakeup_enable ((gpio_num_t)BMA423_INT1, GPIO_INTR_HIGH_LEVEL);
|
||||
|
||||
@@ -25,14 +25,16 @@
|
||||
#include "TTGO.h"
|
||||
|
||||
#define POWERMGM_STANDBY _BV(0)
|
||||
#define POWERMGM_PMU_BUTTON _BV(1)
|
||||
#define POWERMGM_PMU_BATTERY _BV(2)
|
||||
#define POWERMGM_BMA_WAKEUP _BV(3)
|
||||
#define POWERMGM_WIFI_ON_REQUEST _BV(5)
|
||||
#define POWERMGM_WIFI_OFF_REQUEST _BV(6)
|
||||
#define POWERMGM_WIFI_ACTIVE _BV(7)
|
||||
#define POWERMGM_WIFI_SCAN _BV(8)
|
||||
#define POWERMGM_WIFI_CONNECTED _BV(9)
|
||||
#define POWERMGM_SILENCE_WAKEUP _BV(1)
|
||||
#define POWERMGM_PMU_BUTTON _BV(2)
|
||||
#define POWERMGM_PMU_BATTERY _BV(3)
|
||||
#define POWERMGM_PMU_ALARM _BV(4)
|
||||
#define POWERMGM_BMA_WAKEUP _BV(5)
|
||||
#define POWERMGM_WIFI_ON_REQUEST _BV(6)
|
||||
#define POWERMGM_WIFI_OFF_REQUEST _BV(7)
|
||||
#define POWERMGM_WIFI_ACTIVE _BV(8)
|
||||
#define POWERMGM_WIFI_SCAN _BV(9)
|
||||
#define POWERMGM_WIFI_CONNECTED _BV(10)
|
||||
|
||||
/*
|
||||
* @brief setp power managment, coordinate managment beween CPU, wifictl, pmu, bma, display, backlight and lvgl
|
||||
|
||||
@@ -35,8 +35,13 @@ void timesync_setup( TTGOClass *ttgo ) {
|
||||
|
||||
WiFi.onEvent( [](WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
if ( timesync_config.timesync ) {
|
||||
xEventGroupSetBits( time_event_handle, TIME_SYNC_REQUEST );
|
||||
vTaskResume( _timesync_Task );
|
||||
if ( xEventGroupGetBits( time_event_handle ) & TIME_SYNC_REQUEST ) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
xEventGroupSetBits( time_event_handle, TIME_SYNC_REQUEST );
|
||||
vTaskResume( _timesync_Task );
|
||||
}
|
||||
}
|
||||
}, WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP );
|
||||
|
||||
|
||||
@@ -118,14 +118,12 @@ void wifictl_setup( void ) {
|
||||
}, WiFiEvent_t::SYSTEM_EVENT_STA_STOP );
|
||||
|
||||
// start Wifo controll task
|
||||
xTaskCreatePinnedToCore(
|
||||
wifictl_Task, /* Function to implement the task */
|
||||
"wifictl Task", /* Name of the task */
|
||||
2000, /* Stack size in words */
|
||||
NULL, /* Task input parameter */
|
||||
1, /* Priority of the task */
|
||||
&_wifictl_Task, /* Task handle. */
|
||||
1 ); /* Core where the task should run */
|
||||
xTaskCreate( wifictl_Task, /* Function to implement the task */
|
||||
"wifictl Task", /* Name of the task */
|
||||
2000, /* Stack size in words */
|
||||
NULL, /* Task input parameter */
|
||||
1, /* Priority of the task */
|
||||
&_wifictl_Task ); /* Task handle. */
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -225,8 +223,13 @@ bool wifictl_insert_network( const char *ssid, const char *password ) {
|
||||
void wifictl_on( void ) {
|
||||
if ( wifi_init == false )
|
||||
return;
|
||||
vTaskResume( _wifictl_Task );
|
||||
powermgm_set_event( POWERMGM_WIFI_ON_REQUEST );
|
||||
if ( powermgm_get_event( POWERMGM_WIFI_OFF_REQUEST ) || powermgm_get_event( POWERMGM_WIFI_ON_REQUEST )) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
powermgm_set_event( POWERMGM_WIFI_ON_REQUEST );
|
||||
vTaskResume( _wifictl_Task );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -235,8 +238,13 @@ void wifictl_on( void ) {
|
||||
void wifictl_off( void ) {
|
||||
if ( wifi_init == false )
|
||||
return;
|
||||
vTaskResume( _wifictl_Task );
|
||||
powermgm_set_event( POWERMGM_WIFI_OFF_REQUEST );
|
||||
if ( powermgm_get_event( POWERMGM_WIFI_OFF_REQUEST ) || powermgm_get_event( POWERMGM_WIFI_ON_REQUEST )) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
powermgm_set_event( POWERMGM_WIFI_OFF_REQUEST );
|
||||
vTaskResume( _wifictl_Task );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user