Created cmake file for this as a proper library.

Edited example cmake files to use library rather than manually add the sources.

Removed unused include that needed an extra library to compile.

Fixed a small compile warning when comparing signed to unsigned.
This commit is contained in:
Blake Felt 2022-05-21 15:47:31 -06:00
parent 0688e283ba
commit 9f438bdd84
6 changed files with 48 additions and 36 deletions

26
CMakeLists.txt Normal file
View file

@ -0,0 +1,26 @@
set(lib_name pico_pio_usb)
add_library(${lib_name} INTERFACE)
set(dir ${CMAKE_CURRENT_LIST_DIR}/src)
pico_generate_pio_header(${lib_name} ${dir}/usb_tx.pio)
pico_generate_pio_header(${lib_name} ${dir}/usb_rx.pio)
target_sources(${lib_name} INTERFACE
${dir}/pio_usb.c
${dir}/pio_usb_device.c
${dir}/pio_usb_host.c
${dir}/usb_crc.c
)
target_link_libraries(${lib_name} INTERFACE
pico_stdlib
pico_multicore
hardware_pio
hardware_dma
)
target_include_directories(${lib_name} INTERFACE ${dir})
# enable all warnings
target_compile_options(${lib_name} INTERFACE -Wall -Wextra)

View file

@ -5,6 +5,11 @@ project(pio_usb)
pico_sdk_init() pico_sdk_init()
# add pico-pio-usb library for examples
set(PICO_PIO_USB_DIR "${CMAKE_CURRENT_LIST_DIR}/../")
# the second argument to add_subdirectory is needed here because this isn't
# a subdirectory, it's out of tree.
add_subdirectory(${PICO_PIO_USB_DIR} pico_pio_usb)
add_subdirectory(capture_hid_report) add_subdirectory(capture_hid_report)
add_subdirectory(usb_device) add_subdirectory(usb_device)

View file

@ -3,22 +3,13 @@ add_executable(${target_name})
pico_enable_stdio_usb(${target_name} 1) pico_enable_stdio_usb(${target_name} 1)
set(PICO_PIO_USB_SRC "${CMAKE_CURRENT_LIST_DIR}/../../src")
pico_generate_pio_header(${target_name} ${PICO_PIO_USB_SRC}/usb_tx.pio)
pico_generate_pio_header(${target_name} ${PICO_PIO_USB_SRC}/usb_rx.pio)
target_sources(${target_name} PRIVATE target_sources(${target_name} PRIVATE
capture_hid_report.c capture_hid_report.c
${PICO_PIO_USB_SRC}/pio_usb.c
${PICO_PIO_USB_SRC}/pio_usb_device.c
${PICO_PIO_USB_SRC}/pio_usb_host.c
${PICO_PIO_USB_SRC}/usb_crc.c
) )
# print memory usage, enable all warnings
target_link_options(${target_name} PRIVATE -Xlinker --print-memory-usage) target_link_options(${target_name} PRIVATE -Xlinker --print-memory-usage)
target_compile_options(${target_name} PRIVATE -Wall -Wextra) target_compile_options(${target_name} PRIVATE -Wall -Wextra)
target_include_directories(${target_name} PRIVATE ${PICO_PIO_USB_SRC})
target_link_libraries(${target_name} PRIVATE pico_stdlib pico_multicore hardware_pio hardware_dma) target_link_libraries(${target_name} PRIVATE pico_stdlib pico_multicore pico_pio_usb)
pico_add_extra_outputs(${target_name}) pico_add_extra_outputs(${target_name})

View file

