#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

#define configCPU_CLOCK_HZ                       ( 150000000UL )
#define configTICK_RATE_HZ                       ( 1000U )
#define configMTIME_BASE_ADDRESS                 ( 0xC0000100UL )
#define configMTIMECMP_BASE_ADDRESS              ( 0xC0000108UL )

#define configUSE_PREEMPTION                     1
#define configUSE_TIME_SLICING                   1
#define configUSE_PORT_OPTIMISED_TASK_SELECTION  0
#define configUSE_IDLE_HOOK                      0
#define configUSE_PASSIVE_IDLE_HOOK              0
#define configUSE_TICK_HOOK                      0
#define configMAX_PRIORITIES                     4
#define configMINIMAL_STACK_SIZE                 128
#define configMAX_TASK_NAME_LEN                  12
#define configTICK_TYPE_WIDTH_IN_BITS            TICK_TYPE_WIDTH_32_BITS
#define configIDLE_SHOULD_YIELD                  1

#define configNUMBER_OF_CORES                    1
#define configTICK_CORE                          0
#define configUSE_CORE_AFFINITY                  0
#define configRUN_MULTIPLE_PRIORITIES            0
#define configSUPPORT_PICO_SYNC_INTEROP          0

#define configSUPPORT_DYNAMIC_ALLOCATION         1
#define configSUPPORT_STATIC_ALLOCATION          0
#define configTOTAL_HEAP_SIZE                    ( 4096U )
#define configAPPLICATION_ALLOCATED_HEAP         1
#define configUSE_MALLOC_FAILED_HOOK             1
#define configHEAP_CLEAR_MEMORY_ON_FREE          0
#define configENABLE_HEAP_PROTECTOR              0

#define configUSE_TIMERS                         0
#define configUSE_MUTEXES                        0
#define configUSE_RECURSIVE_MUTEXES              0
#define configUSE_COUNTING_SEMAPHORES            0
#define configUSE_TASK_NOTIFICATIONS             1
#define configUSE_TRACE_FACILITY                 1
#define configUSE_STATS_FORMATTING_FUNCTIONS     0
#define configGENERATE_RUN_TIME_STATS            0
#define configUSE_CO_ROUTINES                    0
#define configUSE_NEWLIB_REENTRANT               0
#define configUSE_POSIX_ERRNO                    0
#define configCHECK_FOR_STACK_OVERFLOW           0

#define INCLUDE_vTaskDelay                       0
#define INCLUDE_vTaskDelayUntil                  0
#define INCLUDE_vTaskDelete                      0
#define INCLUDE_vTaskSuspend                     0
#define INCLUDE_xTaskGetSchedulerState           0

#define configENABLE_FPU                         0
#define configENABLE_VPU                         0
#if !defined(PICO_RP2350)
#define configISR_STACK_SIZE_WORDS               128
#endif

#ifndef __ASSEMBLER__
void heap4_lab_assert(const char *file, int line);
#define configASSERT(condition) \
    do { if (!(condition)) heap4_lab_assert(__FILE__, __LINE__); } while (0)
#else
#define configASSERT(condition)
#endif

#endif
