diff --git a/include/asterisk/frame.h b/include/asterisk/frame.h index bab5e0b56f..11271ea95f 100755 --- a/include/asterisk/frame.h +++ b/include/asterisk/frame.h @@ -20,6 +20,9 @@ extern "C" { #endif +#include +#include + /* A frame of data read used to communicate between between channels and applications */ struct ast_frame { @@ -84,6 +87,37 @@ struct ast_frame_chain { #define AST_CONTROL_TAKEOFFHOOK 6 /* Make it go off hook */ #define AST_CONTROL_OFFHOOK 7 /* Line is off hook */ #define AST_CONTROL_CONGESTION 8 /* Congestion (circuits busy) */ +#define AST_CONTROL_FLASH 9 /* Flash hook */ +#define AST_CONTROL_WINK 10 /* Wink */ +#define AST_CONTROL_OPTION 11 /* Set a low-level option */ + +/* Option identifiers and flags */ +#define AST_OPTION_FLAG_REQUEST 0 +#define AST_OPTION_FLAG_ACCEPT 1 +#define AST_OPTION_FLAG_REJECT 2 +#define AST_OPTION_FLAG_QUERY 4 +#define AST_OPTION_FLAG_ANSWER 5 +#define AST_OPTION_FLAG_WTF 6 + +#define AST_OPTION_TONE_VERIFY 1 /* Verify touchtones by muting audio + transmission (and reception) and + verify the tone is still present */ + +struct ast_option_header { + /* Always keep in network byte order */ +#if __BYTE_ORDER == __BIG_ENDIAN + u_int16_t flag:3; + u_int16_t option:13; +#else +#if __BYTE_ORDER == __LITTLE_ENDIAN + u_int16_t option:13; + u_int16_t flag:3; +#else +#error Byte order not defined +#endif +#endif + u_int8_t data[0]; +}; /* Request a frame be allocated. source is an optional source of the frame, len is the requested length, or "0" if the caller will supply the buffer */ @@ -110,6 +144,9 @@ struct ast_frame *ast_fr_fdread(int fd); /* Write a frame to an fd */ int ast_fr_fdwrite(int fd, struct ast_frame *frame); +/* Send a hangup (NULL equivalent) on an fd */ +int ast_fr_fdhangup(int fd); + /* Get a format by its name */ extern int ast_getformatbyname(char *name);