Added transportId bit-field to flags element in MessageQ header
authorRamsey Harris <ramsey@ti.com>
Wed, 19 Nov 2014 22:53:19 +0000 (14:53 -0800)
committerRobert Tivy <rtivy@ti.com>
Wed, 26 Nov 2014 19:12:42 +0000 (11:12 -0800)
In the MessageQ header, added a transportId field to the flags
element. This field is 3-bits wide. Added macros to MessageQ.h
to set and get the transportId. The transportId is part of a
new feature for supporting multiple transports in MessageQ.

packages/ti/ipc/MessageQ.h
packages/ti/sdo/ipc/MessageQ.xdc

index 7a1becd16954a13b6e4cc144eb90773ac65e05dc..4971dffa90885c40dd75ad0ea6bcb0d17c8914fb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * Copyright (c) 2012-2014 Texas Instruments Incorporated - http://www.ti.com
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -366,6 +366,17 @@ extern "C" {
                 (MessageQ_QueueId)((((MessageQ_Msg) (msg))->replyProc << 16u) \
                 | ((MessageQ_Msg)(msg))->replyId)
 
+/*!
+ *  @brief   Return the transport Id for the given message
+ *
+ *  Extract the transport Id from the message header.
+ *
+ *  @param[in]   msg      message of type #MessageQ_Msg
+ *  @retval      tid      transport Id
+ */
+#define MessageQ_getTransportId(msg) \
+        ((((MessageQ_Msg)(msg))->flags & (0x7 << 2)) >> 2)
+
 /*!
  *  @brief   Sets the message id in a message.
  *
@@ -389,6 +400,23 @@ extern "C" {
 #define MessageQ_setMsgPri(msg, priority) \
         (((MessageQ_Msg) (msg))->flags = ((priority) & MessageQ_PRIORITYMASK))
 
+/*!
+ *  @brief   Set the transport Id for the given message
+ *
+ *  Set the transport Id in the flags field of the message header. When
+ *  set to a non-zero value, the message will be given to the specified
+ *  transport for delivery. The transport must be registered with MessageQ
+ *  with the given Id.
+ *
+ *  There is no error checking on the transport Id.
+ *
+ *  @param[in]   msg      message of type #MessageQ_Msg
+ *  @param[in]   tid      transport ID (1-7)
+ */
+#define MessageQ_setTransportId(msg, tid) \
+        ((MessageQ_Msg)(msg))->flags = \
+        ((((MessageQ_Msg)(msg))->flags & ~(0x7 << 2)) | ((tid) << 2))
+
 /* =============================================================================
  *  Structures & Enums
  * =============================================================================
index 48b335547d3a3446ee4c678ea4f351266a010396..882c0b3e8beb5f2b56ea5381869623a2e0ace92b 100644 (file)
@@ -635,13 +635,15 @@ internal:
     /*
      *  The following describes the usage of the flag field
      *  ---------------------------------
-     *  |V V V|T|     reserved      |P P|
+     *  |V V V|T|  reserved   |t t t|P P|
      *  ---------------------------------
      *   F E D C B A 9 8 7 6 5 4 3 2 1 0
      *
-     *  V = version
-     *  T = trace flag
-     *  P = priority
+     *  [15:13] V = version
+     *  [12]    T = trace flag
+     *  [11:5]  reserved
+     *  [4:2]   t = transport Id, zero = default
+     *  [1:0]   P = priority
      */
 
     /*! Mask to extract version setting */