Index: spec/rtems/timer/if/cancel.yml
===================================================================
--- spec/rtems/timer/if/cancel.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/cancel.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Cancels the timer.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -12,7 +13,12 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive cancels the timer specified in the ${.:/params[0]/name}
+  parameter.  This timer will be reinitiated by the next invocation of
+  ${reset:/name}, ${fire-after:/name}, or ${fire-when:/name} with the same
+  timer identifier.
 enabled-by: true
-index-entries: []
+index-entries:
+- cancel a timer
 interface-type: function
 links:
@@ -22,11 +28,19 @@
   uid: group
 name: rtems_timer_cancel
-notes: null
+notes: |
+  This directive will not cause the running task to be preempted.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
 type: interface
Index: spec/rtems/timer/if/class-bit-not-dormant.yml
===================================================================
--- spec/rtems/timer/if/class-bit-not-dormant.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/class-bit-not-dormant.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class bit indicates that the timer is not dormant.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/class-bit-on-task.yml
===================================================================
--- spec/rtems/timer/if/class-bit-on-task.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/class-bit-on-task.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class bit indicates that the timer routine executes in a task
+  context.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/class-bit-time-of-day.yml
===================================================================
--- spec/rtems/timer/if/class-bit-time-of-day.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/class-bit-time-of-day.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class bit indicates that the timer uses a time of day.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/classes.yml
===================================================================
--- spec/rtems/timer/if/classes.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/classes.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  The timer class indicates how the timer was most recently fired.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/create.yml
===================================================================
--- spec/rtems/timer/if/create.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/create.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Creates a timer.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -13,7 +14,11 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive creates a timer.  The assigned object identifier is returned
+  in ${.:/params[1]/name}.  This identifier is used to access the timer with
+  other timer related directives.
 enabled-by: true
-index-entries: []
+index-entries:
+- create a timer
 interface-type: function
 links:
@@ -23,14 +28,40 @@
   uid: group
 name: rtems_timer_create
-notes: null
+notes: |
+  This directive may cause the calling task to be preempted due to an obtain
+  and release of the object allocator mutex.
+
+  For control and maintenance of the timer, RTEMS allocates a
+  ${/glossary/tmcb:/term} from the local TMCB free pool and initializes it.
+
+  In SMP configurations, the processor of the currently executing thread
+  determines the processor used for the created timer.  During the life-time of
+  the timer this processor is used to manage the timer internally.
 params:
-- description: '%'
+- description: is the name of the timer.
   dir: null
   name: name
