Inline helper to get FIFO pointer from FactoryObjectsFIFO Topic is solved

Use this forum for requesting small changes in ChibiOS. Large changes should be discussed in the development forum. This forum is NOT for support.
User avatar
FXCoder
Posts: 384
Joined: Sun Jun 12, 2016 4:10 am
Location: Sydney, Australia
Has thanked: 180 times
Been thanked: 130 times

Inline helper to get FIFO pointer from FactoryObjectsFIFO  Topic is solved

Postby FXCoder » Mon Nov 27, 2017 12:19 pm

Hi,
Just doing some refactoring of a project to use Factory library.
I couldn't find a helper for getting a pointer to the objects_fifo_t out of the dyn_objects_fifo_t to use in calls to chfifo functions.
Its trivial to get the reference in code but figured adding an inline to chfactory made sense for simplicity.

Also did some typo fixes in other modules.

Thanks

----------------------------------------------------------

chfactory.h

Code: Select all

Index: chfactory.h
===================================================================
--- chfactory.h   (revision 11078)
+++ chfactory.h   (working copy)
@@ -349,6 +349,7 @@
                                                  unsigned objalign);
   dyn_objects_fifo_t *chFactoryFindObjectsFIFO(const char *name);
   void chFactoryReleaseObjectsFIFO(dyn_objects_fifo_t *dofp);
+  objects_fifo_t *chFactoryGetObjectsFIFO(dyn_objects_fifo_t *dofp);
 #endif
 #ifdef __cplusplus
 }


chfactory.c

Code: Select all

Index: chfactory.c
===================================================================
--- chfactory.c   (revision 11078)
+++ chfactory.c   (working copy)
@@ -588,7 +588,7 @@
 
   F_UNLOCK();
 }
-#endif /* CH_CFG_FACTORY_MAILBOXES = TRUE */
+#endif /* CH_CFG_FACTORY_MAILBOXES == TRUE */
 
 #if (CH_CFG_FACTORY_OBJ_FIFOS == TRUE) || defined(__DOXIGEN__)
 /**
@@ -678,8 +678,22 @@
 
   F_UNLOCK();
 }
-#endif /* CH_CFG_FACTORY_MAILBOXES = TRUE */
 
+/**
+ * @brief   Gets the objects from a dynamic "objects FIFO" object.
+ * @details A pointer to the fifo structure is returned for use
+ *  in fifo operations
+ *
+ * @param[in] dofp      dynamic "objects FIFO" object reference
+ *
+ * @api
+ */
+inline objects_fifo_t *chFactoryGetObjectsFIFO(dyn_objects_fifo_t *dofp) {
+
+  return   &dofp->fifo;
+}
+#endif /* CH_CFG_FACTORY_OBJ_FIFOS == TRUE */
+
 #endif /* CH_CFG_USE_FACTORY == TRUE */
 
 /** @} */


chfifo.c

Code: Select all

Index: chfifo.h
===================================================================
--- chfifo.h   (revision 11078)
+++ chfifo.h   (working copy)
@@ -223,7 +223,7 @@
  * @note    By design the object can be always immediately posted.
  *
  * @param[in] ofp       pointer to a @p objects_fifo_t structure
- * @param[in] objp      pointer to the object to be released
+ * @param[in] objp      pointer to the object to be posted
  *
  * @iclass
  */
@@ -240,7 +240,7 @@
  * @note    By design the object can be always immediately posted.
  *
  * @param[in] ofp       pointer to a @p objects_fifo_t structure
- * @param[in] objp      pointer to the object to be released
+ * @param[in] objp      pointer to the object to be posted
  *
  * @sclass
  */


chmempools.c

Code: Select all

Index: chmempools.c
===================================================================
--- chmempools.c   (revision 11078)
+++ chmempools.c   (working copy)
@@ -87,7 +87,7 @@
 
 /**
  * @brief   Loads a memory pool with an array of static objects.
- * @pre     The memory pool must be already been initialized.
+ * @pre     The memory pool must already be initialized.
  * @pre     The array elements must be of the right size for the specified
  *          memory pool.
  * @pre     The array elements size must be a multiple of the alignment
@@ -115,7 +115,7 @@
 
 /**
  * @brief   Allocates an object from a memory pool.
- * @pre     The memory pool must be already been initialized.
+ * @pre     The memory pool must already be initialized.
  *
  * @param[in] mp        pointer to a @p memory_pool_t structure
  * @return              The pointer to the allocated object.
@@ -144,7 +144,7 @@
 
 /**
  * @brief   Allocates an object from a memory pool.
- * @pre     The memory pool must be already been initialized.
+ * @pre     The memory pool must already be initialized.
  *
  * @param[in] mp        pointer to a @p memory_pool_t structure
  * @return              The pointer to the allocated object.
@@ -189,7 +189,7 @@
 
 /**
  * @brief   Releases an object into a memory pool.
- * @pre     The memory pool must be already been initialized.
+ * @pre     The memory pool must already be initialized.
  * @pre     The freed object must be of the right size for the specified
  *          memory pool.
  * @pre     The added object must be properly aligned.
@@ -228,7 +228,7 @@
 
 /**
  * @brief   Loads a guarded memory pool with an array of static objects.
- * @pre     The guarded memory pool must be already been initialized.
+ * @pre     The guarded memory pool must already be initialized.
  * @pre     The array elements must be of the right size for the specified
  *          guarded memory pool.
  * @post    The guarded memory pool contains the elements of the input array.
@@ -254,7 +254,7 @@
 
 /**
  * @brief   Allocates an object from a guarded memory pool.
- * @pre     The guarded memory pool must be already been initialized.
+ * @pre     The guarded memory pool must already be initialized.
  *
  * @param[in] gmp       pointer to a @p guarded_memory_pool_t structure
  * @param[in] timeout   the number of ticks before the operation timeouts,
@@ -281,7 +281,7 @@
 
 /**
  * @brief   Allocates an object from a guarded memory pool.
- * @pre     The guarded memory pool must be already been initialized.
+ * @pre     The guarded memory pool must already be initialized.
  *
  * @param[in] gmp       pointer to a @p guarded_memory_pool_t structure
  * @param[in] timeout   the number of ticks before the operation timeouts,
@@ -307,7 +307,7 @@
 
 /**
  * @brief   Releases an object into a guarded memory pool.
- * @pre     The guarded memory pool must be already been initialized.
+ * @pre     The guarded memory pool must already be initialized.
  * @pre     The freed object must be of the right size for the specified
  *          guarded memory pool.
  * @pre     The added object must be properly aligned.
@@ -325,7 +325,7 @@
 
 /**
  * @brief   Releases an object into a guarded memory pool.
- * @pre     The guarded memory pool must be already been initialized.
+ * @pre     The guarded memory pool must already be initialized.
  * @pre     The freed object must be of the right size for the specified
  *          guarded memory pool.
  * @pre     The added object must be properly aligned.

User avatar
Giovanni
Site Admin
Posts: 14455
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 1076 times
Been thanked: 922 times
Contact:

Re: Inline helper to get FIFO pointer from FactoryObjectsFIFO

Postby Giovanni » Mon Nov 27, 2017 5:15 pm

Hi,

Thanks for finding, added everything and some more.

Giovanni


Return to “Small Change Requests”

Who is online

Users browsing this forum: No registered users and 4 guests