summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yml4
-rw-r--r--Makefile2
-rw-r--r--ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.mk1
-rw-r--r--ports/stm32f4/boards/feather_stm32f405_express/stm32f4xx_hal_conf.h2
-rw-r--r--ports/stm32f4/boards/pyboard_v11/stm32f4xx_hal_conf.h2
-rw-r--r--ports/stm32f4/boards/stm32f412zg_discovery/stm32f4xx_hal_conf.h2
-rw-r--r--ports/stm32f4/common-hal/os/__init__.c35
-rw-r--r--ports/stm32f4/peripherals/stm32f4/periph.h3
8 files changed, 42 insertions, 9 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 10c34355d..404cd19a6 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -190,7 +190,7 @@ jobs:
name: ${{ matrix.board }}
path: bin/${{ matrix.board }}
- name: Upload to S3
- run: aws s3 cp bin/ s3://adafruit-circuit-python/bin/ --recursive --no-progress --region us-east-1
+ run: "[ -z \"$AWS_ACCESS_KEY_ID\" ] || aws s3 cp bin/ s3://adafruit-circuit-python/bin/ --recursive --no-progress --region us-east-1"
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -199,7 +199,7 @@ jobs:
run: |
pip install uritemplate
- name: Upload to Release
- run: python3 -u upload_release_files.py
+ run: "[ -z \"$ADABOT_GITHUB_ACCESS_TOKEN\" ] || python3 -u upload_release_files.py"
working-directory: tools
env:
UPLOAD_URL: ${{ github.event.release.upload_url }}
diff --git a/Makefile b/Makefile
index b9c489fd4..d7127b517 100644
--- a/Makefile
+++ b/Makefile
@@ -204,7 +204,7 @@ pseudoxml:
all-source:
locale/circuitpython.pot: all-source
- find $(TRANSLATE_SOURCES) -iname "*.c" -print0 | (LC_ALL=C sort -z) | xargs -0 xgettext -L C -s --add-location=file --keyword=translate -o circuitpython.pot -p locale
+ find $(TRANSLATE_SOURCES) -iname "*.c" -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o circuitpython.pot -p locale
translate: locale/circuitpython.pot
for po in $(shell ls locale/*.po); do msgmerge -U $$po -s --no-fuzzy-matching --add-location=file locale/circuitpython.pot; done
diff --git a/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.mk b/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.mk
index 17de6ac74..6dc71978c 100644
--- a/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.mk
@@ -3,6 +3,7 @@ USB_VID = 0x239A
USB_PID = 0x8060
USB_PRODUCT = "StringCar M0 Express"
USB_MANUFACTURER = "Cedar Grove Studios"
+USB_INTERFACE_NAME = "StringCarM0Ex"
CHIP_VARIANT = SAMD21E18A
CHIP_FAMILY = samd21
diff --git a/ports/stm32f4/boards/feather_stm32f405_express/stm32f4xx_hal_conf.h b/ports/stm32f4/boards/feather_stm32f405_express/stm32f4xx_hal_conf.h
index 68a49b4ba..8031403a9 100644
--- a/ports/stm32f4/boards/feather_stm32f405_express/stm32f4xx_hal_conf.h
+++ b/ports/stm32f4/boards/feather_stm32f405_express/stm32f4xx_hal_conf.h
@@ -55,7 +55,7 @@
#define HAL_I2S_MODULE_ENABLED
/* #define HAL_IWDG_MODULE_ENABLED */
/* #define HAL_LTDC_MODULE_ENABLED */
-/* #define HAL_RNG_MODULE_ENABLED */
+#define HAL_RNG_MODULE_ENABLED
/* #define HAL_RTC_MODULE_ENABLED */
/* #define HAL_SAI_MODULE_ENABLED */
/* #define HAL_SD_MODULE_ENABLED */
diff --git a/ports/stm32f4/boards/pyboard_v11/stm32f4xx_hal_conf.h b/ports/stm32f4/boards/pyboard_v11/stm32f4xx_hal_conf.h
index 7a1a9428f..4dc18cb7f 100644
--- a/ports/stm32f4/boards/pyboard_v11/stm32f4xx_hal_conf.h
+++ b/ports/stm32f4/boards/pyboard_v11/stm32f4xx_hal_conf.h
@@ -55,7 +55,7 @@
#define HAL_I2S_MODULE_ENABLED
/* #define HAL_IWDG_MODULE_ENABLED */
/* #define HAL_LTDC_MODULE_ENABLED */
-/* #define HAL_RNG_MODULE_ENABLED */
+#define HAL_RNG_MODULE_ENABLED
/* #define HAL_RTC_MODULE_ENABLED */
/* #define HAL_SAI_MODULE_ENABLED */
/* #define HAL_SD_MODULE_ENABLED */
diff --git a/ports/stm32f4/boards/stm32f412zg_discovery/stm32f4xx_hal_conf.h b/ports/stm32f4/boards/stm32f412zg_discovery/stm32f4xx_hal_conf.h
index b89240f98..f1b401348 100644
--- a/ports/stm32f4/boards/stm32f412zg_discovery/stm32f4xx_hal_conf.h
+++ b/ports/stm32f4/boards/stm32f412zg_discovery/stm32f4xx_hal_conf.h
@@ -55,7 +55,7 @@
#define HAL_I2S_MODULE_ENABLED
/* #define HAL_IWDG_MODULE_ENABLED */
/* #define HAL_LTDC_MODULE_ENABLED */
-/* #define HAL_RNG_MODULE_ENABLED */
+#define HAL_RNG_MODULE_ENABLED
/* #define HAL_RTC_MODULE_ENABLED */
/* #define HAL_SAI_MODULE_ENABLED */
#define HAL_SD_MODULE_ENABLED
diff --git a/ports/stm32f4/common-hal/os/__init__.c b/ports/stm32f4/common-hal/os/__init__.c
index aa80a02f5..0b3153286 100644
--- a/ports/stm32f4/common-hal/os/__init__.c
+++ b/ports/stm32f4/common-hal/os/__init__.c
@@ -30,6 +30,11 @@
#include "py/objstr.h"
#include "py/objtuple.h"
+#include "py/mperrno.h"
+#include "py/runtime.h"
+#include "stm32f4xx_hal.h"
+#include "stm32f4/periph.h"
+
STATIC const qstr os_uname_info_fields[] = {
MP_QSTR_sysname, MP_QSTR_nodename,
MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine
@@ -56,11 +61,35 @@ mp_obj_t common_hal_os_uname(void) {
return (mp_obj_t)&os_uname_info_obj;
}
+#define RNG_TIMEOUT 5
+
bool common_hal_os_urandom(uint8_t *buffer, uint32_t length) {
+ #if (HAS_TRNG)
+ //init the RNG
+ __HAL_RCC_RNG_CLK_ENABLE();
+ RNG_HandleTypeDef handle;
+ handle.Instance = RNG;
+ if (HAL_RNG_Init(&handle) != HAL_OK) mp_raise_ValueError(translate("RNG Init Error"));
- for (uint32_t i = 0; i < length; i++) {
- buffer[i] = 4; //read in my coffee dregs; the truest random number, chosen by Nrthalotep
- //todo: spurn the gods, replace with actual code.
+ //Assign bytes
+ for (uint i = 0; i < length; i++) {
+ uint32_t temp;
+ uint32_t start = HAL_GetTick();
+ //the HAL function has a timeout, but it isn't long enough, and isn't adjustable
+ while(!(__HAL_RNG_GET_FLAG(&handle,RNG_FLAG_DRDY)) && ((HAL_GetTick() - start) < RNG_TIMEOUT));
+ //
+ if (HAL_RNG_GenerateRandomNumber(&handle, &temp) != HAL_OK) {
+ mp_raise_ValueError(translate("Random number generation error"));
+ }
+ *buffer = (uint8_t)temp;
}
+
+ //shut down the peripheral
+ if (HAL_RNG_DeInit(&handle) != HAL_OK) mp_raise_ValueError(translate("RNG DeInit Error"));
+ __HAL_RCC_RNG_CLK_DISABLE();
+
return true;
+ #else
+ return false;
+ #endif
} \ No newline at end of file
diff --git a/ports/stm32f4/peripherals/stm32f4/periph.h b/ports/stm32f4/peripherals/stm32f4/periph.h
index 4b00ce1d9..0d1374e85 100644
--- a/ports/stm32f4/peripherals/stm32f4/periph.h
+++ b/ports/stm32f4/peripherals/stm32f4/periph.h
@@ -142,11 +142,13 @@ typedef struct {
#ifdef STM32F411xE
#define HAS_DAC 0
+#define HAS_TRNG 0
#include "stm32f411xe/periph.h"
#endif
#ifdef STM32F412Zx
#define HAS_DAC 0
+#define HAS_TRNG 1
#include "stm32f412zx/periph.h"
#endif
@@ -154,6 +156,7 @@ typedef struct {
#ifdef STM32F405xx
#define HAS_DAC 1
+#define HAS_TRNG 1
#include "stm32f405xx/periph.h"
#endif