@@ -71,8 +71,8 @@ void hwWriteConfig(const int addr, uint8_t value)
71
71
bool hwUniqueID (unique_id_t *uniqueID)
72
72
{
73
73
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
76
76
return true ;
77
77
}
78
78
@@ -82,7 +82,7 @@ ssize_t hwGetentropy(void *__buffer, size_t __length)
82
82
if (__length > 256 ) {
83
83
__length = 256 ;
84
84
}
85
- uint8_t *dst = ( uint8_t *) __buffer;
85
+ uint8_t *dst = static_cast < uint8_t *>( __buffer) ;
86
86
// get random numbers
87
87
for (size_t i = 0 ; i < __length; i++) {
88
88
dst[i] = (uint8_t )esp_random ();
@@ -92,31 +92,51 @@ ssize_t hwGetentropy(void *__buffer, size_t __length)
92
92
93
93
int8_t hwSleep (uint32_t ms)
94
94
{
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 ;
98
98
}
99
99
100
100
int8_t hwSleep (const uint8_t interrupt, const uint8_t mode, uint32_t ms)
101
101
{
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 ;
107
114
}
108
115
109
116
int8_t hwSleep (const uint8_t interrupt1, const uint8_t mode1, const uint8_t interrupt2,
110
117
const uint8_t mode2,
111
118
uint32_t ms)
112
119
{
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 ;
120
140
}
121
141
122
142
uint16_t hwCPUVoltage (void )
0 commit comments