109 lines
3.8 KiB
Markdown
109 lines
3.8 KiB
Markdown
# 2023-Webservices_And_Applications
|
|
## Used Libs, compiler and apps
|
|
|
|
- lwip version 2.1.2
|
|
- CubeIDE version 1.12.1
|
|
- STM32CubeMX version 6.8.1
|
|
- Firmware Lib (stm32f7) 1.17.1
|
|
|
|
## Tasks
|
|
Maak per taak een apparte c en h file aan. De naam van de file is de naam van de taak.
|
|
Zo kunnen we de code proper houden.
|
|
|
|
[taken_en_verdeling.md](Taken_en_Verdeling.md)
|
|
|
|
## Style Guide
|
|
To maintain a consistent and clean codebase, follow the [style guide](style_guide.md). This document provides detailed instructions on naming conventions, code structure, and commenting practices.
|
|
|
|
Please read the [style_guide.md](style_guide.md) carefully before making contributions.
|
|
|
|
### Editor Configuration
|
|
|
|
To help you adhere to the style guide, use the provided configuration files for the code formatters in your code editor.
|
|
You can choose from the following options:
|
|
|
|
- `.clang-format`:
|
|
- For [Visual Studio Code](https://code.visualstudio.com/docs/cpp/cpp-ide#_code-formatting) and [CLion](https://www.jetbrains.com/help/clion/clangformat-as-alternative-formatter.html#clion-support) users
|
|
- Or use the [clang-format](https://clang.llvm.org/docs/ClangFormat.html) tool directly
|
|
|
|
- `eclipse_format.xml`:
|
|
- For Eclipse-based editors, including STM32CubeIDE.
|
|
- You can import it within eclipse settings, `Preferences -> LANGUAGE -> Code Style -> Formatter` tab.
|
|
|
|
## Logging and Debugging Messages
|
|
The logging system is designed to make log messages clearer and improve their uniformity across the project.
|
|
It makes it easier to see where a log message comes from and what its verbosity is.
|
|
|
|
To use the logging system, include `log.h` in your source file, and use the following macros to print log messages:
|
|
```c
|
|
LOG_DEBUG(TAG, fmt, ...)
|
|
LOG_INFO(TAG, fmt, ...)
|
|
LOG_WARN(TAG, fmt, ...)
|
|
LOG_ERROR(TAG, fmt, ...)
|
|
```
|
|
The same format specifiers as in `printf` can be used.
|
|
|
|
The `TAG` parameter is a string that identifies the source of the log message.
|
|
It is recommended to use one tag for each source file / module, and to name the tag after the source file / module.
|
|
See the example below.
|
|
|
|
### Global Log Level
|
|
You can control the verbosity of the logging output by setting a global log level in `log.h`.
|
|
This log level filters out messages with a lower priority.
|
|
|
|
### Custom Log Levels
|
|
Additionally, you have the flexibility to override the log level for individual tags (but not lower than the global log level).
|
|
This can be archived by calling the following function:
|
|
```c
|
|
logger_set_level(LOG_TAG, LOG_LEVEL);
|
|
```
|
|
If the log level for a tag is not set, the global log level is used.
|
|
|
|
### Colorful Log Messages
|
|
For improved readability, log messages can be printed in color by configuring `LOGGER_USE_COLOR` to `1` in `log.h`.
|
|
|
|
### Log Output Format
|
|
Each log entry is formatted to include the following information:
|
|
|
|
- Log level (D for Debug, I for Info, W for Warning, E for Error)
|
|
- Timestamp (in milliseconds since boot)
|
|
- Tag
|
|
- The log message
|
|
|
|
For instance, a log entry may look like this:
|
|
|
|
`I (2009) LTDC: This is a log message`
|
|
|
|
### Example
|
|
```c
|
|
#include "log.h"
|
|
|
|
// Don't use a define for the tag, as the pointer to the tag is used
|
|
static const char *TAG = "main";
|
|
|
|
int main(void) {
|
|
// Set log level for tag "main" to LOG_INFO
|
|
logger_set_level(TAG, LOG_INFO);
|
|
|
|
LOG_DEBUG(TAG, "This message will not be printed");
|
|
LOG_INFO(TAG, "This message will be printed");
|
|
LOG_WARN(TAG, "This message will be printed");
|
|
LOG_ERROR(TAG, "This message will be printed");
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
LOG_INFO(TAG, "Iteration %d of %d", i, 3);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
```
|
|
Result:
|
|
```
|
|
I (2009) main: This message will be printed
|
|
W (2026) main: This message will be printed
|
|
E (2033) main: This message will be printed
|
|
I (2040) main: Iteration 0 of 3
|
|
I (2047) main: Iteration 1 of 3
|
|
I (2054) main: Iteration 2 of 3
|
|
```
|