cmake_minimum_required(VERSION 3.16)
project(f1syh_tx1_c1 C)

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)

option(BUILD_PICO "Build the Raspberry Pi Pico firmware" OFF)

add_library(c1_logic
    src/control_logic.c
    src/band_decode.c
)
target_include_directories(c1_logic PUBLIC include)

add_executable(c1_host_sim src/main_host.c)
target_link_libraries(c1_host_sim PRIVATE c1_logic)

add_executable(c1_unit_tests tests/test_control_logic.c)
target_link_libraries(c1_unit_tests PRIVATE c1_logic)

enable_testing()
add_test(NAME c1_unit_tests COMMAND c1_unit_tests)

if(BUILD_PICO)
    if(NOT DEFINED ENV{PICO_SDK_PATH})
        message(FATAL_ERROR "PICO_SDK_PATH is required for BUILD_PICO=ON")
    endif()
    include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
    pico_sdk_init()

    add_executable(f1syh_tx1_c1
        src/main_pico.c
        src/control_logic.c
        src/band_decode.c
    )
    target_include_directories(f1syh_tx1_c1 PRIVATE include)
    target_link_libraries(f1syh_tx1_c1
        pico_stdlib
        hardware_adc
        hardware_i2c
        hardware_spi
        hardware_watchdog
    )
    pico_enable_stdio_usb(f1syh_tx1_c1 1)
    pico_enable_stdio_uart(f1syh_tx1_c1 0)
    pico_add_extra_outputs(f1syh_tx1_c1)
endif()
