Skip to content

Commit 5bf4754

Browse files
committed
Update CMakeLists.txt
1 parent 09f1180 commit 5bf4754

File tree

3 files changed

+56
-29
lines changed

3 files changed

+56
-29
lines changed

CMakeLists.txt

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
1-
# User configuration section starts here
1+
if (NOT PICO_PROGRAM_MAIN_ENTRY)
2+
# User configuration for HyperSerialPico section starts here
23

3-
# Some boards, such as the first Adafruit revisions, may have trouble booting properly
4-
# due to bad componets used in the design.
5-
# Turn this setting to ON if your rp2040 is not detected after firmware upload and reset
6-
set(BOOT_WORKAROUND OFF)
4+
# Some boards, such as the first Adafruit revisions, may have trouble booting properly
5+
# due to bad componets used in the design.
6+
# Turn this setting to ON if your rp2040 is not detected after firmware upload and reset
7+
set(BOOT_WORKAROUND OFF)
78

8-
# Default output data pin for the non-SPI LED strips (only for sk6812/ws2812b)
9-
set(OUTPUT_DATA_PIN 2)
9+
# Default output data pin for the non-SPI LED strips (only for sk6812/ws2812b)
10+
set(OUTPUT_DATA_PIN 2)
1011

11-
# Default output data/clocks pin for the SPI LED strips (only for apa102, not for sk6812/ws2812b)
12-
# only certain pairs of pins are allowed for selected SPI interface (refer to "readme.md")
13-
set(OUTPUT_SPI_DATA_PIN 3)
14-
set(OUTPUT_SPI_CLOCK_PIN 2)
15-
set(OUTPUT_SPI_INTERFACE spi0)
12+
# Default output data/clocks pin for the SPI LED strips (only for apa102, not for sk6812/ws2812b)
13+
# only certain pairs of pins are allowed for selected SPI interface (refer to "readme.md")
14+
set(OUTPUT_SPI_DATA_PIN 3)
15+
set(OUTPUT_SPI_CLOCK_PIN 2)
16+
set(OUTPUT_SPI_INTERFACE spi0)
1617

17-
# Use multi-segment, starting index of second led strip or OFF to disable
18-
set(SECOND_SEGMENT_INDEX OFF)
18+
# Use multi-segment, starting index of second led strip or OFF to disable
19+
set(SECOND_SEGMENT_INDEX OFF)
1920

20-
# If multi-segment is used and it's reversed, set this option to ON to enable reversing
21-
set(SECOND_SEGMENT_REVERSED OFF)
21+
# If multi-segment is used and it's reversed, set this option to ON to enable reversing
22+
set(SECOND_SEGMENT_REVERSED OFF)
2223

23-
# User configuration section ends here
24-
# Usually you don't need to change anything below this section
24+
# User configuration section ends here
25+
# Usually you don't need to change anything below this section
26+
endif()
2527

2628
cmake_minimum_required(VERSION 3.13)
2729

@@ -30,8 +32,8 @@ add_definitions ( -DPICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE=0 )
3032

3133
# initialize the SDK based on PICO_SDK_PATH
3234
# note: this must happen before project()
33-
set(PICO_SDK_PATH ${CMAKE_SOURCE_DIR}/sdk/pico)
34-
set(FREERTOS_KERNEL_PATH ${CMAKE_SOURCE_DIR}/sdk/freertos)
35+
set(PICO_SDK_PATH ${CMAKE_CURRENT_SOURCE_DIR}/sdk/pico)
36+
set(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/sdk/freertos)
3537

3638
include(${PICO_SDK_PATH}/external/pico_sdk_import.cmake)
3739
include(${FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
@@ -52,9 +54,9 @@ pico_sdk_init()
5254

5355
# generic HyperSerialPico settings
5456
set(HyperSerialPicoCompanionLibs FreeRTOS-Kernel FreeRTOS-Kernel-Heap1 pico_stdlib pico_multicore hardware_pio hardware_dma hardware_spi)
55-
set(HyperSerialPicoCompanionIncludes ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sdk/config)
56-
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/generated)
57-
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/firmware)
57+
set(HyperSerialPicoCompanionIncludes ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/sdk/config)
58+
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/generated)
59+
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/firmware)
5860

5961
if(NOT CMAKE_HOST_WIN32)
6062
string(ASCII 27 EscChar)
@@ -92,14 +94,23 @@ message( STATUS "---------------------------")
9294
message( STATUS "Neopixel Data GPIO: ${GreenColor}${OUTPUT_DATA_PIN}${ColorReset}")
9395
message( STATUS "SPI Data GPIO: ${GreenColor}${OUTPUT_SPI_DATA_PIN}${ColorReset}")
9496
message( STATUS "SPI Clock GPIO: ${GreenColor}${OUTPUT_SPI_CLOCK_PIN}${ColorReset}")
97+
98+
if (OUTPUT_SPI_CHIP_SELECT)
99+
message( STATUS "SPI Select GPIO: ${GreenColor}${OUTPUT_SPI_CHIP_SELECT}${ColorReset}")
100+
endif()
101+
95102
message( STATUS "SPI Interface: ${GreenColor}${OUTPUT_SPI_INTERFACE}${ColorReset}")
96103
message( STATUS "Boot workaround: ${GreenColor}${BOOT_WORKAROUND}${ColorReset}")
97104
message( STATUS "---------------------------")
98105

