summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2021-05-26 17:32:49 +0700
committerhathach <[email protected]>2021-05-26 17:32:49 +0700
commitdbef50f8ffb6892297456aeb409f3d52d3731f0a (patch)
treeccdc55b79f09fac955fcca7bb93b2ff74511d299
parentce59d69520166b37869cf83a3dab929c1b2c4ac4 (diff)
parent220f4410485a84a4e5e8f2a68e03dd8ed3b93900 (diff)
Merge branch 'master' into xmos-jmccarthy-master
-rw-r--r--.github/workflows/build.yml258
-rw-r--r--.github/workflows/build_esp.yml35
-rw-r--r--.github/workflows/build_msp430.yml50
-rw-r--r--.github/workflows/build_renesas.yml51
-rw-r--r--.github/workflows/build_riscv.yml50
-rw-r--r--examples/device/uac2_headset/src/main.c9
-rw-r--r--examples/make.mk4
-rw-r--r--hw/bsp/nrf/family.c9
-rw-r--r--src/common/tusb_fifo.c2
-rw-r--r--src/osal/osal_pico.h2
10 files changed, 208 insertions, 262 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 01b280fc4..0ed20b859 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,9 +1,8 @@
-name: Build
+name: Build ARM
on:
pull_request:
push:
- repository_dispatch:
release:
types:
- created
@@ -94,259 +93,6 @@ jobs:
- name: Build
run: python3 tools/build_family.py ${{ matrix.family }}
- - uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.family }}-tinyusb-examples
- path: _bin/
-
- - name: Create Release Asset
- if: ${{ github.event_name == 'release' }}
- run: |
- cd _bin/
- zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip *
-
- - name: Upload Release Asset
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- if: ${{ github.event_name == 'release' }}
- with:
- upload_url: ${{ github.event.release.upload_url }}
- asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_content_type: application/zip
-
- # ---------------------------------------
- # Build RISC-V family
- # ---------------------------------------
- build-riscv:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- family:
- # Alphabetical order
- - 'fomu'
- steps:
- - name: Setup Python
- uses: actions/setup-python@v2
-
- - name: Checkout TinyUSB
- uses: actions/checkout@v2
-
- - name: Checkout common submodules in lib
- run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip
-
- - name: Set Toolchain URL
- run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v10.1.0-1.1/xpack-riscv-none-embed-gcc-10.1.0-1.1-linux-x64.tar.gz
-
- - name: Cache Toolchain
- uses: actions/cache@v2
- id: cache-toolchain
- with:
- path: ~/cache/
- key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
-
- - name: Install Toolchain
- if: steps.cache-toolchain.outputs.cache-hit != 'true'
- run: |
- mkdir -p ~/cache/toolchain
- wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz
- tar -C ~/cache/toolchain -xaf toolchain.tar.gz
-
- - name: Set Toolchain Path
- run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
-
- - name: Build
- run: python3 tools/build_family.py ${{ matrix.family }}
-
- - uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.family }}-tinyusb-examples
- path: _bin/
-
- - name: Create Release Asset
- if: ${{ github.event_name == 'release' }}
- run: |
- cd _bin/
- zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip *
-
- - name: Upload Release Asset
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- if: ${{ github.event_name == 'release' }}
- with:
- upload_url: ${{ github.event.release.upload_url }}
- asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_content_type: application/zip
-
- # ---------------------------------------
- # Build ESP32SX family
- # ---------------------------------------
- build-esp32sx:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- board:
- # Alphabetical order
- # ESP32-S2
- - 'adafruit_feather_esp32s2'
- - 'adafruit_magtag_29gray'
- - 'adafruit_metro_esp32s2'
- - 'espressif_kaluga_1'
- - 'espressif_saola_1'
- # ESP32-S3
- - 'espressif_addax_1'
-
- steps:
- - name: Setup Python
- uses: actions/setup-python@v2
-
- - name: Pull ESP-IDF docker
- run: docker pull espressif/idf:latest
-
- - name: Checkout TinyUSB
- uses: actions/checkout@v2
-
- - name: Build
- run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32sx.py ${{ matrix.board }}
-
- # ---------------------------------------
- # Build msp430 family
- # ---------------------------------------
- build-msp430:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- family:
- # Alphabetical order
- - 'msp430'
- steps:
- - name: Setup Python
- uses: actions/setup-python@v2
-
- - name: Checkout TinyUSB
- uses: actions/checkout@v2
-
- - name: Checkout common submodules in lib
- run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip
-
- - name: Set Toolchain URL
- run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2
-
- - name: Cache Toolchain
- uses: actions/cache@v2
- id: cache-toolchain
- with:
- path: ~/cache/
- key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
-
- - name: Install Toolchain
- if: steps.cache-toolchain.outputs.cache-hit != 'true'
- run: |
- mkdir -p ~/cache/toolchain
- wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.bz2
- tar -C ~/cache/toolchain -xaf toolchain.tar.bz2
-
- - name: Set Toolchain Path
- run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
-
- - name: Build
- run: python3 tools/build_family.py ${{ matrix.family }}
-
- - uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.family }}-tinyusb-examples
- path: _bin/
-
- - name: Create Release Asset
- if: ${{ github.event_name == 'release' }}
- run: |
- cd _bin/
- zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip *
-
- - name: Upload Release Asset
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- if: ${{ github.event_name == 'release' }}
- with:
- upload_url: ${{ github.event.release.upload_url }}
- asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_content_type: application/zip
-
- # ---------------------------------------
- # Build Renesas family
- # ---------------------------------------
- build-renesas:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- family:
- # Alphabetical order
- - 'rx63n'
- steps:
- - name: Setup Python
- uses: actions/setup-python@v2
-
- - name: Checkout TinyUSB
- uses: actions/checkout@v2
-
- - name: Checkout common submodules in lib
- run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip
-
- - name: Set Toolchain URL
- run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://gcc-renesas.com/downloads/get.php?f=rx/8.3.0.202004-gnurx/gcc-8.3.0.202004-GNURX-ELF.run
-
- - name: Cache Toolchain
- uses: actions/cache@v2
- id: cache-toolchain
- with:
- path: ~/cache/
- key: ${{ runner.os }}-21-03-30-${{ env.TOOLCHAIN_URL }}
-
- - name: Install Toolchain
- if: steps.cache-toolchain.outputs.cache-hit != 'true'
- run: |
- mkdir -p ~/cache/toolchain/gnurx
- wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.run
- chmod +x toolchain.run
- ./toolchain.run -p ~/cache/toolchain/gnurx -y
-
- - name: Set Toolchain Path
- run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
-
- - name: Build
- run: python3 tools/build_family.py ${{ matrix.family }}
-
- - uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.family }}-tinyusb-examples
- path: _bin/
-
- - name: Create Release Asset
- if: ${{ github.event_name == 'release' }}
- run: |
- cd _bin/
- zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip *
-
- - name: Upload Release Asset
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- if: ${{ github.event_name == 'release' }}
- with:
- upload_url: ${{ github.event.release.upload_url }}
- asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip
- asset_content_type: application/zip
-
# ---------------------------------------
# Build all no-family (opharned) boards
# ---------------------------------------
@@ -394,4 +140,4 @@ jobs:
run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
- name: Build
- run: python3 tools/build_board.py ${{ matrix.example }} \ No newline at end of file
+ run: python3 tools/build_board.py ${{ matrix.example }}
diff --git a/.github/workflows/build_esp.yml b/.github/workflows/build_esp.yml
new file mode 100644
index 000000000..08bb4f5d2
--- /dev/null
+++ b/.github/workflows/build_esp.yml
@@ -0,0 +1,35 @@
+name: Build ESP
+
+on:
+ pull_request:
+ push:
+ release:
+ types:
+ - created
+
+jobs:
+ build-esp:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ board:
+ # Alphabetical order
+ # ESP32-S2
+ - 'adafruit_metro_esp32s2'
+ - 'espressif_saola_1'
+ # ESP32-S3
+ - 'espressif_addax_1'
+
+ steps:
+ - name: Setup Python
+ uses: actions/setup-python@v2
+
+ - name: Pull ESP-IDF docker
+ run: docker pull espressif/idf:latest
+
+ - name: Checkout TinyUSB
+ uses: actions/checkout@v2
+
+ - name: Build
+ run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32sx.py ${{ matrix.board }}
diff --git a/.github/workflows/build_msp430.yml b/.github/workflows/build_msp430.yml
new file mode 100644
index 000000000..ff2ce72c9
--- /dev/null
+++ b/.github/workflows/build_msp430.yml
@@ -0,0 +1,50 @@
+name: Build MSP430
+
+on:
+ pull_request:
+ push:
+ release:
+ types:
+ - created
+
+jobs:
+ build-msp430:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ family:
+ # Alphabetical order
+ - 'msp430'
+ steps:
+ - name: Setup Python
+ uses: actions/setup-python@v2
+
+ - name: Checkout TinyUSB
+ uses: actions/checkout@v2
+
+ - name: Checkout common submodules in lib
+ run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip
+
+ - name: Set Toolchain URL
+ run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2
+
+ - name: Cache Toolchain
+ uses: actions/cache@v2
+ id: cache-toolchain
+ with:
+ path: ~/cache/
+ key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
+
+ - name: Install Toolchain
+ if: steps.cache-toolchain.outputs.cache-hit != 'true'
+ run: |
+ mkdir -p ~/cache/toolchain
+ wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.bz2
+ tar -C ~/cache/toolchain -xaf toolchain.tar.bz2
+
+ - name: Set Toolchain Path
+ run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
+
+ - name: Build
+ run: python3 tools/build_family.py ${{ matrix.family }}
diff --git a/.github/workflows/build_renesas.yml b/.github/workflows/build_renesas.yml
new file mode 100644
index 000000000..45e0c5fd5
--- /dev/null
+++ b/.github/workflows/build_renesas.yml
@@ -0,0 +1,51 @@
+name: Build Renesas
+
+on:
+ pull_request:
+ push:
+ release:
+ types:
+ - created
+
+jobs:
+ build-rx:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ family:
+ # Alphabetical order
+ - 'rx63n'
+ steps:
+ - name: Setup Python
+ uses: actions/setup-python@v2
+
+ - name: Checkout TinyUSB
+ uses: actions/checkout@v2
+
+ - name: Checkout common submodules in lib
+ run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip
+
+ - name: Set Toolchain URL
+ run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://gcc-renesas.com/downloads/get.php?f=rx/8.3.0.202004-gnurx/gcc-8.3.0.202004-GNURX-ELF.run
+
+ - name: Cache Toolchain
+ uses: actions/cache@v2
+ id: cache-toolchain
+ with:
+ path: ~/cache/
+ key: ${{ runner.os }}-21-03-30-${{ env.TOOLCHAIN_URL }}
+
+ - name: Install Toolchain
+ if: steps.cache-toolchain.outputs.cache-hit != 'true'
+ run: |
+ mkdir -p ~/cache/toolchain/gnurx
+ wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.run
+ chmod +x toolchain.run
+ ./toolchain.run -p ~/cache/toolchain/gnurx -y
+
+ - name: Set Toolchain Path
+ run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
+
+ - name: Build
+ run: python3 tools/build_family.py ${{ matrix.family }}
diff --git a/.github/workflows/build_riscv.yml b/.github/workflows/build_riscv.yml
new file mode 100644
index 000000000..1e3046d2c
--- /dev/null
+++ b/.github/workflows/build_riscv.yml
@@ -0,0 +1,50 @@
+name: Build RISC-V
+
+on:
+ pull_request:
+ push:
+ release:
+ types:
+ - created
+
+jobs:
+ build-riscv:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ family:
+ # Alphabetical order
+ - 'fomu'
+ steps:
+ - name: Setup Python
+ uses: actions/setup-python@v2
+
+ - name: Checkout TinyUSB
+ uses: actions/checkout@v2
+
+ - name: Checkout common submodules in lib
+ run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip
+
+ - name: Set Toolchain URL
+ run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v10.1.0-1.1/xpack-riscv-none-embed-gcc-10.1.0-1.1-linux-x64.tar.gz
+
+ - name: Cache Toolchain
+ uses: actions/cache@v2
+ id: cache-toolchain
+ with:
+ path: ~/cache/
+ key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}
+
+ - name: Install Toolchain
+ if: steps.cache-toolchain.outputs.cache-hit != 'true'
+ run: |
+ mkdir -p ~/cache/toolchain
+ wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz
+ tar -C ~/cache/toolchain -xaf toolchain.tar.gz
+
+ - name: Set Toolchain Path
+ run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`
+
+ - name: Build
+ run: python3 tools/build_family.py ${{ matrix.family }}
diff --git a/examples/device/uac2_headset/src/main.c b/examples/device/uac2_headset/src/main.c
index 57abafe6c..1b6a770a3 100644
--- a/examples/device/uac2_headset/src/main.c
+++ b/examples/device/uac2_headset/src/main.c
@@ -332,13 +332,14 @@ bool tud_audio_set_itf_cb(uint8_t rhport, tusb_control_request_t const * p_reque
return true;
}
-bool tud_audio_rx_done_cb(uint8_t rhport, uint8_t *buffer, uint16_t buf_size)
+bool tud_audio_rx_done_pre_read_cb(uint8_t rhport, uint16_t n_bytes_received, uint8_t func_id, uint8_t ep_out, uint8_t cur_alt_setting)
{
(void)rhport;
+ (void)func_id;
+ (void)ep_out;
+ (void)cur_alt_setting;
- spk_data_size = buf_size;
- memcpy(spk_buf, buffer, buf_size);
-
+ spk_data_size = tud_audio_read(spk_buf, n_bytes_received);
return true;
}
diff --git a/examples/make.mk b/examples/make.mk
index 6366d6cef..df8bfd617 100644
--- a/examples/make.mk
+++ b/examples/make.mk
@@ -88,6 +88,7 @@ CFLAGS += \
-fno-strict-aliasing \
-Wdouble-promotion \
-Wstrict-prototypes \
+ -Wstrict-overflow \
-Wall \
-Wextra \
-Werror \
@@ -100,7 +101,8 @@ CFLAGS += \
-Wsign-compare \
-Wmissing-format-attribute \
-Wunreachable-code \
- -Wcast-align
+ -Wcast-align \
+ -Wcast-function-type
# Debugging/Optimization
ifeq ($(DEBUG), 1)
diff --git a/hw/bsp/nrf/family.c b/hw/bsp/nrf/family.c
index fc5e805d9..ed742daaf 100644
--- a/hw/bsp/nrf/family.c
+++ b/hw/bsp/nrf/family.c
@@ -55,6 +55,13 @@ static nrfx_uarte_t _uart_id = NRFX_UARTE_INSTANCE(0);
// We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled.
extern void tusb_hal_nrf_power_event(uint32_t event);
+
+// nrf power callback, could be unused if SD is enabled or usb is disabled (board_test example)
+TU_ATTR_UNUSED static void power_event_handler(nrfx_power_usb_evt_t event)
+{
+ tusb_hal_nrf_power_event((uint32_t) event);
+}
+
void board_init(void)
{
// stop LF clock just in case we jump from application without reset
@@ -121,7 +128,7 @@ void board_init(void)
// Register tusb function as USB power handler
// cause cast-function-type warning
- const nrfx_power_usbevt_config_t config = { .handler = ((nrfx_power_usb_event_handler_t) tusb_hal_nrf_power_event) };
+ const nrfx_power_usbevt_config_t config = { .handler = power_event_handler };
nrfx_power_usbevt_init(&config);
nrfx_power_usbevt_enable();
diff --git a/src/common/tusb_fifo.c b/src/common/tusb_fifo.c
index 81e11eb01..5f7b6a26d 100644
--- a/src/common/tusb_fifo.c
+++ b/src/common/tusb_fifo.c
@@ -325,6 +325,8 @@ static uint16_t advance_pointer(tu_fifo_t* f, uint16_t p, uint16_t offset)
// We limit the index space of p such that a correct wrap around happens
// Check for a wrap around or if we are in unused index space - This has to be checked first!!
// We are exploiting the wrap around to the correct index
+
+ // TODO warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
if ((p > p + offset) || (p + offset > f->max_pointer_idx))
{
p = (p + offset) + f->non_used_index_space;
diff --git a/src/osal/osal_pico.h b/src/osal/osal_pico.h
index bae1217eb..1c3366e01 100644
--- a/src/osal/osal_pico.h
+++ b/src/osal/osal_pico.h
@@ -57,6 +57,7 @@ static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semde
static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr)
{
+ (void) in_isr;
sem_release(sem_hdl);
return true;
}
@@ -158,6 +159,7 @@ static inline bool osal_queue_send(osal_queue_t qhdl, void const * data, bool in
// however osal_queue_recieve may be. therefore my assumption is that
// the fifo mutex is not populated for queues used from an IRQ context
//assert(!qhdl->ff.mutex);
+ (void) in_isr;
_osal_q_lock(qhdl);
bool success = tu_fifo_write(&qhdl->ff, data);