@ -1,24 +1,21 @@
set(target_name host_hid_to_device_cdc) set(target_name host_hid_to_device_cdc)
add_executable(${target_name}) add_executable(${target_name})
set(PICO_PIO_USB_SRC "${CMAKE_CURRENT_LIST_DIR}/../../src")
pico_generate_pio_header(${target_name} ${PICO_PIO_USB_SRC}/usb_tx.pio)
pico_generate_pio_header(${target_name} ${PICO_PIO_USB_SRC}/usb_rx.pio)
target_sources(${target_name} PRIVATE target_sources(${target_name} PRIVATE
host_hid_to_device_cdc.c host_hid_to_device_cdc.c
usb_descriptors.c usb_descriptors.c
${PICO_PIO_USB_SRC}/pio_usb.c
${PICO_PIO_USB_SRC}/pio_usb_device.c
${PICO_PIO_USB_SRC}/pio_usb_host.c
${PICO_PIO_USB_SRC}/usb_crc.c
) )
# print memory usage, enable all warnings
target_link_options(${target_name} PRIVATE -Xlinker --print-memory-usage) target_link_options(${target_name} PRIVATE -Xlinker --print-memory-usage)
target_compile_options(${target_name} PRIVATE -Wall -Wextra) target_compile_options(${target_name} PRIVATE -Wall -Wextra)
target_include_directories(${target_name} PRIVATE ${PICO_PIO_USB_SRC} ${CMAKE_CURRENT_LIST_DIR})
# use tinyusb implementation
target_compile_definitions(${target_name} PRIVATE PIO_USB_USE_TINYUSB) target_compile_definitions(${target_name} PRIVATE PIO_USB_USE_TINYUSB)
target_link_libraries(${target_name} PRIVATE pico_stdlib pico_multicore hardware_pio hardware_dma tinyusb_device tinyusb_host) # needed so tinyusb can find tusb_config.h
target_include_directories(${target_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(${target_name} PRIVATE pico_stdlib pico_pio_usb tinyusb_device tinyusb_host)
pico_add_extra_outputs(${target_name}) pico_add_extra_outputs(${target_name})

View file

@ -3,22 +3,14 @@ add_executable(${target_name})
pico_enable_stdio_usb(${target_name} 1) pico_enable_stdio_usb(${target_name} 1)
set(PICO_PIO_USB_SRC "${CMAKE_CURRENT_LIST_DIR}/../../src")
pico_generate_pio_header(${target_name} ${PICO_PIO_USB_SRC}/usb_tx.pio)
pico_generate_pio_header(${target_name} ${PICO_PIO_USB_SRC}/usb_rx.pio)
target_sources(${target_name} PRIVATE target_sources(${target_name} PRIVATE
usb_device.c usb_device.c
${PICO_PIO_USB_SRC}/pio_usb.c
${PICO_PIO_USB_SRC}/pio_usb_device.c
${PICO_PIO_USB_SRC}/pio_usb_host.c
${PICO_PIO_USB_SRC}/usb_crc.c
) )
# print memory usage, enable all warnings
target_link_options(${target_name} PRIVATE -Xlinker --print-memory-usage) target_link_options(${target_name} PRIVATE -Xlinker --print-memory-usage)
target_compile_options(${target_name} PRIVATE -Wall -Wextra) target_compile_options(${target_name} PRIVATE -Wall -Wextra)
target_include_directories(${target_name} PRIVATE ${PICO_PIO_USB_SRC})
target_link_libraries(${target_name} PRIVATE pico_stdlib pico_multicore hardware_pio hardware_dma) target_link_libraries(${target_name} PRIVATE pico_stdlib pico_multicore pico_pio_usb)
pico_add_extra_outputs(${target_name}) pico_add_extra_outputs(${target_name})

View file

@ -14,7 +14,6 @@
#include "hardware/pio.h" #include "hardware/pio.h"
#include "hardware/sync.h" #include "hardware/sync.h"
#include "pico/bootrom.h" #include "pico/bootrom.h"
#include "pico/multicore.h"
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "pio_usb.h" #include "pio_usb.h"
@ -152,6 +151,7 @@ int __no_inline_not_in_flash_func(pio_usb_bus_receive_packet_and_handshake)(
uint16_t crc_prev = 0xffff; uint16_t crc_prev = 0xffff;
uint16_t crc_prev2 = 0xffff; uint16_t crc_prev2 = 0xffff;
uint16_t crc_receive = 0xffff; uint16_t crc_receive = 0xffff;
uint16_t crc_receive_inverse;
bool crc_match = false; bool crc_match = false;
int16_t t = 240; int16_t t = 240;
uint16_t idx = 0; uint16_t idx = 0;
@ -177,7 +177,8 @@ int __no_inline_not_in_flash_func(pio_usb_bus_receive_packet_and_handshake)(
crc = update_usb_crc16(crc, data); crc = update_usb_crc16(crc, data);
pp->usb_rx_buffer[idx++] = data; pp->usb_rx_buffer[idx++] = data;
crc_receive = (crc_receive >> 8) | (data << 8); crc_receive = (crc_receive >> 8) | (data << 8);
crc_match = ((crc_receive ^ 0xffff) == crc_prev2); crc_receive_inverse = crc_receive ^ 0xffff;
crc_match = (crc_receive_inverse == crc_prev2);
} }
} }