channel api: Create is_t38_active accessor functions.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 19 Feb 2016 22:01:17 +0000 (16:01 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 29 Feb 2016 18:50:43 +0000 (12:50 -0600)
ASTERISK-25582

Change-Id: I69451920b122de7ee18d15bb231c80ea7067a22b

include/asterisk/channel.h
main/channel_internal_api.c

index 384c22d..14bd32c 100644 (file)
@@ -1596,6 +1596,42 @@ void ast_channel_set_unbridged(struct ast_channel *chan, int value);
 void ast_channel_set_unbridged_nolock(struct ast_channel *chan, int value);
 
 /*!
+ * \brief This function will check if T.38 is active on the channel.
+ *
+ * \param chan Channel on which to check the unbridge_eval flag
+ *
+ * \return Returns 0 if the flag is down or 1 if the flag is up.
+ */
+int ast_channel_is_t38_active(struct ast_channel *chan);
+
+/*!
+ * \brief ast_channel_is_t38_active variant. Use this if the channel
+ *         is already locked prior to calling.
+ *
+ * \param chan Channel on which to check the is_t38_active flag
+ *
+ * \return Returns 0 if the flag is down or 1 if the flag is up.
+ */
+int ast_channel_is_t38_active_nolock(struct ast_channel *chan);
+
+/*!
+ * \brief Sets the is_t38_active flag
+ *
+ * \param chan Which channel is having its is_t38_active value set
+ * \param is_t38_active Non-zero if T.38 is active
+ */
+void ast_channel_set_is_t38_active(struct ast_channel *chan, int is_t38_active);
+
+/*!
+ * \brief Variant of ast_channel_set_is_t38_active. Use this if the channel
+ *         is already locked prior to calling.
+ *
+ * \param chan Which channel is having its is_t38_active value set
+ * \param is_t38_active Non-zero if T.38 is active
+ */
+void ast_channel_set_is_t38_active_nolock(struct ast_channel *chan, int is_t38_active);
+
+/*!
  * \brief Lock the given channel, then request softhangup on the channel with the given causecode
  * \param chan channel on which to hang up
  * \param causecode cause code to use (Zero if don't use cause code)
index 987602d..d94b267 100644 (file)
@@ -173,8 +173,6 @@ struct ast_channel {
                                                         *   See \arg \ref AstFileDesc */
        int softhangup;                         /*!< Whether or not we have been hung up...  Do not set this value
                                                         *   directly, use ast_softhangup() */
-       int unbridged;              /*!< If non-zero, the bridge core needs to re-evaluate the current
-                                        bridging technology which is in use by this channel's bridge. */
        int fdno;                                       /*!< Which fd had an event detected on */
        int streamid;                                   /*!< For streaming playback, the schedule ID */
        int vstreamid;                                  /*!< For streaming video playback, the schedule ID */
@@ -216,6 +214,9 @@ struct ast_channel {
        char exten[AST_MAX_EXTENSION];                  /*!< Dialplan: Current extension number */
        char macrocontext[AST_MAX_CONTEXT];             /*!< Macro: Current non-macro context. See app_macro.c */
        char macroexten[AST_MAX_EXTENSION];             /*!< Macro: Current non-macro extension. See app_macro.c */
+       char unbridged;                                                 /*!< non-zero if the bridge core needs to re-evaluate the current
+                                                                                        bridging technology which is in use by this channel's bridge. */
+       char is_t38_active;                                             /*!< non-zero if T.38 is active on this channel. */
        char dtmf_digit_to_emulate;                     /*!< Digit being emulated */
        char sending_dtmf_digit;                        /*!< Digit this channel is currently sending out. (zero if not sending) */
        struct timeval sending_dtmf_tv;         /*!< The time this channel started sending the current digit. (Invalid if sending_dtmf_digit is zero.) */
@@ -1146,7 +1147,7 @@ int ast_channel_unbridged(struct ast_channel *chan)
 
 void ast_channel_set_unbridged_nolock(struct ast_channel *chan, int value)
 {
-       chan->unbridged = value;
+       chan->unbridged = !!value;
        ast_queue_frame(chan, &ast_null_frame);
 }
 
@@ -1157,6 +1158,33 @@ void ast_channel_set_unbridged(struct ast_channel *chan, int value)
        ast_channel_unlock(chan);
 }
 
+int ast_channel_is_t38_active_nolock(struct ast_channel *chan)
+{
+       return chan->is_t38_active;
+}
+
+int ast_channel_is_t38_active(struct ast_channel *chan)
+{
+       int res;
+
+       ast_channel_lock(chan);
+       res = ast_channel_is_t38_active_nolock(chan);
+       ast_channel_unlock(chan);
+       return res;
+}
+
+void ast_channel_set_is_t38_active_nolock(struct ast_channel *chan, int is_t38_active)
+{
+       chan->is_t38_active = !!is_t38_active;
+}
+
+void ast_channel_set_is_t38_active(struct ast_channel *chan, int is_t38_active)
+{
+       ast_channel_lock(chan);
+       ast_channel_set_is_t38_active_nolock(chan, is_t38_active);
+       ast_channel_unlock(chan);
+}
+
 void ast_channel_callid_cleanup(struct ast_channel *chan)
 {
        chan->callid = 0;