Added the minimal example (#823)
* re-adding main.c to the minimal example
* Uncrustify: triggered by comment.
* Update minimal_freertos_example/main.c
Co-authored-by: Soren Ptak <ptaksoren@gmail.com>
* Add in the deleted cmake list
* Added a single newline at the end of the cmake
* Cleanup the CMakelists
* updates the main & Cmake
* Formatting
---------
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Soren Ptak <ptaksoren@gmail.com>
diff --git a/cmake_example/CMakeLists.txt b/cmake_example/CMakeLists.txt
new file mode 100644
index 0000000..7230120
--- /dev/null
+++ b/cmake_example/CMakeLists.txt
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 3.15)
+
+project(example)
+
+set(FREERTOS_KERNEL_PATH "../")
+
+# Add the freertos_config for FreeRTOS-Kernel
+add_library(freertos_config INTERFACE)
+
+target_include_directories(freertos_config
+ INTERFACE
+ ../sample_configuration
+)
+
+# Select the heap port. values between 1-4 will pick a heap.
+# set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
+
+# Select the native compile PORT
+set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
+
+# Adding the FreeRTOS-Kernel subdirectory
+add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel)
+
+add_executable(${PROJECT_NAME}
+ main.c
+)
+
+target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config)
diff --git a/cmake_example/main.c b/cmake_example/main.c
new file mode 100644
index 0000000..f0eaf1c
--- /dev/null
+++ b/cmake_example/main.c
@@ -0,0 +1,105 @@
+/*
+ * FreeRTOS Kernel <DEVELOPMENT BRANCH>
+ * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+/*
+ * This is a simple main that will start the FreeRTOS-Kernel and run a periodic task
+ * that only delays if compiled with the template port, this project will do nothing.
+ * For more information on getting started please look here:
+ * https://freertos.org/FreeRTOS-quick-start-guide.html
+ */
+
+#include <FreeRTOS.h>
+#include <task.h>
+#include <queue.h>
+#include <timers.h>
+#include <semphr.h>
+
+#include <stdio.h>
+
+static StaticTask_t exampleTaskTCB;
+static StackType_t exampleTaskStack[ configMINIMAL_STACK_SIZE ];
+
+static StaticTask_t xTimerTaskTCB;
+static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
+
+static StaticTask_t xIdleTaskTCB;
+static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
+
+void exampleTask( void * parameters )
+{
+ for( ; ; )
+ {
+ /* Example Task Code */
+ vTaskDelay( 100 ); /* delay 100 ticks */
+ }
+}
+
+int main( void )
+{
+ printf( "Example FreeRTOS Project\n" );
+
+ xTaskCreateStatic( exampleTask,
+ "example",
+ configMINIMAL_STACK_SIZE,
+ NULL,
+ configMAX_PRIORITIES - 1,
+ exampleTaskStack,
+ &exampleTaskTCB );
+
+ vTaskStartScheduler();
+
+ /* should never get here. */
+ for( ; ; )
+ {
+ }
+
+ return 0;
+}
+
+void vApplicationStackOverflowHook( TaskHandle_t xTask,
+ char * pcTaskName )
+{
+}
+
+void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer,
+ StackType_t ** ppxTimerTaskStackBuffer,
+ uint32_t * pulTimerTaskStackSize )
+{
+ *ppxTimerTaskTCBBuffer = &xTimerTaskTCB;
+ *ppxTimerTaskStackBuffer = uxTimerTaskStack;
+ *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
+}
+
+void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
+ StackType_t ** ppxIdleTaskStackBuffer,
+ uint32_t * pulIdleTaskStackSize )
+{
+ *ppxIdleTaskTCBBuffer = &xIdleTaskTCB;
+ *ppxIdleTaskStackBuffer = uxIdleTaskStack;
+ *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
+}