Add feature conditionals and clean up

This commit is contained in:
Hierophect 2019-07-22 12:58:28 -04:00
parent 10b9ca5a92
commit 58630a844a
32 changed files with 96 additions and 104 deletions

13
main.c
View File

@ -45,7 +45,6 @@
#include "background.h"
#include "mpconfigboard.h"
//#include "shared-module/displayio/__init__.h"
#include "supervisor/cpu.h"
#include "supervisor/memory.h"
#include "supervisor/port.h"
@ -58,6 +57,10 @@
#include "supervisor/shared/stack.h"
#include "supervisor/serial.h"
#if CIRCUITPY_DISPLAYIO
#include "shared-module/displayio/__init__.h"
#endif
#if CIRCUITPY_NETWORK
#include "shared-module/network/__init__.h"
#endif
@ -187,7 +190,7 @@ void cleanup_after_vm(supervisor_allocation* heap) {
supervisor_move_memory();
reset_port();
//reset_board_busses();
reset_board_busses();
reset_board();
reset_status_led();
}
@ -392,8 +395,10 @@ int __attribute__((used)) main(void) {
safe_mode_t safe_mode = port_init();
// Turn on LEDs
//init_status_leds();
//rgb_led_status_init();
#if MICROPY_HW_LED_RX && MICROPY_HW_LED_RX
init_status_leds();
rgb_led_status_init();
#endif
// Wait briefly to give a reset window where we'll enter safe mode after the reset.
if (safe_mode == NO_SAFE_MODE) {

View File

@ -105,7 +105,7 @@ void reset_pin_number(uint8_t pin_number) {
#ifdef SPEAKER_ENABLE_PIN
if (pin_number == SPEAKER_ENABLE_PIN->number) {
speaker_enable_in_use = false;
common_hal_digitalio_digitalinout_switch_to_output();
common_hal_digitalio_digitalinout_switch_to_output(SPEAKER_ENABLE_PIN, true, DRIVE_MODE_PUSH_PULL);
nrf_gpio_pin_dir_set(pin_number, NRF_GPIO_PIN_DIR_OUTPUT);
nrf_gpio_pin_write(pin_number, false);
}

View File

@ -27,8 +27,6 @@
#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_I2C_H
#define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_I2C_H
#include "nrfx_twim.h"
#include "py/obj.h"
typedef struct {

View File

@ -27,7 +27,6 @@
#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_SPI_H
#define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_SPI_H
#include "nrfx_spim.h"
#include "py/obj.h"
typedef struct {

View File

@ -28,7 +28,6 @@
#define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_UART_H
#include "common-hal/microcontroller/Pin.h"
#include "nrfx_uarte.h"
#include "py/obj.h"
#include "py/ringbuf.h"

View File

@ -27,7 +27,7 @@
#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H
#define MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H
//#include "common-hal/microcontroller/Pin.h"
#include "common-hal/microcontroller/Pin.h"
typedef struct {
mp_obj_base_t base;

View File

@ -35,13 +35,6 @@
#include "py/runtime.h"
#include "lib/oofatfs/ff.h"
// #include "peripherals/nrf/nvm.h"
// #ifdef BLUETOOTH_SD
// #include "ble_drv.h"
// #include "nrf_sdm.h"
// #endif
/*------------------------------------------------------------------*/
/* Internal Flash API

View File

@ -46,23 +46,23 @@
//| Returns the `busio.I2C` object for the board designated SDA and SCL pins. It is a singleton.
//|
// #if BOARD_I2C
// mp_obj_t board_i2c(void) {
// mp_obj_t singleton = common_hal_board_get_i2c();
// if (singleton != NULL) {
// return singleton;
// }
// assert_pin_free(DEFAULT_I2C_BUS_SDA);
// assert_pin_free(DEFAULT_I2C_BUS_SCL);
// return common_hal_board_create_i2c();
// }
// #else
// mp_obj_t board_i2c(void) {
// mp_raise_NotImplementedError_varg(translate("No default %q bus"), MP_QSTR_I2C);
// return NULL;
// }
// #endif
// MP_DEFINE_CONST_FUN_OBJ_0(board_i2c_obj, board_i2c);
#if BOARD_I2C
mp_obj_t board_i2c(void) {
mp_obj_t singleton = common_hal_board_get_i2c();
if (singleton != NULL) {
return singleton;
}
assert_pin_free(DEFAULT_I2C_BUS_SDA);
assert_pin_free(DEFAULT_I2C_BUS_SCL);
return common_hal_board_create_i2c();
}
#else
mp_obj_t board_i2c(void) {
mp_raise_NotImplementedError_varg(translate("No default %q bus"), MP_QSTR_I2C);
return NULL;
}
#endif
MP_DEFINE_CONST_FUN_OBJ_0(board_i2c_obj, board_i2c);
// //| .. function:: SPI()
@ -70,48 +70,48 @@
// //| Returns the `busio.SPI` object for the board designated SCK, MOSI and MISO pins. It is a
// //| singleton.
// //|
// #if BOARD_SPI
// mp_obj_t board_spi(void) {
// mp_obj_t singleton = common_hal_board_get_spi();
// if (singleton != NULL) {
// return singleton;
// }
// assert_pin_free(DEFAULT_SPI_BUS_SCK);
// assert_pin_free(DEFAULT_SPI_BUS_MOSI);
// assert_pin_free(DEFAULT_SPI_BUS_MISO);
// return common_hal_board_create_spi();
// }
// #else
// mp_obj_t board_spi(void) {
// mp_raise_NotImplementedError_varg(translate("No default %q bus"), MP_QSTR_SPI);
// return NULL;
// }
// #endif
// MP_DEFINE_CONST_FUN_OBJ_0(board_spi_obj, board_spi);
#if BOARD_SPI
mp_obj_t board_spi(void) {
mp_obj_t singleton = common_hal_board_get_spi();
if (singleton != NULL) {
return singleton;
}
assert_pin_free(DEFAULT_SPI_BUS_SCK);
assert_pin_free(DEFAULT_SPI_BUS_MOSI);
assert_pin_free(DEFAULT_SPI_BUS_MISO);
return common_hal_board_create_spi();
}
#else
mp_obj_t board_spi(void) {
mp_raise_NotImplementedError_varg(translate("No default %q bus"), MP_QSTR_SPI);
return NULL;
}
#endif
MP_DEFINE_CONST_FUN_OBJ_0(board_spi_obj, board_spi);
// //| .. function:: UART()
// //|
// //| Returns the `busio.UART` object for the board designated TX and RX pins. It is a singleton.
// //|
// #if BOARD_UART
// mp_obj_t board_uart(void) {
// mp_obj_t singleton = common_hal_board_get_uart();
// if (singleton != NULL) {
// return singleton;
// }
#if BOARD_UART
mp_obj_t board_uart(void) {
mp_obj_t singleton = common_hal_board_get_uart();
if (singleton != NULL) {
return singleton;
}
// assert_pin_free(DEFAULT_UART_BUS_RX);
// assert_pin_free(DEFAULT_UART_BUS_TX);
assert_pin_free(DEFAULT_UART_BUS_RX);
assert_pin_free(DEFAULT_UART_BUS_TX);
// return common_hal_board_create_uart();
// }
// #else
// mp_obj_t board_uart(void) {
// mp_raise_NotImplementedError_varg(translate("No default %q bus"), MP_QSTR_SPI);
// return NULL;
// }
// #endif
// MP_DEFINE_CONST_FUN_OBJ_0(board_uart_obj, board_uart);
return common_hal_board_create_uart();
}
#else
mp_obj_t board_uart(void) {
mp_raise_NotImplementedError_varg(translate("No default %q bus"), MP_QSTR_SPI);
return NULL;
}
#endif
MP_DEFINE_CONST_FUN_OBJ_0(board_uart_obj, board_uart);
const mp_obj_module_t board_module = {
.base = { &mp_type_module },

View File

@ -24,18 +24,20 @@
* THE SOFTWARE.
*/
// #include "shared-bindings/busio/I2C.h"
// #include "shared-bindings/busio/SPI.h"
// #include "shared-bindings/busio/UART.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "supervisor/shared/translate.h"
#include "mpconfigboard.h"
#include "py/runtime.h"
// #ifdef CIRCUITPY_DISPLAYIO
// #include "shared-module/displayio/__init__.h"
// #endif
#if CIRCUITPY_BUSIO
#include "shared-bindings/busio/I2C.h"
#include "shared-bindings/busio/SPI.h"
#include "shared-bindings/busio/UART.h"
#endif
#if CIRCUITPY_DISPLAYIO
#include "shared-module/displayio/__init__.h"
#endif
#if BOARD_I2C
mp_obj_t common_hal_board_get_i2c(void) {

View File

@ -47,7 +47,6 @@ void common_hal_usb_hid_device_send_report(usb_hid_device_obj_t *self, uint8_t*
// Wait until interface is ready, timeout = 2 seconds
uint64_t end_ticks = ticks_ms + 2000;
while ( (ticks_ms < end_ticks) && !tud_hid_generic_ready() ) { }
if ( !tud_hid_generic_ready() ) {

View File

@ -118,5 +118,5 @@ supervisor_allocation* allocate_memory(uint32_t length, bool high) {
}
void supervisor_move_memory(void) {
//supervisor_display_move_memory();
supervisor_display_move_memory();
}

View File

@ -30,7 +30,7 @@
#include "lib/oofatfs/ff.h"
#include "py/mpconfig.h"
//#include "supervisor/shared/status_leds.h"
#include "supervisor/shared/status_leds.h"
int mp_hal_stdin_rx_chr(void) {
for (;;) {
@ -38,14 +38,14 @@ int mp_hal_stdin_rx_chr(void) {
MICROPY_VM_HOOK_LOOP
#endif
if (serial_bytes_available()) {
//toggle_rx_led();
toggle_rx_led();
return serial_read();
}
}
}
void mp_hal_stdout_tx_strn(const char *str, size_t len) {
//toggle_tx_led();
toggle_tx_led();
#ifdef CIRCUITPY_BOOT_OUTPUT_FILE
if (boot_output_file != NULL) {

View File

@ -59,16 +59,16 @@ safe_mode_t wait_for_safe_mode_reset(void) {
common_hal_digitalio_digitalinout_construct(&status_led, MICROPY_HW_LED_STATUS);
common_hal_digitalio_digitalinout_switch_to_output(&status_led, true, DRIVE_MODE_PUSH_PULL);
#endif
// uint64_t start_ticks = 0;//ticks_ms;
// uint64_t diff = 0;
// while (diff < 700) {
// #ifdef MICROPY_HW_LED_STATUS
// // Blink on for 100, off for 100, on for 100, off for 100 and on for 200
// common_hal_digitalio_digitalinout_set_value(&status_led, diff > 100 && diff / 100 != 2 && diff / 100 != 4);
// #endif
// diff = 0 - start_ticks;
// //diff = ticks_ms - start_ticks;
// }
uint64_t start_ticks = ticks_ms;
uint64_t diff = 0;
while (diff < 700) {
#ifdef MICROPY_HW_LED_STATUS
// Blink on for 100, off for 100, on for 100, off for 100 and on for 200
common_hal_digitalio_digitalinout_set_value(&status_led, diff > 100 && diff / 100 != 2 && diff / 100 != 4);
#endif
diff = 0 - start_ticks;
//diff = ticks_ms - start_ticks;
}
#ifdef MICROPY_HW_LED_STATUS
common_hal_digitalio_digitalinout_deinit(&status_led);
#endif

View File

@ -26,8 +26,10 @@
#include "supervisor/shared/status_leds.h"
#if CIRCUITPY_DIGITALIO
#include "common-hal/digitalio/DigitalInOut.h"
#include "shared-bindings/digitalio/DigitalInOut.h"
#endif
#ifdef MICROPY_HW_LED_RX
digitalio_digitalinout_obj_t rx_led;

View File

@ -40,10 +40,8 @@ extern uint16_t usb_serial_number[1 + COMMON_HAL_MCU_PROCESSOR_UID_LENGTH * 2];
void load_serial_number(void) {
// create serial number based on device unique id
//LUCIAN: edited to fake a serial number
uint8_t raw_id[COMMON_HAL_MCU_PROCESSOR_UID_LENGTH] = {'0','1','2','3'};
//common_hal_mcu_processor_get_uid(raw_id);
uint8_t raw_id[COMMON_HAL_MCU_PROCESSOR_UID_LENGTH];
common_hal_mcu_processor_get_uid(raw_id);
static const char nibble_to_hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'};

View File

@ -2,19 +2,16 @@ SRC_SUPERVISOR = \
main.c \
supervisor/port.c \
supervisor/shared/autoreload.c \
supervisor/shared/display.c \
supervisor/shared/filesystem.c \
supervisor/shared/flash.c \
supervisor/shared/micropython.c \
supervisor/shared/rgb_led_status.c \
supervisor/shared/stack.c \
supervisor/shared/safe_mode.c \
supervisor/shared/translate.c
#bug, not conditional
# supervisor/shared/display.c \
# supervisor/shared/status_leds.c \
# supervisor/shared/safe_mode.c \
supervisor/shared/stack.c \
supervisor/shared/status_leds.c \
supervisor/shared/safe_mode.c \
supervisor/shared/translate.c \
ifndef $(NO_USB)
NO_USB = $(wildcard supervisor/usb.c)