diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 896e5e723bc1902a649f2c9e8a60b898b6409db1..9df4a8c36fb10806723d9d9d67dbc5974cbf1965 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,17 +4,6 @@ stages: variables: GIT_SUBMODULE_STRATEGY: recursive -build-p1: - stage: build - tags: - - nixos - script: - - nix-shell nix/shell.nix --command "idf.py -g p1 build" - artifacts: - expose_as: 'Proto 1 ELF' - paths: ['build/badge23.elf'] - expire_in: 5 hours - build-p3: stage: build tags: diff --git a/components/badge23/captouch.c b/components/badge23/captouch.c index 465feccd6bc85f38bf86fbbc404f31d279b48266..9f5077bb797bee44067b8545c9c7d47b39a3f429 100644 --- a/components/badge23/captouch.c +++ b/components/badge23/captouch.c @@ -17,7 +17,6 @@ #define AFE_INCR_CAP 1000 -#if defined(CONFIG_FLOW3R_HW_GEN_P3) || defined(CONFIG_FLOW3R_HW_GEN_P4) || defined(CONFIG_FLOW3R_HW_GEN_P6) static const uint8_t top_map[] = {0, 0, 0, 2, 2, 2, 6, 6, 6, 4, 4, 4}; static const uint8_t top_stages = 12; static const uint8_t bot_map[] = {1, 1, 3, 3, 5, 7, 7, 9, 9, 8, 8, 8}; @@ -26,21 +25,6 @@ static const uint8_t bot_stage_config[] = {0,1,2,3,5,6,7,8,9,10,11,12}; #define DEFAULT_THRES_TOP 8000 #define DEFAULT_THRES_BOT 12000 -#elif defined(CONFIG_FLOW3R_HW_GEN_P1) -static const uint8_t top_map[] = {2, 2, 2, 0, 0, 8, 8, 8, 6, 6, 4, 4}; -static const uint8_t top_stages = 12; -static const uint8_t bot_map[] = {1, 1, 3, 3, 5, 5, 7, 7, 9, 9}; -static const uint8_t bot_stages = 10; -static const uint8_t top_segment_map[] = {1,2,0,1,2,1,2,0,1,2,1,2}; //idk -static const uint8_t bot_segment_map[] = {3,0,3,0,3,0,0,3,0,3}; //idk -static const uint8_t bot_stage_config[] = {0,1,2,3,4,5,6,7,8,9,10,11}; -#define DEFAULT_THRES_TOP 2000 -#define DEFAULT_THRES_BOT 12000 - -#else -#error "captouch not implemented for this badge generation" -#endif - #if defined(CONFIG_FLOW3R_HW_GEN_P4) static const uint8_t top_segment_map[] = {1,3,2,2,3,1,1,3,2,1,3,2}; //PETAL_PAD_* static const uint8_t bot_segment_map[] = {3,0,3,0,0,0,3,0,3,1,2,3}; //PETAL_PAD_* diff --git a/components/flow3r_bsp/CMakeLists.txt b/components/flow3r_bsp/CMakeLists.txt index 241f4533cc7d7d63a0442d89dd2bc4178f09fcde..60ecf0f064c22c517352f00e55fc2630226a3e40 100644 --- a/components/flow3r_bsp/CMakeLists.txt +++ b/components/flow3r_bsp/CMakeLists.txt @@ -9,7 +9,6 @@ idf_component_register( flow3r_bsp_max98091.c flow3r_bsp_leds.c flow3r_bsp_rmtled.c - flow3r_bsp_spiled.c flow3r_bsp_spio.c INCLUDE_DIRS . diff --git a/components/flow3r_bsp/Kconfig b/components/flow3r_bsp/Kconfig index 25cebf3afe9c7188b043fe688ed1e0df45f8c218..b757d787da8091b10ce170b33abe32308f6c9ba3 100644 --- a/components/flow3r_bsp/Kconfig +++ b/components/flow3r_bsp/Kconfig @@ -2,15 +2,6 @@ menu "Flow3r Config" choice FLOW3R_HW_GEN prompt "Badge23 Hardware Generation" default FLOW3R_HW_GEN_P4 - config FLOW3R_HW_GEN_P1 - help - Protoype version 1, a.k.a. proto1. Very early protoype. - Visual identifiers: - - No line in/out jacks - - White bottom board - - USB-C jack points side of leaf - select FLOW3R_ESP32S3 - bool "Prototype 1" config FLOW3R_HW_GEN_P3 help Prototype version 3, a.k.a. proto3 diff --git a/components/flow3r_bsp/flow3r_bsp_audio.c b/components/flow3r_bsp/flow3r_bsp_audio.c index 0940d5d5e3ab7f239f85b30bb1749668653d986f..bf3d5fa3a7d99728bd54ee6d5c469197bb5f097e 100644 --- a/components/flow3r_bsp/flow3r_bsp_audio.c +++ b/components/flow3r_bsp/flow3r_bsp_audio.c @@ -9,8 +9,6 @@ esp_err_t flow3r_bsp_audio_write(const void *src, size_t size, size_t *bytes_wri return i2s_write(0, src, size, bytes_written, ticks_to_wait); } -#if defined(CONFIG_FLOW3R_HW_GEN_P3) || defined(CONFIG_FLOW3R_HW_GEN_P4) || defined(CONFIG_FLOW3R_HW_GEN_P6) - #include "flow3r_bsp_max98091.h" void flow3r_bsp_audio_init(void) { @@ -80,85 +78,3 @@ void flow3r_bsp_audio_register_poke(uint8_t reg, uint8_t data) { esp_err_t flow3r_bsp_audio_read(void *dest, size_t size, size_t *bytes_read, TickType_t ticks_to_wait) { return i2s_read(0, dest, size, bytes_read, ticks_to_wait); } - -#elif defined(CONFIG_FLOW3R_HW_GEN_P1) - -void flow3r_bsp_audio_init(void) { - static const i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_TX, - .sample_rate = FLOW3R_BSP_AUDIO_SAMPLE_RATE, - .bits_per_sample = 16, - .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, - .communication_format = I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB, - .intr_alloc_flags = 0, // default interrupt priority - .dma_buf_count = FLOW3R_BSP_AUDIO_DMA_BUFFER_COUNT, - .dma_buf_len = FLOW3R_BSP_AUDIO_DMA_BUFFER_SIZE, - .use_apll = false - }; - static const i2s_pin_config_t pin_config = { - .bck_io_num = 13, - .mck_io_num = 11, - .ws_io_num = 12, - .data_out_num = 14, - .data_in_num = I2S_PIN_NO_CHANGE, - }; - ESP_ERROR_CHECK(i2s_driver_install(0, &i2s_config, 0, NULL)); - i2s_set_pin(0, &pin_config); - - ESP_LOGE(TAG, "Prototype1 has a very limited audio codec, most features will not work! Get a newer hardware revision."); -} - -float flow3r_bsp_audio_headphones_set_volume(bool mute, float dB) { - // Not supported in this generation. - return 0.0; -} - -float flow3r_bsp_audio_speaker_set_volume(bool mute, float dB) { - return 0.0; -} - -void flow3r_bsp_audio_headset_set_gain_dB(uint8_t gain_dB) { - // Not supported in this generation. -} - -void flow3r_bsp_audio_read_jacksense(flow3r_bsp_audio_jacksense_state_t *st) { - // Not supported in this generation. - st->headphones = false; - st->headset = false; -} - -void flow3r_bsp_audio_input_set_source(flow3r_bsp_audio_input_source_t source) { - // Not supported in this generation. -} - -void flow3r_bsp_audio_headphones_line_in_set_hardware_thru(bool enable) { - // Not supported in this generation. -} - -void flow3r_bsp_audio_speaker_line_in_set_hardware_thru(bool enable) { - // Not supported in this generation. -} - -void flow3r_bsp_audio_line_in_set_hardware_thru(bool enable) { - // Not supported in this generation. -} - -bool flow3r_bsp_audio_has_hardware_mute(void) { - return false; -} - -void flow3r_bsp_audio_register_poke(uint8_t reg, uint8_t data) { - // Not supported in this generation. -} - -esp_err_t flow3r_bsp_audio_read(void *dest, size_t size, size_t *bytes_read, TickType_t ticks_to_wait) { - // Not supported in this generation. But pretend we've read silence. - memset(dest, 0, size); - *bytes_read = size; - return ESP_OK; -} - - -#else -#error "audio not implemented for this badge generation" -#endif diff --git a/components/flow3r_bsp/flow3r_bsp_display.c b/components/flow3r_bsp/flow3r_bsp_display.c index 785e17cb1a83e4a38ba461aaf13d920b8328ebf2..e689dcb2f14370059fe82b354234bf4d268f5acd 100644 --- a/components/flow3r_bsp/flow3r_bsp_display.c +++ b/components/flow3r_bsp/flow3r_bsp_display.c @@ -9,22 +9,6 @@ static const char *TAG = "flow3r-bsp-display"; -#if defined(CONFIG_FLOW3R_HW_GEN_P1) -#define FLOW3R_BSP_GC9A01 -flow3r_bsp_gc9a01_config_t gc9a01_config = { - .reset_used = 1, - .backlight_used = 0, - - .pin_rst = 38, - .pin_sck = 39, - .pin_mosi = 41, - .pin_cs = 40, - .pin_dc = 42, - - .host = 2, -}; -#elif defined(CONFIG_FLOW3R_HW_GEN_P3) || defined(CONFIG_FLOW3R_HW_GEN_P4) || defined(CONFIG_FLOW3R_HW_GEN_P6) -#define FLOW3R_BSP_GC9A01 flow3r_bsp_gc9a01_config_t gc9a01_config = { .reset_used = 0, .backlight_used = 1, @@ -37,11 +21,6 @@ flow3r_bsp_gc9a01_config_t gc9a01_config = { .host = 2, }; -#else -#error "display unimplemented for this badge generation" -#endif - -#ifdef FLOW3R_BSP_GC9A01 static flow3r_bsp_gc9a01_t gc9a01; static uint8_t gc9a01_initialized = 0; @@ -83,4 +62,3 @@ void flow3r_bsp_display_set_backlight(uint8_t percent) { } flow3r_bsp_gc9a01_backlight_set(&gc9a01, percent); } -#endif \ No newline at end of file diff --git a/components/flow3r_bsp/flow3r_bsp_hwconfig.c b/components/flow3r_bsp/flow3r_bsp_hwconfig.c index d7f045da78bf1e613b9adc600a9d8f1a5b1faab9..3f5e24094bbf8de4f28d318165f2bc2e018fa4f7 100644 --- a/components/flow3r_bsp/flow3r_bsp_hwconfig.c +++ b/components/flow3r_bsp/flow3r_bsp_hwconfig.c @@ -1,8 +1,6 @@ #include "sdkconfig.h" -#if defined(CONFIG_FLOW3R_HW_GEN_P1) -const char *flow3r_bsp_hw_name = "proto1"; -#elif defined(CONFIG_FLOW3R_HW_GEN_P3) +#if defined(CONFIG_FLOW3R_HW_GEN_P3) const char *flow3r_bsp_hw_name = "proto3"; #elif defined(CONFIG_FLOW3R_HW_GEN_P4) const char *flow3r_bsp_hw_name = "proto4"; diff --git a/components/flow3r_bsp/flow3r_bsp_i2c.c b/components/flow3r_bsp/flow3r_bsp_i2c.c index 981b22ba80f178af31a598d93c299e400ecae616..c8c879ed24fe1626955c978cbb3f279f4e539859 100644 --- a/components/flow3r_bsp/flow3r_bsp_i2c.c +++ b/components/flow3r_bsp/flow3r_bsp_i2c.c @@ -11,14 +11,7 @@ static SemaphoreHandle_t mutex; static const char *TAG = "flow3r-bsp-i2c"; -#if defined(CONFIG_FLOW3R_HW_GEN_P1) -const flow3r_i2c_addressdef flow3r_i2c_addresses = { - .codec = 0, // p1 has no i2c control channel to codec. - .touch_top = 0x2d, - .touch_bottom = 0x2c, - .portexp = { 0x6e, 0x6d }, -}; -#elif defined(CONFIG_FLOW3R_HW_GEN_P3) +#if defined(CONFIG_FLOW3R_HW_GEN_P3) const flow3r_i2c_addressdef flow3r_i2c_addresses = { .codec = 0x10, .touch_top = 0x2d, @@ -43,7 +36,6 @@ const flow3r_i2c_addressdef flow3r_i2c_addresses = { #error "i2c not implemented for this badge generation" #endif -#if defined(CONFIG_FLOW3R_HW_GEN_P3) || defined(CONFIG_FLOW3R_HW_GEN_P4) || defined(CONFIG_FLOW3R_HW_GEN_P6) static i2c_config_t i2c_conf = { .mode = I2C_MODE_MASTER, .sda_io_num = 2, @@ -52,18 +44,6 @@ static i2c_config_t i2c_conf = { .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = 400000, }; -#elif defined(CONFIG_FLOW3R_HW_GEN_P1) -static i2c_config_t i2c_conf = { - .mode = I2C_MODE_MASTER, - .sda_io_num = 10, - .scl_io_num = 9, - .sda_pullup_en = GPIO_PULLUP_ENABLE, - .scl_pullup_en = GPIO_PULLUP_ENABLE, - .master.clk_speed = 400000, -}; -#else -#error "i2c not implemented for this badge generation" -#endif void flow3r_bsp_i2c_init(void) { if (mutex != NULL) { @@ -125,4 +105,4 @@ void flow3r_bsp_i2c_scan(flow3r_bsp_i2c_scan_result_t *res) { } } ESP_LOGI(TAG, "Scan: done."); -} \ No newline at end of file +} diff --git a/components/flow3r_bsp/flow3r_bsp_leds.c b/components/flow3r_bsp/flow3r_bsp_leds.c index 20e52844b3773222ba7bca2ed1069e5014db0286..38ab78c86c298c6cffb22d45675c942ffaa16ec5 100644 --- a/components/flow3r_bsp/flow3r_bsp_leds.c +++ b/components/flow3r_bsp/flow3r_bsp_leds.c @@ -1,23 +1,5 @@ #include "flow3r_bsp.h" -#if defined(CONFIG_FLOW3R_HW_GEN_P1) - -#include "flow3r_bsp_spiled.h" - -esp_err_t flow3r_bsp_leds_init(void) { - return flow3r_bsp_spiled_init(FLOW3R_BSP_LED_COUNT); -} - -void flow3r_bsp_leds_set_pixel(uint32_t index, uint32_t red, uint32_t green, uint32_t blue) { - flow3r_bsp_spiled_set_pixel(index, red, green, blue); -} - -esp_err_t flow3r_bsp_leds_refresh(TickType_t timeout_ms) { - return flow3r_bsp_spiled_refresh(timeout_ms); -} - -#elif defined(CONFIG_FLOW3R_HW_GEN_P3) || defined(CONFIG_FLOW3R_HW_GEN_P4) || defined(CONFIG_FLOW3R_HW_GEN_P6) - #include "flow3r_bsp_rmtled.h" esp_err_t flow3r_bsp_leds_init(void) { @@ -31,7 +13,3 @@ void flow3r_bsp_leds_set_pixel(uint32_t index, uint32_t red, uint32_t green, uin esp_err_t flow3r_bsp_leds_refresh(TickType_t timeout_ms) { return flow3r_bsp_rmtled_refresh(timeout_ms); } - -#else -#error "leds not implemented for this badge generation" -#endif \ No newline at end of file diff --git a/components/flow3r_bsp/flow3r_bsp_spiled.c b/components/flow3r_bsp/flow3r_bsp_spiled.c deleted file mode 100644 index 676c20d5e7b4accb0848040cd5d05d8e94c60c8d..0000000000000000000000000000000000000000 --- a/components/flow3r_bsp/flow3r_bsp_spiled.c +++ /dev/null @@ -1,96 +0,0 @@ -// Driver for APA102-style LEDs, using SPI peripheral. - -#include "flow3r_bsp_spiled.h" - -#include <string.h> - -#include "driver/spi_master.h" -#include "esp_log.h" - -static const char *TAG = "flow3r-spiled"; - -static spi_bus_config_t buscfg; -static spi_device_interface_config_t devcfg; -static spi_device_handle_t spi_led; -static spi_transaction_t spi_trans_object; - -typedef struct { - uint16_t num_leds; - uint8_t *buffer; -} flow3r_bsp_spiled_t; - -static flow3r_bsp_spiled_t spiled; - - -esp_err_t flow3r_bsp_spiled_init(uint16_t num_leds) { - // Set up the Bus Config struct - buscfg.miso_io_num = -1; - buscfg.mosi_io_num = 18; - buscfg.sclk_io_num = 8; - buscfg.quadwp_io_num = -1; - buscfg.quadhd_io_num = -1; - buscfg.max_transfer_sz = 8000; - - // Set up the SPI Device Configuration Struct - devcfg.clock_speed_hz = 10000000; - devcfg.mode = 0; - devcfg.spics_io_num = -1; - devcfg.queue_size = 1; - - // Initialize the SPI driver - esp_err_t ret = spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "spi_bus_initialize: %s", esp_err_to_name(ret)); - return ret; - } - // Add SPI port to bus - ret = spi_bus_add_device(SPI2_HOST, &devcfg, &spi_led); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "spi_bus_add_device: %s", esp_err_to_name(ret)); - return ret; - } - - spiled.num_leds = num_leds; - spiled.buffer = calloc(4, num_leds + 2); - if (spiled.buffer == NULL) { - ESP_LOGE(TAG, "buffer allocation failed"); - return ESP_ERR_NO_MEM; - } - // Start Frame - spiled.buffer[0] = 0; - spiled.buffer[1] = 0; - spiled.buffer[2] = 0; - spiled.buffer[3] = 0; - // Global brightness. - for (int i = 0; i < num_leds; i++) { - spiled.buffer[i * 4 + 4] = 255; - } - // End Frame (this only works with up to 64 LEDs, meh). - int i = num_leds * 4 + 8; - spiled.buffer[i + 0] = 255; - spiled.buffer[i + 1] = 255; - spiled.buffer[i + 2] = 255; - spiled.buffer[i + 3] = 255; - - memset(&spi_trans_object, 0, sizeof(spi_trans_object)); - spi_trans_object.length = (4 * (num_leds+2))* 8; - spi_trans_object.tx_buffer = spiled.buffer; - return ESP_OK; -} - -void flow3r_bsp_spiled_set_pixel(uint32_t index, uint32_t red, uint32_t green, uint32_t blue) { - if (spiled.buffer == NULL) { - return; - } - if (index >= spiled.num_leds) { - return; - } - uint32_t start = index * 4 + 4; - spiled.buffer[start + 1] = blue & 0xFF; - spiled.buffer[start + 2] = green & 0xFF; - spiled.buffer[start + 3] = red & 0xFF; -} - -esp_err_t flow3r_bsp_spiled_refresh(int32_t timeout_ms) { - return spi_device_queue_trans(spi_led, &spi_trans_object, timeout_ms); -} \ No newline at end of file diff --git a/components/flow3r_bsp/flow3r_bsp_spiled.h b/components/flow3r_bsp/flow3r_bsp_spiled.h deleted file mode 100644 index 501e718a5c25498be3a5a5417279c8f0913f6f21..0000000000000000000000000000000000000000 --- a/components/flow3r_bsp/flow3r_bsp_spiled.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include "esp_err.h" - -esp_err_t flow3r_bsp_spiled_init(uint16_t num_leds); -void flow3r_bsp_spiled_set_pixel(uint32_t index, uint32_t red, uint32_t green, uint32_t blue); -esp_err_t flow3r_bsp_spiled_refresh(int32_t timeout_ms); \ No newline at end of file diff --git a/components/flow3r_bsp/flow3r_bsp_spio.c b/components/flow3r_bsp/flow3r_bsp_spio.c index 53858565a38cd8002d6f1c4d9a9ebee0d75486da..61dc03ea5ffd0b2489520a6a6a3f52b65fd9ac17 100644 --- a/components/flow3r_bsp/flow3r_bsp_spio.c +++ b/components/flow3r_bsp/flow3r_bsp_spio.c @@ -50,37 +50,7 @@ typedef struct { flow3r_bsp_iopin_t jacksense_right; } flow3r_bsp_iodef_t; -#if defined(CONFIG_FLOW3R_HW_GEN_P1) -static const flow3r_bsp_iodef_t iodef = { - .tripos_left = { - .left = IPEX(37, 1, .invert = true), - .mid = IESP(0, false, .invert = true), - .right = IPEX(35, 1, .invert = true), - }, - .tripos_right = { - .left = IESP(7, 1, .invert = true), - .mid = IESP(6, true, .invert = true), - .right = IESP(5, 1, .invert = true), - }, - .trrs_left = { - .tip_badgelink_enable = IODUMMY, - .ring_badgelink_enable = IODUMMY, - }, - .trrs_right = { - .tip_badgelink_enable = IODUMMY, - .ring_badgelink_enable = IODUMMY, - }, - .charger_state = IODUMMY, - .jacksense_right = IODUMMY, -}; -const flow3r_bsp_spio_programmable_pins_t flow3r_bsp_spio_programmable_pins = { - .badgelink_left_tip = 6, - .badgelink_left_ring = 7, - .badgelink_right_tip = 4, - .badgelink_right_ring = 5, -}; -#define PORTEXP_NONE -#elif defined(CONFIG_FLOW3R_HW_GEN_P4) || defined(CONFIG_FLOW3R_HW_GEN_P3) +#if defined(CONFIG_FLOW3R_HW_GEN_P4) || defined(CONFIG_FLOW3R_HW_GEN_P3) static const flow3r_bsp_iodef_t iodef = { .tripos_left = { .left = IESP(3, true, .invert = true), @@ -196,14 +166,6 @@ static esp_err_t _portexp_update(void) { } #endif -#ifdef PORTEXP_NONE -static esp_err_t _portexp_init(void) { return ESP_OK; } -static void _iopin_portexp_init(const flow3r_bsp_iopin_t *iopin) {} -static bool _iopin_portexp_get_pin(const flow3r_bsp_iopin_t *iopin) { return false; } -static void _iopin_portexp_set_pin(const flow3r_bsp_iopin_t *iopin, bool on) {} -static esp_err_t _portexp_update(void) { return ESP_OK; } -#endif - static esp_err_t _iopin_esp32_init(const flow3r_bsp_iopin_t *iopin) { gpio_config_t cfg = { .pin_bit_mask = 1 << iopin->pin, diff --git a/idf_ext.py b/idf_ext.py index 4183440cf5998d9792be87d4a2d89657557aa7af..7775df894bdbb001da2933e8b011b106471e63b5 100644 --- a/idf_ext.py +++ b/idf_ext.py @@ -14,7 +14,6 @@ def action_extensions(base_actions, project_path=os.getcwd()): # Map from canonical name to user-supported names. GENERATIONS = { - 'p1': ['proto1'], 'p3': ['proto3'], 'p4': ['proto4'], 'p6': ['proto6'],