/** * Description of the coding style for the source files. * * @file codingStyle * @ingroup codingStyle * @author name * @copyright 2020 name * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef XYZ_H #define XYZ_H #ifdef __cplusplus extern "C" { #endif /** * @defgroup codingStyle Description of coding style * @ingroup parentGroup * @{ * * Contents of this file should be the base for .h source file, except function * body at the end. * * ###Style * - Style is based on Linux style * - Indent size is 4. * - Spaces are used, not tabs. * - More datails are defined in .clang-format file * - Some (old) code is still not corectly formatted. (To not break git history.) * * ###Doxygen * Documentation is generated by doxygen. * Doxygen comment starts with /**. /**< is used after member. * Documentation is usually in header. * Doxygen settings: * - JAVADOC_AUTOBRIEF = YES. * - See doxyfile for other settings. * * Doxygen specifics: If description of the structure member is one sentence * only, don't use period after the sentence. * * ###Misra C * Code shall follow MISRA-C:2012 standard. */ /** * Brief description of the object ends at this dot. Details follow * here. */ typedef struct { int8_t member1; /**< Short description of the member 1 */ uint16_t member2; /**< Note the '/**<' sequence after the member 2 */ /** Long description of the variable stringMember. More description. */ char_t stringMember[5]; } object1_t; /** * Function example 1. * * This is global function. Local functions (and variables) used inside one file * are declared as static and not documented by Doxygen. * * @param obj Pointer to object. Function operates on this object (not on global * variables). * @param argument_2 Description of the argument. * @param argument_2 Description of the argument. * @param argument_4 Description of the argument. * * @return Some value. */ int32_t foo1(object1_t *obj, int32_t argument_2, uint16_t argument_3, float32_t argument_4) { /* Comment */ /* Multiline * comment. */ if (xy == yz) { /* Comment. '//' comments are not allowed */ a = b; } else { a = c; } switch (zx) { case 1: a = b; break; } } /** @} */ #ifdef __cplusplus } #endif /*__cplusplus */ #endif /* XYZ_H */