# 2023 — Webservices and Applications
## Table of Contents
 - [Table of Contents](#table-of-contents)
 - [Used Libs, compiler and apps](#used-libs-compiler-and-apps)
 - [Tasks](#tasks)
 - [Style Guide](#style-guide)
   - [Editor Configuration](#editor-configuration)
 - [Commit Messages Conventions](#commit-messages-conventions)
 - [Writing File System Data to QSPI Flash](#writing-file-system-data-to-qspi-flash)
 - [Documentation](#documentation)

## 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
Make for each task a separate c and h file. The name of the file is the name of the task.
This way we can keep the code clean.

[tasks_and_taskowners.md](tasks_and_taskowners.md)

## Style Guide
To maintain a consistent and clean codebase, follow the [style guide](docs/style_guide.md). This document provides detailed instructions on naming conventions, code structure, and commenting practices.

Please read the [style_guide.md](docs/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.

## Commit Messages Conventions
The subject line of a commit message should follow the following rules:
- Short and descriptive (max 50 chars)
- In imperative present tense
- Capitalized
- Not end with a period

Example:
```
Implement access right management
```

The body of a commit message may be used to explain the what and why of a commit.

## Writing File System Data to QSPI Flash
Please read the [llfs.md](./docs/llfs.md#enabling-the-external-loader-in-stm32cubeide) document for instructions
on how to enable the external loader in STM32CubeIDE.

## Documentation
Documentation is placed in the [docs](docs) folder.
If your part needs documentation (e.g. how to use tcp cmd interface), add a markdown file in the above-mentioned folder.

This folder contains the following documents:
- [llfs.md](docs/llfs.md): Linked List File System
- [lcd_api.md](docs/lcd_api.md): LCD API
- [logger.md](docs/logger.md): Logging and Debugging Messages
- [mkllfs.md](docs/mkllfs.md): Make Linked List File System
- [style_guide.md](docs/style_guide.md): Style Guide
- [tftp.md](docs/tftp.md): Trivial File Transfer Protocol