dect
/
libdect
Archived
13
0
Fork 0

doc: fix up doxygen annotations, add some documentation

Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
Patrick McHardy 2010-07-07 01:13:17 +02:00
parent 00c3066645
commit 1c450a1ac5
11 changed files with 1188 additions and 762 deletions

View File

@ -1,4 +1,4 @@
# Doxyfile 1.5.6
# Doxyfile 1.6.2
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@ -54,11 +54,11 @@ CREATE_SUBDIRS = NO
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
# and Ukrainian.
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
OUTPUT_LANGUAGE = English
@ -137,7 +137,7 @@ SHORT_NAMES = NO
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
JAVADOC_AUTOBRIEF = NO
JAVADOC_AUTOBRIEF = YES
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
@ -155,13 +155,6 @@ QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
# If the DETAILS_AT_TOP tag is set to YES then Doxygen
# will output the detailed description near the top, like JavaDoc.
# If set to NO, the detailed description appears after the member
# documentation.
DETAILS_AT_TOP = NO
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
@ -214,6 +207,17 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the files it parses.
# With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this tag.
# The format is ext=language, where ext is a file extension, and language is one of
# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
EXTENSION_MAPPING =
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
@ -268,6 +272,22 @@ SUBGROUPING = YES
TYPEDEF_HIDES_STRUCT = NO
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
# determine which symbols to keep in memory and which to flush to disk.
# When the cache is full, less often used symbols will be written to disk.
# For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penality.
# If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will rougly double the
# memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols
SYMBOL_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@ -366,6 +386,12 @@ HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
# will list include files with double quotes in the documentation
# rather than with sharp brackets.
FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members.
@ -376,7 +402,7 @@ INLINE_INFO = YES
# alphabetically by member name. If set to NO the members will appear in
# declaration order.
SORT_MEMBER_DOCS = YES
SORT_MEMBER_DOCS = NO
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
# brief documentation of file, namespace and class members alphabetically
@ -385,6 +411,10 @@ SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
SORT_MEMBERS_CTORS_1ST = NO
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
# hierarchy of group names into alphabetical order. If set to NO (the default)
# the group names will appear in their defined order.
@ -459,7 +489,8 @@ SHOW_DIRECTORIES = NO
SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
# Namespaces page. This will remove the Namespaces entry from the Quick Index
# Namespaces page.
# This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = YES
@ -474,6 +505,15 @@ SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
# doxygen. The layout file controls the global structure of the generated output files
# in an output format independent way. The create the layout file that represents
# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
# file name after the option, if omitted DoxygenLayout.xml will be used as the name
# of the layout file.
LAYOUT_FILE =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
@ -481,7 +521,7 @@ FILE_VERSION_FILTER =
# The QUIET tag can be used to turn on/off the messages that are generated
# by doxygen. Possible values are YES and NO. If left blank NO is used.
QUIET = NO
QUIET = YES
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
@ -534,7 +574,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT =
INPUT = src include/dect
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@ -557,7 +597,7 @@ FILE_PATTERNS =
# should be searched for input files as well. Possible values are YES and NO.
# If left blank NO is used.
RECURSIVE = YES
RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should
# excluded from the INPUT source files. This way you can easily exclude a
@ -585,7 +625,7 @@ EXCLUDE_PATTERNS = */.git/*
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
EXCLUDE_SYMBOLS =
EXCLUDE_SYMBOLS = EXPORT_SYMBOL
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
@ -618,14 +658,17 @@ IMAGE_PATH =
# by executing (via popen()) the command <filter> <input-file>, where <filter>
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
# input file. Doxygen will then use the output that the filter program writes
# to standard output. If FILTER_PATTERNS is specified, this tag will be
# to standard output.
# If FILTER_PATTERNS is specified, this tag will be
# ignored.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form:
# basis.
# Doxygen will compare the file name with each pattern and apply the
# filter if there is a match.
# The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
@ -670,12 +713,13 @@ REFERENCED_BY_RELATION = NO
# then for each documented function all documented entities
# called/used by that function will be listed.
REFERENCES_RELATION = NO
REFERENCES_RELATION = YES
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
# link to the source code. Otherwise they will link to the documentstion.
# link to the source code.
# Otherwise they will link to the documentation.
REFERENCES_LINK_SOURCE = YES
@ -701,7 +745,7 @@ VERBATIM_HEADERS = YES
# of all compounds will be generated. Enable this if the project
# contains a lot of classes, structs, unions or interfaces.
ALPHABETICAL_INDEX = NO
ALPHABETICAL_INDEX = YES
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
@ -758,18 +802,25 @@ HTML_FOOTER =
HTML_STYLESHEET =
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting
# this to NO can help when comparing the output of multiple runs.
HTML_TIMESTAMP = NO
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
HTML_ALIGN_MEMBERS = YES
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
# of the generated HTML documentation.
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
GENERATE_HTMLHELP = NO
HTML_DYNAMIC_SECTIONS = NO
# If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3
@ -779,6 +830,7 @@ GENERATE_HTMLHELP = NO
# directory and running "make install" will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
# it at startup.
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
GENERATE_DOCSET = NO
@ -796,13 +848,12 @@ DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
# of the generated HTML documentation.
HTML_DYNAMIC_SECTIONS = NO
GENERATE_HTMLHELP = NO
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
# be used to specify the file name of the resulting .chm file. You
@ -841,6 +892,71 @@ BINARY_TOC = NO
TOC_EXPAND = NO
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
# are set, an additional index file will be generated that can be used as input for
# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
# HTML documentation.
GENERATE_QHP = NO
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
# be used to specify the file name of the resulting .qch file.
# The path specified is relative to the HTML output folder.
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# http://doc.trolltech.com/qthelpproject.html#namespace
QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# http://doc.trolltech.com/qthelpproject.html#virtual-folders
QHP_VIRTUAL_FOLDER = doc
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
# For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
# filter section matches.
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
QHP_SECT_FILTER_ATTRS =
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
# be used to specify the location of Qt's qhelpgenerator.
# If non-empty doxygen will try to run qhelpgenerator on the generated
# .qhp file.
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
# plugin. To install this plugin and make it available under the help contents
# menu in Eclipse, the contents of the directory containing the HTML and XML
# files needs to be copied into the plugins directory of eclipse. The name of
# the directory within the plugins directory should be the same as
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears.
GENERATE_ECLIPSEHELP = NO
# A unique identifier for the eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have
# this name.
ECLIPSE_DOC_ID = org.doxygen.Project
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
# top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it.
@ -854,21 +970,19 @@ ENUM_VALUES_PER_LINE = 1
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
# If the tag value is set to FRAME, a side panel will be generated
# If the tag value is set to YES, a side panel will be generated
# containing a tree-like index structure (just like the one that
# is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
# probably better off using the HTML help feature. Other possible values
# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
# and Class Hiererachy pages using a tree view instead of an ordered list;
# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
# disables this behavior completely. For backwards compatibility with previous
# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
# respectively.
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
# Windows users are probably better off using the HTML help feature.
GENERATE_TREEVIEW = YES
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
# and Class Hierarchy pages using a tree view instead of an ordered list.
USE_INLINE_TREES = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
# is shown.
@ -883,6 +997,19 @@ TREEVIEW_WIDTH = 250
FORMULA_FONTSIZE = 10
# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should
# typically be disabled. For large projects the javascript based search engine
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
SEARCHENGINE = NO
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a PHP enabled web server instead of at the web client using Javascript. Doxygen will generate the search PHP script and index
# file to put on the web server. The advantage of the server based approach is that it scales better to large projects and allows full text search. The disadvances is that it is more difficult to setup
# and does not have live searching capabilities.
SERVER_BASED_SEARCH = NO
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
@ -890,7 +1017,7 @@ FORMULA_FONTSIZE = 10
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
GENERATE_LATEX = YES
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
@ -900,6 +1027,9 @@ LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked. If left blank `latex' will be used as the default command name.
# Note that when enabling USE_PDFLATEX this option is only used for
# generating bitmaps for formulas in the HTML output, but not in the
# Makefile that is written to the output directory.
LATEX_CMD_NAME = latex
@ -959,6 +1089,10 @@ LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
LATEX_SOURCE_CODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
@ -1095,8 +1229,10 @@ GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
# nicely formatted so it can be parsed by a human reader. This is useful
# if you want to understand what is going on. On the other hand, if this
# nicely formatted so it can be parsed by a human reader.
# This is useful
# if you want to understand what is going on.
# On the other hand, if this
# tag is set to NO the size of the Perl module output will be much smaller
# and Perl will parse it just the same.
@ -1141,7 +1277,7 @@ SEARCH_INCLUDES = YES
# contain include files that are not input files but should be processed by
# the preprocessor.
INCLUDE_PATH =
INCLUDE_PATH = include
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
@ -1183,8 +1319,10 @@ SKIP_FUNCTION_MACROS = YES
# Optionally an initial location of the external documentation
# can be added for each tagfile. The format of a tag file without
# this location is as follows:
#
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
#
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths or
# URLs. If a location is present for each tag, the installdox tool
@ -1244,7 +1382,7 @@ MSCGEN_PATH =
# inheritance and usage relations if the target is undocumented
# or is not a class.
HIDE_UNDOC_RELATIONS = YES
HIDE_UNDOC_RELATIONS = NO
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization
@ -1264,6 +1402,11 @@ HAVE_DOT = YES
DOT_FONTNAME = FreeSans
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
# The default size is 10pt.
DOT_FONTSIZE = 10
# By default doxygen will tell dot to use the output directory to look for the
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
# different font using DOT_FONTNAME you can set the path where dot
@ -1329,7 +1472,7 @@ CALL_GRAPH = YES
# the time of a run. So in most cases it will be better to enable caller
# graphs for selected functions only using the \callergraph command.
CALLER_GRAPH = YES
CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will graphical hierarchy of all classes instead of a textual one.
@ -1381,10 +1524,10 @@ DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is enabled by default, which results in a transparent
# background. Warning: Depending on the platform used, enabling this option
# may lead to badly anti-aliased labels on the edges of a graph (i.e. they
# become hard to read).
# background. This is disabled by default, because dot on Windows does not
# seem to support this out of the box. Warning: Depending on the platform used,
# enabling this option may lead to badly anti-aliased labels on the edges of
# a graph (i.e. they become hard to read).
DOT_TRANSPARENT = YES
@ -1406,12 +1549,3 @@ GENERATE_LEGEND = YES
# the various graphs.
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
# The SEARCHENGINE tag specifies whether or not a search engine should be
# used. If set to NO the values of all tags below this one will be ignored.
SEARCHENGINE = NO

View File

@ -1,6 +1,11 @@
#ifndef _LIBDECT_DECT_AUTH_H
#define _LIBDECT_DECT_AUTH_H
/**
* @addtogroup security
* @{
*/
#define DECT_AUTH_KEY_LEN 16
#define DECT_AUTH_RAND_LEN 8
#define DECT_AUTH_RES_LEN 4
@ -36,4 +41,6 @@ extern void dect_auth_a12(const uint8_t *ks, uint64_t rand_f, uint8_t *dck,
extern void dect_auth_a21(const uint8_t *k, uint64_t rs, uint8_t *ks);
extern void dect_auth_a22(const uint8_t *ks, uint64_t rand_p, uint32_t *res2);
/** @} */
#endif /* _LIBDECT_DECT_AUTH_H */

View File

@ -7,6 +7,11 @@
#ifndef _LIBDECT_DECT_CC_H
#define _LIBDECT_DECT_CC_H
/**
* @addtogroup cc
* @{
*/
#include <dect/ie.h>
/**
@ -271,4 +276,6 @@ extern int dect_mncc_iwu_info_req(struct dect_handle *dh, struct dect_call *call
extern int dect_dl_u_data_req(const struct dect_handle *dh, struct dect_call *call,
struct dect_msg_buf *mb);
/** @} */
#endif /* _LIBDECT_DECT_CC_H */

View File

@ -7,6 +7,11 @@
#ifndef _LIBDECT_DECT_IE_H
#define _LIBDECT_DECT_IE_H
/**
* @addtogroup ie
* @{
*/
#include <string.h>
#include <dect/utils.h>
@ -1172,4 +1177,6 @@ struct dect_ie_call_information {
struct dect_ie_common common;
};
/* @} */
#endif /* _LIBDECT_DECT_IE_H */

View File

@ -7,8 +7,17 @@
#ifndef _LIBDECT_DECT_MM_H
#define _LIBDECT_DECT_MM_H
/**
* @addtogroup mm
* @{
**/
#include <dect/ie.h>
/**
* @addtogroup mm_access_rights
* @{
*/
struct dect_mm_access_rights_param {
struct dect_ie_collection common;
struct dect_ie_portable_identity *portable_identity;
@ -27,7 +36,12 @@ struct dect_mm_access_rights_param {
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
struct dect_ie_codec_list *codec_list;
};
/** @} */
/**
* @addtogroup mm_access_rights_terminate
* @{
*/
struct dect_mm_access_rights_terminate_param {
struct dect_ie_collection common;
struct dect_ie_portable_identity *portable_identity;
@ -37,7 +51,12 @@ struct dect_mm_access_rights_terminate_param {
struct dect_ie_iwu_to_iwu *iwu_to_iwu;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_key_allocation
* @{
*/
struct dect_mm_key_allocate_param {
struct dect_ie_collection common;
struct dect_ie_allocation_type *allocation_type;
@ -45,7 +64,12 @@ struct dect_mm_key_allocate_param {
struct dect_ie_auth_value *rs;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_auth
* @{
*/
struct dect_mm_authenticate_param {
struct dect_ie_collection common;
struct dect_ie_auth_type *auth_type;
@ -60,7 +84,12 @@ struct dect_mm_authenticate_param {
struct dect_ie_list iwu_to_iwu;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_cipher
* @{
*/
struct dect_mm_cipher_param {
struct dect_ie_collection common;
struct dect_ie_cipher_info *cipher_info;
@ -70,7 +99,12 @@ struct dect_mm_cipher_param {
struct dect_ie_iwu_to_iwu *iwu_to_iwu;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_location_registration
* @{
*/
struct dect_mm_locate_param {
struct dect_ie_collection common;
struct dect_ie_portable_identity *portable_identity;
@ -95,7 +129,12 @@ struct dect_mm_detach_param {
struct dect_ie_iwu_to_iwu *iwu_to_iwu;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_identification
* @{
*/
struct dect_mm_identity_param {
struct dect_ie_collection common;
struct dect_ie_list identity_type;
@ -107,7 +146,12 @@ struct dect_mm_identity_param {
struct dect_ie_model_identifier *model_identifier;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_temporary_identity_assignment
* @{
*/
struct dect_mm_identity_assign_param {
struct dect_ie_collection common;
struct dect_ie_portable_identity *portable_identity;
@ -119,7 +163,12 @@ struct dect_mm_identity_assign_param {
struct dect_ie_iwu_to_iwu *iwu_to_iwu;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_parameter_retrieval
* @{
*/
struct dect_mm_info_param {
struct dect_ie_collection common;
struct dect_ie_info_type *info_type;
@ -134,13 +183,19 @@ struct dect_mm_info_param {
struct dect_ie_iwu_to_iwu *iwu_to_iwu;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
/**
* @addtogroup mm_external_protocol_information
* @{
*/
struct dect_mm_iwu_param {
struct dect_ie_collection common;
struct dect_ie_iwu_to_iwu *iwu_to_iwu;
struct dect_ie_iwu_packet *iwu_packet;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
};
/** @} */
struct dect_mm_endpoint;
@ -272,4 +327,6 @@ extern int dect_mm_info_res(struct dect_handle *dh, struct dect_mm_endpoint *mme
extern int dect_mm_iwu_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_iwu_param *param);
/** @} */
#endif /* _LIBDECT_DECT_MM_H */

View File

@ -8,6 +8,14 @@
* published by the Free Software Foundation.
*/
/**
* @defgroup security Security features
*
* This module implements the security processes specified in ETSI EN 300 175-7.
*
* @{
*/
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
@ -21,12 +29,14 @@
/**
* dect_pin_to_ac - convert PIN to authentication code
*
* @pin: PIN code
* @ac: buffer to store authentication code
* @ac_len: length of destination buffer
* @param pin PIN code
* @param ac buffer to store authentication code
* @param ac_len length of destination buffer
*
* Convert a PIN to an authentication code, which is the BCD encoded PIN,
* left-padded with 0xf. The number of PIN digits must not exceed 2 * ac_len.
*
* @sa ETSI EN 300 444 (GAP), section 14.2.
*/
void dect_pin_to_ac(const char *pin, uint8_t *ac, unsigned int ac_len)
{
@ -46,9 +56,9 @@ EXPORT_SYMBOL(dect_pin_to_ac);
/**
* dect_auth_b1 - derive authentication key K from UAK/AC
*
* @val: user authentication key (UAK) or authentication code (AC)
* @len: length of UAK/AC
* @k: buffer to store authentication key of size DECT_AUTH_KEY_LEN
* @param val user authentication key (UAK) or authentication code (AC)
* @param len length of UAK/AC
* @param k buffer to store authentication key of size DECT_AUTH_KEY_LEN
*
* Derive an authentication key from a user authentication key or an
* authentication code.
@ -65,11 +75,11 @@ EXPORT_SYMBOL(dect_auth_b1);
/**
* dect_auth_b2 - derive authentication key K from UAK and UPI
*
* @uak: user authentication key (UAK)
* @uak_len: length of UAK
* @upi: user personal identity (UPI)
* @upi_len: length of UPI
* @k: buffer to store authentication key of size DECT_AUTH_KEY_LEN
* @param uak user authentication key (UAK)
* @param uak_len length of UAK
* @param upi user personal identity (UPI)
* @param upi_len length of UPI
* @param k buffer to store authentication key of size DECT_AUTH_KEY_LEN
*
* Derive an authentication key from a user authentication key and an user
* personal identity.
@ -102,9 +112,9 @@ static void dect_auth_calc(const uint8_t *key, uint64_t val, uint8_t *e)
/**
* dect_auth_a11 - derive authentication session key
*
* @k: authentication key K
* @rs: random seed
* @ks: buffer to store session authentication key of size DECT_AUTH_KEY_LEN
* @param k authentication key K
* @param rs random seed
* @param ks buffer to store session authentication key of size DECT_AUTH_KEY_LEN
*
* Derive the session authentication keys KS from the authentication key K
* and random seed RS.
@ -118,10 +128,10 @@ EXPORT_SYMBOL(dect_auth_a11);
/**
* dect_auth_a12 - derive cipher key and authentication response
*
* @ks: session authentication key KS
* @rand_f: FP random value
* @dck: buffer to store derived cipher key (DCK) of size DECT_CIPHER_KEY_LEN
* @res1: buffer to store authentication response
* @param ks session authentication key KS
* @param rand_f FP random value
* @param dck buffer to store derived cipher key (DCK) of size DECT_CIPHER_KEY_LEN
* @param res1 buffer to store authentication response
*
* Derive the derived cipher key DCK and authentication response RES1 from the
* session authentication key KS and the random value rand_f.
@ -139,9 +149,9 @@ EXPORT_SYMBOL(dect_auth_a12);
/**
* dect_auth_a21 - derive authentication session key
*
* @k: authentication key K
* @rs: random seed
* @ks: buffer to store session authentication key of size DECT_AUTH_KEY_LEN
* @param k authentication key K
* @param rs random seed
* @param ks buffer to store session authentication key of size DECT_AUTH_KEY_LEN
*
* Derive the session authentication keys KS' from the authentication key K
* and random seed RS.
@ -159,9 +169,9 @@ EXPORT_SYMBOL(dect_auth_a21);
/**
* dect_auth_a22 - derive authentication response
*
* @ks: session authentication key KS'
* @rand_p: PP random value
* @res2: buffer to store authentication response
* @param ks session authentication key KS'
* @param rand_p PP random value
* @param res2 buffer to store authentication response
*
* Derive the authentication response RES2 from the session authentication
* key KS' and the random value rand_p.
@ -175,6 +185,8 @@ void dect_auth_a22(const uint8_t *ks, uint64_t rand_p, uint32_t *res2)
}
EXPORT_SYMBOL(dect_auth_a22);
/** @} */
/*
* DSAA/DSC key allocation test from ETS EN 300 175-7 Annex K
*/

View File

@ -8,6 +8,14 @@
* published by the Free Software Foundation.
*/
/**
* @defgroup cc Call Control
*
* This module implements the call control processes specified in
* ETSI EN 300 175-5, section 9.
* @{
*/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
@ -1415,3 +1423,5 @@ static void __init dect_cc_init(void)
{
dect_lce_register_protocol(&cc_protocol);
}
/** @} */

View File

@ -8,6 +8,11 @@
* published by the Free Software Foundation.
*/
/**
* @defgroup ie Information Elements
* @{
*/
#include <stdint.h>
#include <stdio.h>
#include <string.h>
@ -192,3 +197,5 @@ struct dect_ie_collection *__dect_ie_collection_hold(struct dect_ie_collection *
return iec;
}
EXPORT_SYMBOL(__dect_ie_collection_hold);
/** @} */

View File

@ -382,8 +382,8 @@ static void dect_ddl_shutdown(struct dect_handle *dh,
/**
* dect_ddl_set_cipher_key - set cipher key for datalink
*
* @ddl: Datalink
* @ck: Cipher key
* @param ddl Datalink
* @param ck Cipher key
*/
int dect_ddl_set_cipher_key(const struct dect_data_link *ddl,
const uint8_t ck[DECT_CIPHER_KEY_LEN])
@ -401,8 +401,8 @@ int dect_ddl_set_cipher_key(const struct dect_data_link *ddl,
/**
* dect_ddl_encrypt_req - enable/disable encryption for a datalink
*
* @ddl: Datalink
* @status: desired ciphering state (enabled/disabled)
* @param ddl Datalink
* @param status desired ciphering state (enabled/disabled)
*/
int dect_ddl_encrypt_req(const struct dect_data_link *ddl,
enum dect_cipher_states status)

354
src/mm.c
View File

@ -8,6 +8,11 @@
* published by the Free Software Foundation.
*/
/**
* @defgroup mm Mobility Management
* @{
*/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
@ -557,16 +562,74 @@ static int dect_mm_send_msg(const struct dect_handle *dh,
(void)0; \
})
/*
* Key Allocation
/**
* @defgroup mm_key_allocation Key Allocation
*
* This module implements the key allocation procedure specified in
* ETSI EN 300 175-5 section 13.6. The procedure works by performing
* mutual authentication and storing the resulting session key as UAK:
*
* - The F-IWU invokes the \ref dect_mm_key_allocate_req() "MM_KEY_ALLOCATE-req"
* primitive, the F-MM entity sends a KEY-ALLOCATE message to the P-MM containing
* a \ref dect_ie_auth_value "RAND", \ref dect_ie_auth_value "RS" and
* \ref dect_ie_allocation_type "ALLOCATION-TYPE" information element.
*
* - The P-MM invokes the \ref dect_mm_ops::mm_key_allocate_ind()
* "MM_KEY_ALLOCATE-ind" primitive, the P-IWU responds with a
* \ref dect_mm_authenticate_req() "MM_AUTHENTICATE-req" primitive and sends
* a AUTHENTICATION-REQUEST message to the F-MM containing a
* \ref dect_ie_auth_value "RAND" and \ref dect_ie_auth_res "RES" information
* element.
*
* - The F-MM invokes the \ref dect_mm_ops::mm_authenticate_ind()
* "MM_AUTHENTICATE-ind" primitive. If the \ref dect_ie_auth_res "RES" value
* matches the expected value, the PT authentication is considered successful.
* The F-IWU responds with a \ref dect_mm_authenticate_res() "MM_AUTHENTICATE-res"
* primitive, the F-MM sends an AUTHENTICATION-REPLY message to the P-MM
* containing a \ref dect_ie_auth_res "RES" information element.
*
* - The P-MM invokes the \ref dect_mm_ops::mm_authenticate_cfm()
* "MM_AUTHENTICATE-cfm" primitive. If the \ref dect_ie_auth_res "RES" value
* matches the expected value, the FT authentication is considered successful.
* The P-IWU stores the reverse session key KS' as a new user authentication
* key under the UAK-number given in the \ref dect_ie_allocation_type
* "ALLOCATION-TYPE" information element.
*
* \msc
* "F-IWU", "F-MM", "P-MM", "P-IWU";
*
* "F-IWU" => "F-MM" [label="MM_KEY_ALLOCATE-req", URL="\ref dect_mm_key_allocate_req()"];
* "F-MM" -> "P-MM" [label="KEY-ALLOCATE"];
* "P-MM" =>> "P-IWU" [label="MM_KEY_ALLOCATE-ind", URL="\ref dect_mm_ops::mm_key_allocate_ind"];
* "P-IWU" => "P-MM" [label="MM_AUTHENTICATE-req", URL="\ref dect_mm_authenticate_req()"];
* "P-MM" -> "F-MM" [label="AUTHENTICATION-REQUEST"];
* "F-MM" =>> "F-IWU" [label="MM_AUTHENTICATE-ind", URL="\ref dect_mm_ops::mm_authenticate_ind"];
* "F-IWU" => "F-MM" [label="MM_AUTHENTICATE-res", URL="\ref dect_mm_authenticate_res()"];
* "F-MM" -> "P-MM" [label="AUTHENTICATION-REPLY"];
* "P-MM" =>> "P-IWU" [label="MM_AUTHENTICATE-cfm", URL="\ref dect_mm_ops::mm_authenticate_cfm"];
* \endmsc
*
* @sa ETSI EN 300 175-7 (DECT Common Interface - Security Features)
*
* @{
*/
/**
* dect_mm_key_allocate_req - MM_KEY_ALLOCATE-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: key allocate request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param key allocate request parameters
*
* Begin a key allocation procedure and send a KEY-ALLOCATE message to the PT.
*
* When the procedure is successfully accepted by the PT, it will respond by
* requesting authentication, in which case the #dect_mm_ops::mm_authenticate_ind()
* callback will be invoked. If the procedure is rejected or an error occurs,
* the #dect_mm_ops::mm_authenticate_cfm() callback will be invoked with an 'accept'
* parameter value of 'false'.
*
* The key allocation procedure may only be invoked by the FT.
*/
int dect_mm_key_allocate_req(struct dect_handle *dh,
struct dect_mm_endpoint *mme,
@ -638,16 +701,61 @@ err1:
dect_mm_procedure_cancel(dh, mme, mp);
}
/*
* Authentication
/**
* @}
* @defgroup mm_auth Authentication
*
* This module implements the authentication procedures specified in
* ETSI EN 300 175-5 section 13.3. Authentication may be invoked by either
* side, the procedure works as follows:
*
* - The IWU-1 invokes the \ref dect_mm_authenticate_req() "MM_AUTHENTICATE-req"
* primitive, the MM-1 sends a AUTHENTICATION-REQUEST message to the MM-2
* containing a \ref dect_ie_auth_value "RAND" and \ref dect_ie_auth_value "RS"
* information element.
*
* - The MM-2 invokes the \ref dect_mm_ops::mm_authenticate_ind()
* "MM_AUTHENTICATE-ind" primitive. The IWU-2 responds with a \ref dect_mm_authenticate_res()
* "MM_AUTHENTICATE-res" primitive, the MM-2 sends an AUTHENTICATION-REPLY
* message to the MM-1 containing a \ref dect_ie_auth_res "RES" information
* element.
*
* - The MM-1 invokes the \ref dect_mm_ops::mm_authenticate_cfm() "MM_AUTHENTICATE-cfm"
* primitive. If the \ref dect_ie_auth_res "RES" value matches the expected value,
* the authentication is considered successful.
*
* \msc
* "IWU-1", "MM-1", "MM-2", "IWU-2";
*
* "IWU-1" => "MM-1" [label="MM_AUTHENTICATE-req", URL="\ref dect_mm_authenticate_req()"];
* "MM-1" -> "MM-2" [label="AUTHENTICATION-REQUEST"];
* "MM-2" =>> "IWU-2" [label="MM_AUTHENTICATE-ind", URL="\ref dect_mm_ops::mm_authenticate_ind"];
* "IWU-2" => "MM-2" [label="MM_AUTHENTICATE-res", URL="\ref dect_mm_authenticate_res()"];
* "MM-2" -> "MM-1" [label="AUTHENTICATION-REPLY"];
* "MM-1" =>> "IWU-1" [label="MM_AUTHENTICATE-cfm", URL="\ref dect_mm_ops::mm_authenticate_cfm"];
* \endmsc
*
* @sa ETSI EN 300 175-7 (DECT Common Interface - Security Features)
*
* @{
*/
/**
* dect_mm_authenticate_req - MM_AUTHENTICATE-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: authenticate request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param authenticate request parameters
*
* Begin an authentication procedure and send an AUTHENTICATION-REQUEST message
* to the peer.
*
* When the procedure is successfully accepted by the peer, it will respond
* with an AUTHENTICATION-REPLY message, in which case the
* #dect_mm_ops::mm_authenticate_cfm() callback will be invoked with an 'accept'
* parameter value of 'true'. If the procedure is rejected or an error occurs,
* the dect_mm_ops::mm_authenticate_cfm() callback will be invoked with an
* 'accept' parameter value of 'false'.
*/
int dect_mm_authenticate_req(struct dect_handle *dh,
struct dect_mm_endpoint *mme,
@ -719,12 +827,14 @@ static int dect_mm_send_authenticate_reject(const struct dect_handle *dh,
}
/**
* dect_mm_authenticate_req - MM_AUTHENTICATE-res primitive
* dect_mm_authenticate_res - MM_AUTHENTICATE-res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @accept: accept/reject authentication
* @param: authenticate response parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param accept accept/reject authentication
* @param param authenticate response parameters
*
* Respond to an authentication request and complete the authentication procedure.
*/
int dect_mm_authenticate_res(struct dect_handle *dh,
struct dect_mm_endpoint *mme, bool accept,
@ -871,17 +981,39 @@ err1:
dect_msg_free(dh, &mm_authentication_reject_msg_desc, &msg.common);
}
/*
* Ciphering
/**
* @}
* @defgroup mm_cipher Ciphering
*
* This module implements the ciphering related procedure specified in
* ETSI EN 300 175-5 section 13.8.
*
* \msc
* "F-IWU", "F-MM", "F-DLC", "P-DLC", "P-MM", "P-IWU";
*
* "F-IWU" => "F-MM" [label="MM_CIPHER-req", URL="\ref dect_mm_cipher_req()"];
* "F-MM" => "F-DLC" [label="DL_ENC_KEY-req"];
* "F-MM" -> "P-MM" [label="CIPHER-REQUEST"];
* "P-MM" =>> "P-IWU" [label="MM_CIPHER-ind", URL="\ref dect_mm_ops::mm_ciphere_ind"];
* "P-IWU" => "P-MM" [label="MM_CIPHER-res", URL="\ref dect_mm_cipher_res()"];
* "P-MM" => "P-DLC" [label="DL_ENC_KEY-req"];
* "P-MM" => "P-DLC" [label="DL_ENCRYPT-req"];
* ... [label="Establish MAC bearer encryption"];
* "P-DLC" =>> "P-MM" [label="DL_ENCRYPT-cfm"];
* "F-DLC" =>> "F-MM" [label="DL_ENCRYPT-ind"];
* "F-MM" =>> "F-IWU" [label="MM_CIPHER-cfm", URL="\ref dect_mm_ops::mm_cipher_cfm"];
* \endmsc
*
* @{
*/
/**
* dect_mm_cipher_req - MM_CIPHER-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: cipher request parameters
* @ck: cipher key
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param cipher request parameters
* @param ck cipher key
*/
int dect_mm_cipher_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_cipher_param *param,
@ -944,11 +1076,11 @@ static int dect_mm_send_cipher_reject(const struct dect_handle *dh,
/**
* dect_mm_cipher_res - MM_CIPHER-res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @accept: accept/reject ciphering
* @param: cipher respond parameters
* @ck: cipher key
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param accept accept/reject ciphering
* @param param cipher respond parameters
* @param ck cipher key
*/
int dect_mm_cipher_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
bool accept, const struct dect_mm_cipher_param *param,
@ -1120,16 +1252,22 @@ static void dect_mm_encrypt_ind(struct dect_handle *dh, struct dect_transaction
dect_mm_cipher_cfm(dh, mme);
}
/*
* Access rights requests
/**
* @}
* @defgroup mm_access_rights Access Rights requests
*
* This module implements the access rights procedure specified in
* ETSI EN 300 175-5 section 13.5.1.
*
* @{
*/
/**
* dect_mm_access_rights_req - MM_ACCESS_RIGHTS-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: access rights request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param access rights request parameters
*/
int dect_mm_access_rights_req(struct dect_handle *dh,
struct dect_mm_endpoint *mme,
@ -1215,10 +1353,10 @@ static int dect_mm_send_access_rights_reject(const struct dect_handle *dh,
/**
* dect_mm_access_rights_res - MM_ACCESS_RIGHTS-res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @accept: accept/reject access rights request
* @param: access rights response parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param accept accept/reject access rights request
* @param param access rights response parameters
*/
int dect_mm_access_rights_res(struct dect_handle *dh,
struct dect_mm_endpoint *mme, bool accept,
@ -1371,16 +1509,22 @@ err1:
dect_msg_free(dh, &mm_access_rights_reject_msg_desc, &msg.common);
}
/*
* Access rights termination
/**
* @}
* @defgroup mm_access_rights_terminate Access rights termination
*
* This module implements the access rights termination procedure specified in
* ETSI EN 300 175-5 section 13.5.2.
*
* @{
*/
/**
* dect_mm_access_rights_terminate_req - MM_ACCESS_RIGHTS_TERMINATE-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: access rights terminate request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param access rights terminate request parameters
*/
int dect_mm_access_rights_terminate_req(struct dect_handle *dh,
struct dect_mm_endpoint *mme,
@ -1450,12 +1594,12 @@ static int dect_mm_send_access_rights_terminate_reject(const struct dect_handle
}
/**
* dect_mm_access_rights_terminate_res - MM_ACCESS_RUGHTS_TERMINATE-res primitive
* dect_mm_access_rights_terminate_res - MM_ACCESS_RIGHTS_TERMINATE-res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @accept: accept/reject access rights termination
* @param: access rights terminate response parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param accept accept/reject access rights termination
* @param param access rights terminate response parameters
*/
int dect_mm_access_rights_terminate_res(struct dect_handle *dh,
struct dect_mm_endpoint *mme, bool accept,
@ -1594,16 +1738,22 @@ err1:
dect_msg_free(dh, &mm_access_rights_terminate_reject_msg_desc, &msg.common);
}
/*
* Location registration
/**
* @}
* @defgroup mm_location_registration Location registration
*
* This module implements the location registration procedure specified in
* ETSI EN 300 175-5 section 13.4.1.
*
* @{
*/
/**
* dect_mm_locate_req - MM_LOCATE-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: locate request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param locate request parameters
*/
int dect_mm_locate_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_locate_param *param)
@ -1686,10 +1836,10 @@ static int dect_mm_send_locate_reject(const struct dect_handle *dh,
/**
* dect_mm_locate_res - MM_LOCATE-res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @accept: accept/reject location registration/update
* @param: access rights response parameters
* @param dh libdect DECT handle
* @param mme obility Management Endpoint
* @param accept accept/reject location registration/update
* @param param ccess rights response parameters
*/
int dect_mm_locate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
bool accept, const struct dect_mm_locate_param *param)
@ -1869,9 +2019,9 @@ err1:
/**
* dect_mm_detach_req - MM_DETACH-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: detach parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param detach parameters
*/
int dect_mm_detach_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
struct dect_mm_detach_param *param)
@ -1942,16 +2092,22 @@ err1:
dect_msg_free(dh, &mm_detach_msg_desc, &msg.common);
}
/*
* Identification
/**
* @}
* @defgroup mm_identification Identification
*
* This module implements the identification procedure specified in
* ETSI EN 300 175-5 section 13.2.1.
*
* @{
*/
/**
* dect_mm_identity_req - MM_IDENTITY-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: identity request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param identity request parameters
*/
int dect_mm_identity_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_identity_param *param)
@ -1988,9 +2144,9 @@ EXPORT_SYMBOL(dect_mm_identity_req);
/**
* dect_mm_identity_res - MM_IDENTITY_res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: identity response parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param identity response parameters
*/
int dect_mm_identity_res(struct dect_handle *dh,
struct dect_mm_endpoint *mme,
@ -2105,16 +2261,22 @@ err1:
dect_msg_free(dh, &mm_identity_reply_msg_desc, &msg.common);
}
/*
* Temporary identity assignment
/**
* @}
* @defgroup mm_temporary_identity_assignment Temporary Identity assigment
*
* This module implements the temporary identity assigment procedure specified
* in ETSI EN 300 175-5 section 13.2.2.
*
* @{
*/
/**
* dect_mm_identity_assign_req - MM_IDENTITY_ASSIGN-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: identity request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param identity request parameters
*/
int dect_mm_identity_assign_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_identity_assign_param *param)
@ -2180,10 +2342,10 @@ static int dect_mm_send_temporary_identity_assign_rej(const struct dect_handle *
/**
* dect_mm_identity_assign_res - MM_IDENTITY_ASSIGN-res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @accept: accept/reject identity assignment
* @param: identity assigment response parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param accept accept/reject identity assignment
* @param param identity assigment response parameters
*/
int dect_mm_identity_assign_res(struct dect_handle *dh,
struct dect_mm_endpoint *mme, bool accept,
@ -2332,16 +2494,22 @@ err1:
dect_msg_free(dh, &mm_temporary_identity_assign_rej_msg_desc, &msg.common);
}
/*
* Parameter retrieval
/**
* @}
* @defgroup mm_parameter_retrieval Parameter retrieval
*
* This module implements the parameter retrieval procedure specified in
* ETSI EN 300 175-5 section 13.7.
*
* @{
*/
/**
* dect_mm_info_req - MM_INFO-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: info parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param info parameters
*/
int dect_mm_info_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
struct dect_mm_info_param *param)
@ -2442,10 +2610,10 @@ static int dect_mm_send_info_reject(const struct dect_handle *dh,
/**
* dect_mm_info_res - MM_INFO-res primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @accept: accept/reject info request
* @param: info parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param accept accept/reject info request
* @param param info parameters
*/
int dect_mm_info_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
bool accept, struct dect_mm_info_param *param)
@ -2635,16 +2803,22 @@ err1:
dect_msg_free(dh, &mm_info_suggest_msg_desc, &msg.common);
}
/*
* External protocol information
/**
* @}
* @defgroup mm_external_protocol_information External protocol information
*
* This module implements the external protocol information procedure specified
* in ETSI EN 300 175-5 section 13.9.
*
* @{
*/
/**
* dect_mm_iwu_req - MM_IWU-req primitive
*
* @dh: libdect DECT handle
* @mme: Mobility Management Endpoint
* @param: IWU request parameters
* @param dh libdect DECT handle
* @param mme Mobility Management Endpoint
* @param param IWU request parameters
*/
int dect_mm_iwu_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_iwu_param *param)
@ -2708,6 +2882,8 @@ err1:
dect_msg_free(dh, &mm_iwu_msg_desc, &msg.common);
}
/** @} */
static const struct dect_mm_proc dect_mm_proc[DECT_MMP_MAX + 1] = {
[DECT_MMP_ACCESS_RIGHTS] = {
.name = "access rights",
@ -2969,3 +3145,5 @@ static void __init dect_mm_init(void)
{
dect_lce_register_protocol(&mm_protocol);
}
/** @} */

View File

@ -8,6 +8,11 @@
* published by the Free Software Foundation.
*/
/**
* @defgroup ss Supplementary Services
* @{
*/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
@ -114,10 +119,10 @@ static struct dect_ss_endpoint *dect_ss_endpoint(struct dect_transaction *ta)
/**
* dect_mnss_setup_req - MNSS_SETUP-req primitive
*
* @dh: libdect DECT handle
* @sse: Supplementary Services Endpoint
* @ipui: PT IPUI
* @param: Supplementary Services parameters
* @param dh libdect DECT handle
* @param sse Supplementary Services Endpoint
* @param ipui PT IPUI
* @param param Supplementary Services parameters
*/
int dect_mnss_setup_req(struct dect_handle *dh, struct dect_ss_endpoint *sse,
const struct dect_ipui *ipui,
@ -157,9 +162,9 @@ EXPORT_SYMBOL(dect_mnss_setup_req);
/**
* dect_mnss_facility_req - MNSS_FACILITY-req primitive
*
* @dh: libdect DECT handle
* @sse: Supplementary Services Endpoint
* @param: Supplementary Services parameters
* @param dh libdect DECT handle
* @param sse Supplementary Services Endpoint
* @param param Supplementary Services parameters
*/
int dect_mnss_facility_req(struct dect_handle *dh, struct dect_ss_endpoint *sse,
const struct dect_mnss_param *param)
@ -210,9 +215,9 @@ out:
/**
* dect_mnss_release_req - MNSS_RELEASE-req primitive
*
* @dh: libdect DECT handle
* @sse: Supplementary Services Endpoint
* @param: Supplementary Services parameters
* @param dh libdect DECT handle
* @param sse Supplementary Services Endpoint
* @param param Supplementary Services parameters
*/
int dect_mnss_release_req(struct dect_handle *dh, struct dect_ss_endpoint *sse,
const struct dect_mnss_param *param)
@ -346,3 +351,5 @@ static void __init dect_ciss_init(void)
{
dect_lce_register_protocol(&ciss_protocol);
}
/** @} */