Skip to content

Commit

Permalink
Merge pull request #24 from kaizoku-oh/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
kaizoku-oh authored Oct 30, 2021
2 parents dddfe0c + 93253a6 commit e6bff0e
Show file tree
Hide file tree
Showing 28 changed files with 827 additions and 36 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,17 @@ jobs:
python -m pip install --upgrade pip
pip install platformio
# Build the firmware
# Build the arduino example firmware
- name: Build Firmware
run: |
cd examples/arduino
pio run
# Check the firmware
- name: Check Firmware
# Build the stm32 example firmware
- name: Build Firmware
run: |
cd examples/arduino
pio check
cd examples/stm32
pio run
# Generate doxygen documentation
- name: Generate documentation
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ Being hardware agnostic, RTCOS can work on any hardware platform that can provid

- [x] Add broadcast message function

- [x] Add STM32 example

- [ ] Add more comments explaining code

- [ ] Add wiki documentation
Expand Down
16 changes: 12 additions & 4 deletions docs/rtcos_doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = RTCOS
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 1.2.3
PROJECT_NUMBER = 1.3.0

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down Expand Up @@ -889,9 +889,17 @@ RECURSIVE = YES
# run.

EXCLUDE = examples/arduino/include/RTCOSConfig.h \
examples/arduino/src/main.cpp \
examples/linux/RTCOSConfig.h \
examples/linux/main.c
examples/arduino/src/main.cpp \
examples/stm32/include/RTCOSConfig.h \
examples/stm32/include/button.h \
examples/stm32/include/led.h \
examples/stm32/include/printf.h \
examples/stm32/src/main.c \
examples/stm32/src/button.c \
examples/stm32/src/led.c \
examples/stm32/src/printf.c \
examples/x86/RTCOSConfig.h \
examples/x86/main.c

# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
Expand Down
5 changes: 1 addition & 4 deletions examples/arduino/.gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
.vscode
2 changes: 1 addition & 1 deletion examples/arduino/include/RTCOSConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* @file : RTCOSConfig.h
* @author : Bayrem GHARSELLAOUI
* @version : 1.2.3
* @version : 1.3.0
* @date : April 2021
* @brief : RTCOS user configuration example used to overrite os default configuration
*
Expand Down
2 changes: 1 addition & 1 deletion examples/arduino/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ monitor_speed = 9600
build_flags = -I include
lib_deps =
paulstoffregen/TimerOne@^1.1
kaizoku-oh/RTCOS@^1.2.3
kaizoku-oh/RTCOS@^1.3.0
13 changes: 8 additions & 5 deletions examples/arduino/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* @file : main.cpp
* @author : Bayrem GHARSELLAOUI
* @version : 1.2.3
* @version : 1.3.0
* @date : April 2021
* @brief : Arduino example sketch
*
Expand Down Expand Up @@ -43,6 +43,9 @@ static void _on_os_timer_expired(void const *);
/*-----------------------------------------------------------------------------------------------*/
static _u08 u08LedState;

/*-----------------------------------------------------------------------------------------------*/
/* Exported functions */
/*-----------------------------------------------------------------------------------------------*/
/** ***********************************************************************************************
* @brief Runs once to setup hardware and os
* @return Returns nothing
Expand Down Expand Up @@ -134,15 +137,15 @@ static _u32 _task_one_handler(_u32 u32EventFlags, _u08 u08MsgCount, void const *
}
else if(u32EventFlags & EVENT_COMMON)
{
Serial.println("Task one received a boadcasted event: EVENT_COMMON");
Serial.println("Task one received a broadcasted event: EVENT_COMMON");
/* Return the events that have NOT been handled */
u32RetVal = u32EventFlags & ~EVENT_COMMON;
}
if(u08MsgCount)
{
if(RTCOS_ERR_NONE == rtcos_get_message((void **)&pcMessage))
{
Serial.print("Task one received a boadcasted message: ");
Serial.print("Task one received a broadcasted message: ");
Serial.println(pcMessage);
}
}
Expand Down Expand Up @@ -182,15 +185,15 @@ static _u32 _task_two_handler(_u32 u32EventFlags, _u08 u08MsgCount, void const *
}
else if(u32EventFlags & EVENT_COMMON)
{
Serial.println("Task two received a boadcasted event: EVENT_COMMON");
Serial.println("Task two received a broadcasted event: EVENT_COMMON");
/* Return the events that have NOT been handled */
u32RetVal = u32EventFlags & ~EVENT_COMMON;
}
if(u08MsgCount)
{
if(RTCOS_ERR_NONE == rtcos_get_message((void **)&pcMessage))
{
Serial.print("Task two received a boadcasted message: ");
Serial.print("Task two received a broadcasted message: ");
Serial.println(pcMessage);
}
}
Expand Down
2 changes: 2 additions & 0 deletions examples/stm32/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.pio
.vscode
5 changes: 5 additions & 0 deletions examples/stm32/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Running the STM32 example

