Skip to content

Commit bd9dd3d

Browse files
committed
Fix atmel-samd alarm module.
1 parent b2e77bd commit bd9dd3d

File tree

9 files changed

+407
-363
lines changed

9 files changed

+407
-363
lines changed

locale/circuitpython.pot

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ msgstr ""
355355
msgid "64 bit types"
356356
msgstr ""
357357

358+
#: ports/atmel-samd/common-hal/alarm.orig/pin/PinAlarm.c
358359
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
359360
#: ports/atmel-samd/common-hal/countio/Counter.c
360361
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@@ -1682,6 +1683,7 @@ msgstr ""
16821683
msgid "No hardware support on clk pin"
16831684
msgstr ""
16841685

1686+
#: ports/atmel-samd/common-hal/alarm.orig/pin/PinAlarm.c
16851687
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
16861688
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
16871689
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
@@ -1827,6 +1829,7 @@ msgstr ""
18271829
msgid "Only one address is allowed"
18281830
msgstr ""
18291831

1832+
#: ports/atmel-samd/common-hal/alarm.orig/time/TimeAlarm.c
18301833
#: ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c
18311834
#: ports/espressif/common-hal/alarm/time/TimeAlarm.c
18321835
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
@@ -1898,6 +1901,7 @@ msgstr ""
18981901
msgid "Permission denied"
18991902
msgstr ""
19001903

1904+
#: ports/atmel-samd/common-hal/alarm.orig/pin/PinAlarm.c
19011905
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
19021906
#: ports/stm/common-hal/alarm/pin/PinAlarm.c
19031907
msgid "Pin cannot wake from Deep Sleep"
@@ -1931,6 +1935,10 @@ msgstr ""
19311935
msgid "Pin is input only"
19321936
msgstr ""
19331937

1938+
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
1939+
msgid "Pin is not free"
1940+
msgstr ""
1941+
19341942
#: ports/raspberrypi/common-hal/countio/Counter.c
19351943
msgid "Pin must be on PWM Channel B"
19361944
msgstr ""
@@ -2158,7 +2166,7 @@ msgstr ""
21582166
msgid "Size not supported"
21592167
msgstr ""
21602168

2161-
#: ports/atmel-samd/common-hal/alarm/SleepMemory.c
2169+
#: ports/atmel-samd/common-hal/alarm.orig/SleepMemory.c
21622170
#: ports/raspberrypi/common-hal/alarm/SleepMemory.c
21632171
msgid "Sleep Memory not available"
21642172
msgstr ""
@@ -2319,6 +2327,7 @@ msgstr ""
23192327
msgid "Total data to write is larger than %q"
23202328
msgstr ""
23212329

2330+
#: ports/atmel-samd/common-hal/alarm.orig/touch/TouchAlarm.c
23222331
#: ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.c
23232332
#: ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.c
23242333
#: ports/stm/common-hal/alarm/touch/TouchAlarm.c
@@ -2427,6 +2436,10 @@ msgstr ""
24272436
msgid "Unhandled ESP TLS error %d %d %x %d"
24282437
msgstr ""
24292438

2439+
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
2440+
msgid "Unknown error"
2441+
msgstr ""
2442+
24302443
#: shared-bindings/wifi/Radio.c
24312444
#, c-format
24322445
msgid "Unknown failure %d"
@@ -3630,7 +3643,7 @@ msgstr ""
36303643
msgid "matrix is not positive definite"
36313644
msgstr ""
36323645

3633-
#: shared-bindings/wifi/Radio.c
3646+
#: ports/espressif/common-hal/wifi/Radio.c
36343647
msgid "max_connections must be between 0 and 10"
36353648
msgstr ""
36363649

@@ -4048,13 +4061,15 @@ msgstr ""
40484061
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
40494062
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
40504063
#: ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h
4064+
#: ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h
40514065
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
40524066
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
40534067
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h
40544068
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
40554069
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
40564070
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
40574071
#: ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h
4072+
#: ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h
40584073
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
40594074
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h
40604075
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h

ports/atmel-samd/boards/seeeduino_wio_terminal/board.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "shared-module/displayio/__init__.h"
3333
#include "shared-module/displayio/mipi_constants.h"
3434
#include "shared-bindings/digitalio/DigitalInOut.h"
35+
#include "common-hal/alarm/__init__.h"
3536

3637
displayio_fourwire_obj_t board_display_obj;
3738
digitalio_digitalinout_obj_t CTR_5V;
@@ -139,4 +140,14 @@ void reset_board(void) {
139140
}
140141

141142
void board_deinit(void) {
143+
common_hal_displayio_release_displays();
144+
common_hal_digitalio_digitalinout_deinit(&CTR_5V);
145+
common_hal_digitalio_digitalinout_deinit(&CTR_3V3);
146+
common_hal_digitalio_digitalinout_deinit(&USB_HOST_ENABLE);
147+
}
148+
149+
void board_deep_sleep_hook(void) {
150+
// Pins are reset before entering deep sleep in cleanup_after_vm()
151+
// This hook turn RTL_PWR off
152+
gpio_set_pin_direction(pin_PA18.number, GPIO_DIRECTION_OUT);
142153
}

ports/atmel-samd/common-hal/alarm/SleepMemory.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,24 @@
3232
#include "shared-bindings/nvm/ByteArray.h"
3333

3434
void alarm_sleep_memory_reset(void) {
35-
3635
}
3736

3837
uint32_t common_hal_alarm_sleep_memory_get_length(alarm_sleep_memory_obj_t *self) {
39-
mp_raise_NotImplementedError(translate("Sleep Memory not available"));
40-
return 0;
38+
return BKUPRAM_SIZE;
4139
}
4240

4341
bool common_hal_alarm_sleep_memory_set_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, const uint8_t *values, uint32_t len) {
44-
mp_raise_NotImplementedError(translate("Sleep Memory not available"));
45-
return false;
42+
if (start_index + len > BKUPRAM_SIZE) {
43+
return false;
44+
}
45+
memcpy((uint8_t *)(BKUPRAM_ADDR + start_index), values, len);
46+
return true;
4647
}
4748

4849
void common_hal_alarm_sleep_memory_get_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, uint8_t *values, uint32_t len) {
49-
mp_raise_NotImplementedError(translate("Sleep Memory not available"));
50+
if (start_index + len > BKUPRAM_SIZE) {
51+
return;
52+
}
53+
memcpy(values, (uint8_t *)(BKUPRAM_ADDR + start_index), len);
5054
return;
5155
}

ports/atmel-samd/common-hal/alarm/SleepMemory.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131

3232
typedef struct {
3333
mp_obj_base_t base;
34-
uint8_t *start_address;
35-
uint8_t len;
3634
} alarm_sleep_memory_obj_t;
3735

3836
extern void alarm_sleep_memory_reset(void);

0 commit comments

Comments
 (0)