[asterisk-commits] trunk r26093 - in /trunk: ./ include/asterisk/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue May 9 07:25:57 MST 2006


Author: kpfleming
Date: Tue May  9 09:25:57 2006
New Revision: 26093

URL: http://svn.digium.com/view/asterisk?rev=26093&view=rev
Log:
use an enum for control frame types
support sending control frames with payload

Modified:
    trunk/channel.c
    trunk/include/asterisk/channel.h
    trunk/include/asterisk/frame.h

Modified: trunk/channel.c
URL: http://svn.digium.com/view/asterisk/trunk/channel.c?rev=26093&r1=26092&r2=26093&view=diff
==============================================================================
--- trunk/channel.c (original)
+++ trunk/channel.c Tue May  9 09:25:57 2006
@@ -738,10 +738,25 @@
 }
 
 /*! \brief Queue a control frame */
-int ast_queue_control(struct ast_channel *chan, int control)
+int ast_queue_control(struct ast_channel *chan, enum ast_control_frame_type control)
 {
 	struct ast_frame f = { AST_FRAME_CONTROL, };
+
 	f.subclass = control;
+
+	return ast_queue_frame(chan, &f);
+}
+
+/*! \brief Queue a control frame with payload */
+int ast_queue_control_data(struct ast_channel *chan, enum ast_control_frame_type control,
+			   const void *data, size_t datalen)
+{
+	struct ast_frame f = { AST_FRAME_CONTROL, };
+
+	f.subclass = control;
+	f.data = (void *) data;
+	f.datalen = datalen;
+
 	return ast_queue_frame(chan, &f);
 }
 

Modified: trunk/include/asterisk/channel.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/channel.h?rev=26093&r1=26092&r2=26093&view=diff
==============================================================================
--- trunk/include/asterisk/channel.h (original)
+++ trunk/include/asterisk/channel.h Tue May  9 09:25:57 2006
@@ -605,9 +605,28 @@
 /*! \brief Queue a hangup frame */
 int ast_queue_hangup(struct ast_channel *chan);
 
-/*! \brief Queue a control frame */
-int ast_queue_control(struct ast_channel *chan, int control);
-
+/*!
+  \brief Queue a control frame with payload
+  \param chan channel to queue frame onto
+  \param control type of control frame
+  \return zero on success, non-zero on failure
+*/
+int ast_queue_control(struct ast_channel *chan, enum ast_control_frame_type control);
+
+/*!
+  \brief Queue a control frame with payload
+  \param chan channel to queue frame onto
+  \param control type of control frame
+  \param data pointer to payload data to be included in frame
+  \param datalen number of bytes of payload data
+  \return zero on success, non-zero on failure
+
+  The supplied payload data is copied into the frame, so the caller's copy
+  is not modified nor freed, and the resulting frame will retain a copy of
+  the data even if the caller frees their local copy.
+*/
+int ast_queue_control_data(struct ast_channel *chan, enum ast_control_frame_type control,
+			   const void *data, size_t datalen);
 
 /*! \brief Change channel name */
 void ast_change_name(struct ast_channel *chan, char *newname);

Modified: trunk/include/asterisk/frame.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/frame.h?rev=26093&r1=26092&r2=26093&view=diff
==============================================================================
--- trunk/include/asterisk/frame.h (original)
+++ trunk/include/asterisk/frame.h Tue May  9 09:25:57 2006
@@ -240,43 +240,26 @@
 #define AST_FORMAT_MAX_VIDEO	(1 << 24)
 #define AST_FORMAT_VIDEO_MASK   (((1 << 25)-1) & ~(AST_FORMAT_AUDIO_MASK))
 
-/* Control frame types */
-/*! Other end has hungup */
-#define AST_CONTROL_HANGUP		1
-/*! Local ring */
-#define AST_CONTROL_RING		2
-/*! Remote end is ringing */
-#define AST_CONTROL_RINGING 		3
-/*! Remote end has answered */
-#define AST_CONTROL_ANSWER		4
-/*! Remote end is busy */
-#define AST_CONTROL_BUSY		5
-/*! Make it go off hook */
-#define AST_CONTROL_TAKEOFFHOOK		6
-/*! Line is off hook */
-#define AST_CONTROL_OFFHOOK		7
-/*! Congestion (circuits busy) */
-#define AST_CONTROL_CONGESTION		8
-/*! Flash hook */
-#define AST_CONTROL_FLASH		9
-/*! Wink */
-#define AST_CONTROL_WINK		10
-/*! Set a low-level option */
-#define AST_CONTROL_OPTION		11
-/*! Key Radio */
-#define	AST_CONTROL_RADIO_KEY		12
-/*! Un-Key Radio */
-#define	AST_CONTROL_RADIO_UNKEY		13
-/*! Indicate PROGRESS */
-#define AST_CONTROL_PROGRESS            14
-/*! Indicate CALL PROCEEDING */
-#define AST_CONTROL_PROCEEDING		15
-/*! Indicate call is placed on hold */
-#define AST_CONTROL_HOLD			16
-/*! Indicate call is left from hold */
-#define AST_CONTROL_UNHOLD			17
-/*! Indicate video frame update */
-#define AST_CONTROL_VIDUPDATE		18
+enum ast_control_frame_type {
+	AST_CONTROL_HANGUP = 1,		/*! Other end has hungup */
+	AST_CONTROL_RING = 2,		/*! Local ring */
+	AST_CONTROL_RINGING = 3,	/*! Remote end is ringing */
+	AST_CONTROL_ANSWER = 4,		/*! Remote end has answered */
+	AST_CONTROL_BUSY = 5,		/*! Remote end is busy */
+	AST_CONTROL_TAKEOFFHOOK = 6,	/*! Make it go off hook */
+	AST_CONTROL_OFFHOOK = 7,	/*! Line is off hook */
+	AST_CONTROL_CONGESTION = 8,	/*! Congestion (circuits busy) */
+	AST_CONTROL_FLASH = 9,		/*! Flash hook */
+	AST_CONTROL_WINK = 10,		/*! Wink */
+	AST_CONTROL_OPTION = 11,	/*! Set a low-level option */
+	AST_CONTROL_RADIO_KEY = 12,	/*! Key Radio */
+	AST_CONTROL_RADIO_UNKEY = 13,	/*! Un-Key Radio */
+	AST_CONTROL_PROGRESS = 14,	/*! Indicate PROGRESS */
+	AST_CONTROL_PROCEEDING = 15,	/*! Indicate CALL PROCEEDING */
+	AST_CONTROL_HOLD = 16,		/*! Indicate call is placed on hold */
+	AST_CONTROL_UNHOLD = 17,	/*! Indicate call is left from hold */
+	AST_CONTROL_VIDUPDATE = 18,	/*! Indicate video frame update */
+};
 
 #define AST_SMOOTHER_FLAG_G729		(1 << 0)
 



More information about the asterisk-commits mailing list