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:
parent
0688e283ba
commit
9f438bdd84
6 changed files with 48 additions and 36 deletions
26
CMakeLists.txt
Normal file
26
CMakeLists.txt
Normal 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)
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue