@@ -71,8 +71,8 @@ void hwWriteConfig(const int addr, uint8_t value)
7171bool hwUniqueID (unique_id_t *uniqueID)
7272{
7373 uint64_t val = ESP.getEfuseMac ();
74- (void )memcpy (( void *) uniqueID, (void *)&val, 8 );
75- (void )memset (( void *) (uniqueID + 8 ), MY_HWID_PADDING_BYTE, 8 ); // padding
74+ (void )memcpy (static_cast < void *>( uniqueID) , (void *)&val, 8 );
75+ (void )memset (static_cast < void *> (uniqueID + 8 ), MY_HWID_PADDING_BYTE, 8 ); // padding
7676 return true ;
7777}
7878
@@ -82,7 +82,7 @@ ssize_t hwGetentropy(void *__buffer, size_t __length)
8282 if (__length > 256 ) {
8383 __length = 256 ;
8484 }
85- uint8_t *dst = ( uint8_t *) __buffer;
85+ uint8_t *dst = static_cast < uint8_t *>( __buffer) ;
8686 // get random numbers
8787 for (size_t i = 0 ; i < __length; i++) {
8888 dst[i] = (uint8_t )esp_random ();
@@ -92,31 +92,51 @@ ssize_t hwGetentropy(void *__buffer, size_t __length)
9292
9393int8_t hwSleep (uint32_t ms)
9494{
95- // TODO: Not supported!
96- ( void )ms ;
97- return MY_SLEEP_NOT_POSSIBLE ;
95+ esp_sleep_enable_timer_wakeup (( uint64_t )ms * 1000 );
96+ esp_light_sleep_start () ;
97+ return MY_WAKE_UP_BY_TIMER ;
9898}
9999
100100int8_t hwSleep (const uint8_t interrupt, const uint8_t mode, uint32_t ms)
101101{
102- // TODO: Not supported!
103- (void )interrupt;
104- (void )mode;
105- (void )ms;
106- return MY_SLEEP_NOT_POSSIBLE;
102+ if (mode == FALLING) {
103+ gpio_wakeup_enable ((gpio_num_t )interrupt, GPIO_INTR_LOW_LEVEL);
104+ } else if (mode == RISING) {
105+ gpio_wakeup_enable ((gpio_num_t )interrupt, GPIO_INTR_HIGH_LEVEL);
106+ } else {
107+ return MY_SLEEP_NOT_POSSIBLE;
108+ }
109+ esp_sleep_enable_gpio_wakeup ();
110+ esp_sleep_enable_timer_wakeup ((uint64_t )ms * 1000 );
111+ esp_light_sleep_start ();
112+ gpio_wakeup_disable ((gpio_num_t )interrupt);
113+ return 0 ;
107114}
108115
109116int8_t hwSleep (const uint8_t interrupt1, const uint8_t mode1, const uint8_t interrupt2,
110117 const uint8_t mode2,
111118 uint32_t ms)
112119{
113- // TODO: Not supported!
114- (void )interrupt1;
115- (void )mode1;
116- (void )interrupt2;
117- (void )mode2;
118- (void )ms;
119- return MY_SLEEP_NOT_POSSIBLE;
120+ if (mode1 == FALLING) {
121+ gpio_wakeup_enable ((gpio_num_t )interrupt1, GPIO_INTR_LOW_LEVEL);
122+ } else if (mode1 == RISING) {
123+ gpio_wakeup_enable ((gpio_num_t )interrupt1, GPIO_INTR_HIGH_LEVEL);
124+ } else {
125+ return MY_SLEEP_NOT_POSSIBLE;
126+ }
127+ if (mode2 == FALLING) {
128+ gpio_wakeup_enable ((gpio_num_t )interrupt2, GPIO_INTR_LOW_LEVEL);
129+ } else if (mode2 == RISING) {
130+ gpio_wakeup_enable ((gpio_num_t )interrupt2, GPIO_INTR_HIGH_LEVEL);
131+ } else {
132+ return MY_SLEEP_NOT_POSSIBLE;
133+ }
134+ esp_sleep_enable_gpio_wakeup ();
135+ esp_sleep_enable_timer_wakeup ((uint64_t )ms * 1000 );
136+ esp_light_sleep_start ();
137+ gpio_wakeup_disable ((gpio_num_t )interrupt1);
138+ gpio_wakeup_disable ((gpio_num_t )interrupt2);
139+ return 0 ;
120140}
121141
122142uint16_t hwCPUVoltage (void )
0 commit comments