1. Install [PlatformIO Extension for vscode](https://platformio.org/install/ide?install=vscode)
2. Open the folder rtcos/examples/stm32 with vscode
3. Build, upload and monitor
39 changes: 39 additions & 0 deletions examples/stm32/include/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

This directory is intended for project header files.

A header file is a file containing C declarations and macro definitions
to be shared between several project source files. You request the use of a
header file in your project source file (C, C++, etc) located in `src` folder
by including it, with the C preprocessing directive `#include'.

```src/main.c

#include "header.h"

int main (void)
{
...
}
```

Including a header file produces the same results as copying the header file
into each source file that needs it. Such copying would be time-consuming
and error-prone. With a header file, the related declarations appear
in only one place. If they need to be changed, they can be changed in one
place, and programs that include the header file will automatically use the
new version when next recompiled. The header file eliminates the labor of
finding and changing all the copies as well as the risk that a failure to
find one copy will result in inconsistencies within a program.

In C, the usual convention is to give header files names that end with `.h'.
It is most portable to use only letters, digits, dashes, and underscores in
header file names, and at most one dot.

Read more about using header files in official GCC documentation:

* Include Syntax
* Include Operation
* Once-Only Headers
* Computed Includes

https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
34 changes: 34 additions & 0 deletions examples/stm32/include/RTCOSConfig.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
**************************************************************************************************
*
* @file : RTCOSConfig.h
* @author : Bayrem GHARSELLAOUI
* @date : October 2021
* @brief : RTCOS user configuration example used to overrite os default configuration
*
**************************************************************************************************
*/

#ifndef RTCOS_CONFIG_H
#define RTCOS_CONFIG_H

/*-----------------------------------------------------------------------------------------------*/
/* Includes */
/*-----------------------------------------------------------------------------------------------*/
#include "stm32f1xx_hal.h"

/*-----------------------------------------------------------------------------------------------*/
#define RTCOS_ENABLE_TIMERS

#define RTCOS_MAX_TASKS_COUNT 2
#define RTCOS_MAX_FUTURE_EVENTS_COUNT 2
#define RTCOS_MAX_MESSAGES_COUNT 2
#define RTCOS_MAX_TIMERS_COUNT 2

/*-----------------------------------------------------------------------------------------------*/
/* Macros */
/*-----------------------------------------------------------------------------------------------*/
#define RTCOS_ENTER_CRITICAL_SECTION() __disable_irq();
#define RTCOS_EXIT_CRITICAL_SECTION() __enable_irq();

#endif /* RTCOS_CONFIG_H */
32 changes: 32 additions & 0 deletions examples/stm32/include/button.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
**************************************************************************************************
*
* @file : button.h
* @author : Bayrem GHARSELLAOUI
* @date : October 2021
* @brief : STM32 bluepill button BSP header file
*
**************************************************************************************************
*/

#ifndef __BUTTON_H__
#define __BUTTON_H__

/*-----------------------------------------------------------------------------------------------*/
/* Includes */
/*-----------------------------------------------------------------------------------------------*/
#include <stdbool.h>

/*-----------------------------------------------------------------------------------------------*/
/* Types */
/*-----------------------------------------------------------------------------------------------*/
typedef void (*button_callback_t)(void);

/*-----------------------------------------------------------------------------------------------*/
/* Functions */
/*-----------------------------------------------------------------------------------------------*/
void button_init(void);
void button_register_callback(button_callback_t);
bool button_is_pressed(void);

#endif /* __BUTTON_H__ */
23 changes: 23 additions & 0 deletions examples/stm32/include/led.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
**************************************************************************************************
*
* @file : led.h
* @author : Bayrem GHARSELLAOUI
* @date : October 2021
* @brief : STM32 bluepill button BSP header file
*
**************************************************************************************************
*/

#ifndef __LED_H__
#define __LED_H__

/*-----------------------------------------------------------------------------------------------*/
/* Functions */
/*-----------------------------------------------------------------------------------------------*/
void led_init(void);
void led_on(void);
void led_off(void);
void led_toggle(void);

#endif /* __LED_H__ */
20 changes: 20 additions & 0 deletions examples/stm32/include/printf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
**************************************************************************************************
*
* @file : printf.h
* @author : Bayrem GHARSELLAOUI
* @date : October 2021
* @brief : Redirect printf to UART header file
*
**************************************************************************************************
*/

#ifndef __PRINTF_H__
#define __PRINTF_H__

/*-----------------------------------------------------------------------------------------------*/
/* Functions */
/*-----------------------------------------------------------------------------------------------*/
void printf_init(void);

#endif /* __PRINTF_H__ */
46 changes: 46 additions & 0 deletions examples/stm32/lib/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.

The source code of each library should be placed in a an own separate directory
("lib/your_library_name/[here are source files]").

For example, see a structure of the following two libraries `Foo` and `Bar`:

|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c

and a contents of `src/main.c`:
```
#include <Foo.h>
#include <Bar.h>

int main (void)
{
...
}

```

PlatformIO Library Dependency Finder will find automatically dependent
libraries scanning project source files.

More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html
19 changes: 19 additions & 0 deletions examples/stm32/platformio.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = stm32cube
debug_tool = stlink
upload_protocol = stlink
monitor_speed = 115200
monitor_flags = --raw
lib_deps = kaizoku-oh/RTCOS@^1.3.0
Loading

0 comments on commit e6bff0e

Please sign in to comment.