Coding style defined more precisely. Issue #117.
This commit is contained in:
parent
ce2ac80a97
commit
57f264c2c4
|
@ -0,0 +1,15 @@
|
|||
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
|
||||
BasedOnStyle: LLVM
|
||||
|
||||
# indent 4 spaces
|
||||
IndentWidth: 4
|
||||
|
||||
# break before function
|
||||
BreakBeforeBraces: Linux
|
||||
|
||||
# arguments and parameters in same line or one line for each
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
|
||||
# keep up to two empty lines
|
||||
MaxEmptyLinesToKeep: 2
|
16
README.md
16
README.md
|
@ -48,24 +48,26 @@ in a project with specific hardware and specific application.
|
|||
|
||||
|
||||
Documentation, support and contributions
|
||||
-------------------------
|
||||
Code is documented in header files. Running
|
||||
[doxygen](http://www.stack.nl/~dimitri/doxygen/index.html) in project
|
||||
base folder will produce complete html documentation. Just open
|
||||
CANopenNode/doc/html/index.html in browser.
|
||||
----------------------------------------
|
||||
Code is documented in header files. Running [doxygen](http://www.doxygen.nl/)
|
||||
or `make doc` in project base folder will produce complete html documentation.
|
||||
Just open CANopenNode/doc/html/index.html in browser.
|
||||
|
||||
Report issues on https://github.com/CANopenNode/CANopenNode/issues
|
||||
|
||||
Older and still active discussion group is on Sourceforge
|
||||
http://sourceforge.net/p/canopennode/discussion/387151/
|
||||
|
||||
For some implementations of CANopenNode on real hardware see table below.
|
||||
For some implementations of CANopenNode on real hardware see
|
||||
[Device support](#device-support) section.
|
||||
[CANopenSocket](https://github.com/CANopenNode/CANopenSocket) is nice
|
||||
implementation for Linux devices. It includes command line interface for
|
||||
master access of the CANopen network. There is also some Getting started.
|
||||
|
||||
Contributions are welcome. Best way to contribute your code is to fork
|
||||
a project, modify it and then send a pull request.
|
||||
a project, modify it and then send a pull request. Some basic formatting
|
||||
rules should be followed: Linux style with indentation of 4 spaces. There
|
||||
is also a configuration file for `clang-format` tool.
|
||||
|
||||
|
||||
Flowchart of a typical CANopenNode implementation
|
||||
|
|
82
codingStyle
82
codingStyle
|
@ -3,16 +3,28 @@
|
|||
*
|
||||
* @file codingStyle
|
||||
* @ingroup codingStyle
|
||||
* @author Janez Paternoster
|
||||
* @copyright 2015 Janez Paternoster
|
||||
*
|
||||
* License.
|
||||
* @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
|
||||
|
@ -22,20 +34,23 @@
|
|||
* Contents of this file should be the base for .h source file, except function
|
||||
* body at the end.
|
||||
*
|
||||
* ###Indentation
|
||||
* Indent size is 4.
|
||||
* Spaces are used, not tabs.
|
||||
* ###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 <http://doxygen.org>.
|
||||
* 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.
|
||||
* 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.
|
||||
|
@ -47,10 +62,10 @@
|
|||
* here.
|
||||
*/
|
||||
typedef struct {
|
||||
int8_t member1; /**< Short description of the member 1 */
|
||||
uint16_t member2; /**< Note the '/**<' sequence after the member 2 */
|
||||
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];
|
||||
char_t stringMember[5];
|
||||
} object1_t;
|
||||
|
||||
|
||||
|
@ -62,17 +77,16 @@ typedef struct {
|
|||
*
|
||||
* @param obj Pointer to object. Function operates on this object (not on global
|
||||
* variables).
|
||||
* @param arg2 Description of the argument.
|
||||
* @param arg3 Description of the argument.
|
||||
* @param arg4 Description of the argument.
|
||||
* @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 arg2,
|
||||
uint16_t arg3,
|
||||
float32_t arg4)
|
||||
int32_t foo1(object1_t *obj,
|
||||
int32_t argument_2,
|
||||
uint16_t argument_3,
|
||||
float32_t argument_4)
|
||||
{
|
||||
/* Comment */
|
||||
|
||||
|
@ -80,19 +94,23 @@ int32_t foo1(
|
|||
* comment.
|
||||
*/
|
||||
|
||||
if(xy == yz) { /* Comment. '//' comments are not allowed */
|
||||
...
|
||||
}
|
||||
else {
|
||||
...
|
||||
if (xy == yz) { /* Comment. '//' comments are not allowed */
|
||||
a = b;
|
||||
} else {
|
||||
a = c;
|
||||
}
|
||||
|
||||
switch(zx) {
|
||||
case 1: {
|
||||
...
|
||||
}
|
||||
switch (zx) {
|
||||
case 1:
|
||||
a = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** @} */
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /*__cplusplus */
|
||||
|
||||
#endif /* XYZ_H */
|
||||
|
|
Loading…
Reference in New Issue