99106
add_compile_options(-ftrack-macro-expansion=0 -fno-diagnostics-show-caret -fdiagnostics-color=auto)
100107

101108
macro(HyperSerialPicoTarget HyperSerialPicoTargetName)
102-
add_executable(${HyperSerialPicoTargetName} ${CMAKE_SOURCE_DIR}/source/main.cpp)
109+
if (PICO_PROGRAM_MAIN_ENTRY)
110+
add_executable(${HyperSerialPicoTargetName} ${PICO_PROGRAM_MAIN_ENTRY})
111+
else()
112+
add_executable(${HyperSerialPicoTargetName} ${CMAKE_CURRENT_SOURCE_DIR}/source/main.cpp)
113+
endif()
103114
if (BOOT_WORKAROUND)
104115
target_compile_definitions(${HyperSerialPicoTargetName} PUBLIC -DBOOT_WORKAROUND -DPICO_XOSC_STARTUP_DELAY_MULTIPLIER=64)
105116
endif()
@@ -108,15 +119,17 @@ macro(HyperSerialPicoTarget HyperSerialPicoTargetName)
108119
pico_add_extra_outputs(${HyperSerialPicoTargetName})
109120
pico_enable_stdio_usb(${HyperSerialPicoTargetName} 1)
110121
pico_enable_stdio_uart(${HyperSerialPicoTargetName} 0)
111-
pico_generate_pio_header(${HyperSerialPicoTargetName} ${CMAKE_SOURCE_DIR}/pio/neopixel.pio OUTPUT_DIR ${CMAKE_SOURCE_DIR}/generated)
112-
pico_generate_pio_header(${HyperSerialPicoTargetName} ${CMAKE_SOURCE_DIR}/pio/neopixel_ws2812b.pio OUTPUT_DIR ${CMAKE_SOURCE_DIR}/generated)
113-
add_custom_command(TARGET ${HyperSerialPicoTargetName} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${HyperSerialPicoTargetName}.uf2 ${CMAKE_SOURCE_DIR}/firmware)
122+
pico_generate_pio_header(${HyperSerialPicoTargetName} ${CMAKE_CURRENT_SOURCE_DIR}/pio/neopixel.pio OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/generated)
123+
pico_generate_pio_header(${HyperSerialPicoTargetName} ${CMAKE_CURRENT_SOURCE_DIR}/pio/neopixel_ws2812b.pio OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/generated)
124+
add_custom_command(TARGET ${HyperSerialPicoTargetName} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${HyperSerialPicoTargetName}.uf2 ${CMAKE_CURRENT_SOURCE_DIR}/firmware)
114125
endmacro()
115126

116127
# targets for different LED strips
117128
IF(NOT SECOND_SEGMENT_INDEX)
118-
HyperSerialPicoTarget("${CMAKE_PROJECT_NAME}_Spi")
119-
target_compile_definitions("${CMAKE_PROJECT_NAME}_Spi" PRIVATE -DSPILED_APA102 -DSPI_INTERFACE=${OUTPUT_SPI_INTERFACE} -DDATA_PIN=${OUTPUT_SPI_DATA_PIN} -DCLOCK_PIN=${OUTPUT_SPI_CLOCK_PIN})
129+
IF(NOT DISABLE_SPI_LEDS)
130+
HyperSerialPicoTarget("${CMAKE_PROJECT_NAME}_Spi")
131+
target_compile_definitions("${CMAKE_PROJECT_NAME}_Spi" PRIVATE -DSPILED_APA102 -DSPI_INTERFACE=${OUTPUT_SPI_INTERFACE} -DDATA_PIN=${OUTPUT_SPI_DATA_PIN} -DCLOCK_PIN=${OUTPUT_SPI_CLOCK_PIN})
132+
endif()
120133
HyperSerialPicoTarget("${CMAKE_PROJECT_NAME}_sk6812Cold")
121134
target_compile_definitions("${CMAKE_PROJECT_NAME}_sk6812Cold" PRIVATE -DNEOPIXEL_RGBW -DCOLD_WHITE -DDATA_PIN=${OUTPUT_DATA_PIN})
122135
HyperSerialPicoTarget("${CMAKE_PROJECT_NAME}_sk6812Neutral")

include/framestate.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class
6767
uint16_t fletcher2 = 0;
6868
uint16_t fletcherExt = 0;
6969
uint8_t position = 0;
70+
bool regroup = false;
7071

7172
public:
7273
ColorDefinition color;
@@ -212,6 +213,16 @@ class
212213
fletcherExt = (fletcherExt + (input ^ (position++))) % 255;
213214
}
214215

216+
void setRegroup(bool newValue)
217+
{
218+
regroup = newValue;
219+
}
220+
221+
bool getRegroup()
222+
{
223+
return regroup;
224+
}
225+
215226
/**
216227
* @brief Check if the calibration data was updated and calculate new one
217228
*

include/main.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ void processData()
140140

141141
if (input == 0x15)
142142
printf(HELLO_MESSAGE);
143+
144+
frameState.setRegroup(true);
145+
143146
delay(10);
144147

145148
currentTime = millis();

0 commit comments

Comments
 (0)