-- description: '%'
-  dir: null
+- description: |
+    is the pointer to an object identifier variable.  The identifier of the
+    created timer object will be stored in this variable, in case of a
+    successful operation.
+  dir: out
   name: id
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      The timer name was invalid.
+    value: ${../../status/if/invalid-name:/name}
+  - description: |
+      The ${.:/params[1]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      There was no inactive object available to create a new timer.  The number
+      of timers available to the application is configured through the
+      ${/acfg/if/max-timers:/name} configuration option.
+    value: ${../../status/if/too-many:/name}
 type: interface
Index: spec/rtems/timer/if/delete.yml
===================================================================
--- spec/rtems/timer/if/delete.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/delete.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Deletes the timer.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -12,7 +13,10 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive deletes the timer specified by the ${.:/params[0]/name}
+  parameter.  If the timer is running, it is automatically canceled.
 enabled-by: true
-index-entries: []
+index-entries:
+- delete a timer
 interface-type: function
 links:
@@ -22,11 +26,24 @@
   uid: group
 name: rtems_timer_delete
-notes: null
+notes: |
+  This directive may cause the calling task to be preempted due to an obtain
+  and release of the object allocator mutex.
+
+  The ${/glossary/tmcb:/term} for the deleted timer is reclaimed by RTEMS.
+
+  A timer can be deleted by a task other than the task which created the timer.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
 type: interface
Index: spec/rtems/timer/if/dormant.yml
===================================================================
--- spec/rtems/timer/if/dormant.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/dormant.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class indicates that the timer was never in use.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/fire-after.yml
===================================================================
--- spec/rtems/timer/if/fire-after.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/fire-after.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Fires the timer after the interval.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +16,14 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive initiates the timer specified by ${.:/params[0]/name}.  If the
+  timer is running, it is automatically canceled before being initiated.  The
+  timer is scheduled to fire after an interval of clock ticks has passed
+  specified by ${.:/params[1]/name}.  When the timer fires, the timer service
+  routine ${.:/params[2]/name} will be invoked with the argument
+  ${.:/params[3]/name} in the context of the clock tick ${/glossary/isr:/term}.
 enabled-by: true
-index-entries: []
+index-entries:
+- fire a timer after an interval
 interface-type: function
 links:
@@ -25,20 +33,34 @@
   uid: group
 name: rtems_timer_fire_after
-notes: null
+notes: |
+  This directive will not cause the running task to be preempted.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
-- description: '%'
+- description: is the interval until the routine is fired in clock ticks.
   dir: null
   name: ticks
-- description: '%'
+- description: is the routine to schedule.
   dir: null
   name: routine
-- description: '%'
+- description: is the argument passed to the routine when it is fired.
   dir: null
   name: user_data
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      The ${.:/params[1]/name} parameter was 0.
+    value: ${../../status/if/invalid-number:/name}
+  - description: |
+      The ${.:/params[2]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
 type: interface
Index: spec/rtems/timer/if/fire-when.yml
===================================================================
--- spec/rtems/timer/if/fire-when.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/fire-when.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Fires the timer at the time of day.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +16,14 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive initiates the timer specified by ${.:/params[0]/name}.  If the
+  timer is running, it is automatically canceled before being initiated.  The
+  timer is scheduled to fire at the time of day specified by
+  ${.:/params[1]/name}.  When the timer fires, the timer service routine
+  ${.:/params[2]/name} will be invoked with the argument ${.:/params[3]/name}
+  in the context of the clock tick ${/glossary/isr:/term}.
 enabled-by: true
-index-entries: []
+index-entries:
+- fire a timer at time of day
 interface-type: function
 links:
@@ -25,20 +33,40 @@
   uid: group
 name: rtems_timer_fire_when
-notes: null
+notes: |
+  This directive will not cause the running task to be preempted.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
-- description: '%'
+- description: is the time of day when the routine is fired.
   dir: null
   name: wall_time
-- description: '%'
+- description: is the routine to schedule.
   dir: null
   name: routine
-- description: '%'
+- description: is the argument passed to the routine when it is fired.
   dir: null
   name: user_data
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      The system date and time was not set.
+    value: ${../../status/if/not-defined:/name}
+  - description: |
+      The ${.:/params[2]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      The ${.:/params[1]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      The time of day was invalid.
+    value: ${../../status/if/invalid-clock:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
 type: interface
Index: spec/rtems/timer/if/get-information.yml
===================================================================
--- spec/rtems/timer/if/get-information.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/get-information.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Gets information about the timer.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -13,5 +14,6 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive returns information about the timer.
 enabled-by: true
 index-entries: []
@@ -23,14 +25,27 @@
   uid: group
 name: rtems_timer_get_information
-notes: null
+notes: |
+  This directive will not cause the running task to be preempted.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
-- description: '%'
-  dir: null
+- description: |
+    is the pointer to a timer information variable.  The information about the
+    timer will be stored in this variable, in case of a successful operation.
+  dir: out
   name: the_info
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      The ${.:/params[1]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
 type: interface
Index: spec/rtems/timer/if/group.yml
===================================================================
--- spec/rtems/timer/if/group.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/group.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -15,4 +15,24 @@
 - role: interface-ingroup
   uid: ../../if/group
+- role: placement-order
+  uid: create
+- role: placement-order
+  uid: ident
+- role: placement-order
+  uid: cancel
+- role: placement-order
+  uid: delete
+- role: placement-order
+  uid: fire-after
+- role: placement-order
+  uid: fire-when
+- role: placement-order
+  uid: initiate-server
+- role: placement-order
+  uid: server-fire-after
+- role: placement-order
+  uid: server-fire-when
+- role: placement-order
+  uid: reset
 name: Timer Manager
 text: |
Index: spec/rtems/timer/if/header.yml
===================================================================
--- spec/rtems/timer/if/header.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/header.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: This header file defines the Timer Manager API.
+brief: |
+  This header file provides the Timer Manager API.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -9,4 +10,6 @@
 - role: interface-placement
   uid: /if/domain
+- role: interface-ingroup
+  uid: ../req/group
 path: rtems/rtems/timer.h
 prefix: cpukit/include
Index: spec/rtems/timer/if/ident.yml
===================================================================
--- spec/rtems/timer/if/ident.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/ident.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,5 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 brief: |
-  Identifies a timer object by the specified object name.
+  Identifies a timer by the object name.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -18,5 +18,6 @@
   specified in ${.:/params[0]/name}.
 enabled-by: true
-index-entries: []
+index-entries:
+- obtain the ID of a timer
 interface-type: function
 links:
Index: spec/rtems/timer/if/information.yml
===================================================================
--- spec/rtems/timer/if/information.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/information.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  The structure contains information about a timer.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -7,7 +8,7 @@
 - default:
     brief: |
-      This member is
+      The timer class member indicates how the timer was most recently fired.
     definition: ${classes:/name} ${.:name}
-    description: '%'
+    description: null
     kind: member
     name: the_class
@@ -15,7 +16,7 @@
 - default:
     brief: |
-      This member is
+      This member indicates the initial requested interval.
     definition: ${/score/watchdog/if/interval:/name} ${.:name}
-    description: '%'
+    description: null
     kind: member
     name: initial
@@ -23,7 +24,9 @@
 - default:
     brief: |
-      This member is
+      This member indicates the time the timer was initially scheduled.
     definition: ${/score/watchdog/if/interval:/name} ${.:name}
-    description: '%'
+    description: |
+      The time is in clock ticks since the clock driver initialization or the
+      last clock tick counter overflow.
     kind: member
     name: start_time
@@ -31,7 +34,9 @@
 - default:
     brief: |
-      This member is
+      This member indicates the time the timer was scheduled to fire.
     definition: ${/score/watchdog/if/interval:/name} ${.:name}
-    description: '%'
+    description: |
+      The time is in clock ticks since the clock driver initialization or the
+      last clock tick counter overflow.
     kind: member
     name: stop_time
Index: spec/rtems/timer/if/initiate-server.yml
===================================================================
--- spec/rtems/timer/if/initiate-server.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/initiate-server.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Initiates the Timer Server.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -14,7 +15,11 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive initiates the Timer Server task.  This task is responsible for
+  executing all timers initiated via the ${server-fire-after:/name} or
+  ${server-fire-when:/name} directives.
 enabled-by: true
-index-entries: []
+index-entries:
+- initiate the Timer Server
 interface-type: function
 links:
@@ -24,17 +29,43 @@
   uid: group
 name: rtems_timer_initiate_server
-notes: null
+notes: |
+  This directive may cause the calling task to be preempted due to an obtain
+  and release of the object allocator mutex.
+
+  The Timer Server task is created using the ${../../task/if/create:/name}
+  directive and must be accounted for when configuring the system.
 params:
-- description: '%'
+- description: is the task priority.
   dir: null
   name: priority
-- description: '%'
+- description: is the task stack size in bytes.
   dir: null
   name: stack_size
-- description: '%'
+- description: is the task attribute set.
   dir: null
   name: attribute_set
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      The Timer Server was already initiated.
+    value: ${../../status/if/incorrect-state:/name}
+  - description: |
+      The task priority was invalid.
+    value: ${../../status/if/invalid-priority:/name}
+  - description: |
+      There was no inactive task object available to create the Timer Server
+      task.
+    value: ${../../status/if/too-many:/name}
+  - description: |
+      There was not enough memory to allocate the task storage area.  The task
+      storage area contains the task stack, the thread-local storage, and the
+      floating point context.
+    value: ${../../status/if/unsatisfied:/name}
+  - description: |
+      One of the task create extensions failed to create the Timer Server task.
+    value: ${../../status/if/unsatisfied:/name}
 type: interface
Index: spec/rtems/timer/if/interval-on-task.yml
===================================================================
--- spec/rtems/timer/if/interval-on-task.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/interval-on-task.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class indicates that the timer is currently in use as an interval
+  timer which will fire in the context of the Timer Server task.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/interval.yml
===================================================================
--- spec/rtems/timer/if/interval.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/interval.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,7 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class indicates that the timer is currently in use as an interval
+  timer which will fire in the context of the clock tick
+  ${/glossary/isr:/term}.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/reset.yml
===================================================================
--- spec/rtems/timer/if/reset.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/reset.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Resets the timer.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -12,7 +13,14 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive resets the timer specified by ${.:/params[0]/name}.  This
+  timer must have been previously initiated with either the ${fire-after:/name}
+  or ${server-fire-after:/name} directive.  If active the timer is canceled,
+  after which the timer is reinitiated using the same interval and timer
+  service routine which the original ${fire-after:/name} or
+  ${server-fire-after:/name} directive used.
 enabled-by: true
-index-entries: []
+index-entries:
+- reset a timer
 interface-type: function
 links:
@@ -22,11 +30,29 @@
   uid: group
 name: rtems_timer_reset
-notes: null
+notes: |
+  This directive will not cause the running task to be preempted.
+
+  If the timer has not been used or the last usage of this timer was by a
+  ${fire-when:/name} or ${server-fire-when:/name} directive, then the
+  ${../../status/if/not-defined:/name} error is returned.
+
+  Restarting a cancelled after timer results in the timer being reinitiated
+  with its previous timer service routine and interval.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
+  - description: |
+      The timer was not of the interval class.
+    value: ${../../status/if/not-defined:/name}
 type: interface
Index: spec/rtems/timer/if/server-default-priority.yml
===================================================================
--- spec/rtems/timer/if/server-default-priority.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/server-default-priority.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This constant represents the default value for the task priority of the Timer
+  Server.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -7,5 +9,7 @@
   default: ( (${../../task/if/priority:/name}) -1 )
   variants: []
-description: null
+description: |
+  When given this priority, a special high priority not accessible via the
+  Classic API is used.
 enabled-by: true
 index-entries: []
Index: spec/rtems/timer/if/server-fire-after.yml
===================================================================
--- spec/rtems/timer/if/server-fire-after.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/server-fire-after.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Fires the timer after the interval using the Timer Server.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +16,14 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive initiates the timer specified by ${.:/params[0]/name}.  If the
+  timer is running, it is automatically canceled before being initiated.  The
+  timer is scheduled to fire after an interval of clock ticks has passed
+  specified by ${.:/params[1]/name}.  When the timer fires, the timer service
+  routine ${.:/params[2]/name} will be invoked with the argument
+  ${.:/params[3]/name} in the context of the Timer Server task.
 enabled-by: true
-index-entries: []
+index-entries:
+- fire task-based a timer after an interval
 interface-type: function
 links:
@@ -25,20 +33,37 @@
   uid: group
 name: rtems_timer_server_fire_after
-notes: null
+notes: |
+  This directive will not cause the running task to be preempted.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
-- description: '%'
+- description: is the interval until the routine is fired in clock ticks.
   dir: null
   name: ticks
-- description: '%'
+- description: is the routine to schedule.
   dir: null
   name: routine
-- description: '%'
+- description: is the argument passed to the routine when it is fired.
   dir: null
   name: user_data
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      The Timer Server was not initiated.
+    value: ${../../status/if/incorrect-state:/name}
+  - description: |
+      The ${.:/params[1]/name} parameter was 0.
+    value: ${../../status/if/invalid-number:/name}
+  - description: |
+      The ${.:/params[2]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
 type: interface
Index: spec/rtems/timer/if/server-fire-when.yml
===================================================================
--- spec/rtems/timer/if/server-fire-when.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/server-fire-when.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,5 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  Fires the timer at the time of day using the Timer Server.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -15,7 +16,14 @@
     return: ${../../status/if/code:/name}
   variants: []
-description: null
+description: |
+  This directive initiates the timer specified by ${.:/params[0]/name}.  If the
+  timer is running, it is automatically canceled before being initiated.  The
+  timer is scheduled to fire at the time of day specified by
+  ${.:/params[1]/name}.  When the timer fires, the timer service routine
+  ${.:/params[2]/name} will be invoked with the argument ${.:/params[3]/name}
+  in the context of the Timer Server task.
 enabled-by: true
-index-entries: []
+index-entries:
+- fire a task-based timer at time of day
 interface-type: function
 links:
@@ -25,20 +33,43 @@
   uid: group
 name: rtems_timer_server_fire_when
-notes: null
+notes: |
+  This directive will not cause the running task to be preempted.
 params:
-- description: '%'
+- description: is the timer identifier.
   dir: null
   name: id
-- description: '%'
+- description: is the time of day when the routine is fired.
   dir: null
   name: wall_time
-- description: '%'
+- description: is the routine to schedule.
   dir: null
   name: routine
-- description: '%'
+- description: is the argument passed to the routine when it is fired.
   dir: null
   name: user_data
 return:
   return: null
-  return-values: []
+  return-values:
+  - description: |
+      The requested operation was successful.
+    value: ${../../status/if/successful:/name}
+  - description: |
+      The Timer Server was not initiated.
+    value: ${../../status/if/incorrect-state:/name}
+  - description: |
+      The system date and time was not set.
+    value: ${../../status/if/not-defined:/name}
+  - description: |
+      The ${.:/params[2]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      The ${.:/params[1]/name} parameter was ${/c/if/null:/name}.
+    value: ${../../status/if/invalid-address:/name}
+  - description: |
+      The time of day was invalid.
+    value: ${../../status/if/invalid-clock:/name}
+  - description: |
+      There was no timer associated with the identifier specified by
+      ${.:/params[0]/name}.
+    value: ${../../status/if/invalid-id:/name}
 type: interface
Index: spec/rtems/timer/if/service-routine-entry.yml
===================================================================
--- spec/rtems/timer/if/service-routine-entry.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/service-routine-entry.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This type defines the prototype of routines which can be fired by directives
+  of the Timer Manager.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/service-routine.yml
===================================================================
--- spec/rtems/timer/if/service-routine.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/service-routine.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This type defines the return type of routines which can be fired by
+  directives of the Timer Manager.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
@@ -7,5 +9,6 @@
   default: void ${.:/name}
   variants: []
-description: null
+description: |
+  This type can be used to document timer service routines in the source code.
 enabled-by: true
 index-entries: []
Index: spec/rtems/timer/if/time-of-day-on-task.yml
===================================================================
--- spec/rtems/timer/if/time-of-day-on-task.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/time-of-day-on-task.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class indicates that the timer is currently in use as an time of
+  day timer which will fire in the context of the Timer Server task.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/if/time-of-day.yml
===================================================================
--- spec/rtems/timer/if/time-of-day.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/if/time-of-day.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,4 +1,7 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: '%'
+brief: |
+  This timer class indicates that the timer is currently in use as an time of
+  day timer which will fire in the context of the clock tick
+  ${/glossary/isr:/term}.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
Index: spec/rtems/timer/req/group.yml
===================================================================
--- spec/rtems/timer/req/group.yml	(revision 0500b9aeb53a7b72f12419de62fd5d893ab7494d)
+++ spec/rtems/timer/req/group.yml	(revision c970d6373fefc6cbb73f0c91dff03865fd2be07c)
@@ -1,18 +1,16 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-brief: |
-  This group contains the Timer Manager implementation.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-description: null
 enabled-by: true
-identifier: ClassicTimerImpl
-index-entries: []
-interface-type: group
+identifier: RTEMSImplClassicTimer
 links:
 - role: interface-ingroup
-  uid: ../../if/group
-name: Timer Manager
+  uid: /req/impl
+non-functional-type: design-group
+rationale: null
+references: []
+requirement-type: non-functional
 text: |
-  There shall be a software architecture component containing the Timer Manager
+  The software architecture shall have a component containing the Timer Manager
   implementation.
-type: interface
+type: requirement
