SMDI support for Asterisk. More...
#include <termios.h>#include <time.h>#include "asterisk/config.h"#include "asterisk/module.h"#include "asterisk/astobj.h"

Go to the source code of this file.
Data Structures | |
| struct | ast_smdi_md_message |
| An SMDI message desk message. More... | |
| struct | ast_smdi_mwi_message |
| An SMDI message waiting indicator message. More... | |
Defines | |
| #define | SMDI_MAX_FILENAME_LEN 256 |
| #define | SMDI_MAX_STATION_NUM_LEN 10 |
| #define | SMDI_MESG_DESK_NUM_LEN 3 |
| #define | SMDI_MESG_DESK_TERM_LEN 4 |
| #define | SMDI_MWI_FAIL_CAUSE_LEN 3 |
Functions | |
| struct ast_smdi_interface * | ast_smdi_interface_find (const char *iface_name) attribute_weak |
| Find an SMDI interface with the specified name. | |
| void | ast_smdi_interface_unref (struct ast_smdi_interface *iface) attribute_weak |
| void | ast_smdi_md_message_destroy (struct ast_smdi_md_message *msg) attribute_weak |
| ast_smdi_md_message destructor. | |
| struct ast_smdi_md_message * | ast_smdi_md_message_pop (struct ast_smdi_interface *iface) attribute_weak |
| Get the next SMDI message from the queue. | |
| void | ast_smdi_md_message_putback (struct ast_smdi_interface *iface, struct ast_smdi_md_message *msg) attribute_weak |
| Put an SMDI message back in the front of the queue. | |
| struct ast_smdi_md_message * | ast_smdi_md_message_wait (struct ast_smdi_interface *iface, int timeout) attribute_weak |
| Get the next SMDI message from the queue. | |
| void | ast_smdi_mwi_message_destroy (struct ast_smdi_mwi_message *msg) attribute_weak |
| ast_smdi_mwi_message destructor. | |
| struct ast_smdi_mwi_message * | ast_smdi_mwi_message_pop (struct ast_smdi_interface *iface) attribute_weak |
| Get the next SMDI message from the queue. | |
| void | ast_smdi_mwi_message_putback (struct ast_smdi_interface *iface, struct ast_smdi_mwi_message *msg) attribute_weak |
| Put an SMDI message back in the front of the queue. | |
| struct ast_smdi_mwi_message * | ast_smdi_mwi_message_wait (struct ast_smdi_interface *iface, int timeout) attribute_weak |
| Get the next SMDI message from the queue. | |
| struct ast_smdi_mwi_message * | ast_smdi_mwi_message_wait_station (struct ast_smdi_interface *iface, int timeout, const char *station) attribute_weak |
| int | ast_smdi_mwi_set (struct ast_smdi_interface *iface, const char *mailbox) attribute_weak |
| Set the MWI indicator for a mailbox. | |
| int | ast_smdi_mwi_unset (struct ast_smdi_interface *iface, const char *mailbox) attribute_weak |
| Unset the MWI indicator for a mailbox. | |
SMDI support for Asterisk.
Definition in file smdi.h.
| struct ast_smdi_interface* ast_smdi_interface_find | ( | const char * | iface_name | ) | [read] |
Find an SMDI interface with the specified name.
| iface_name | the name/port of the interface to search for. |
Definition at line 528 of file res_smdi.c.
References ASTOBJ_CONTAINER_FIND, and smdi_ifaces.
Referenced by load_config(), mkintf(), and smdi_msg_retrieve_read().
00529 { 00530 return (ASTOBJ_CONTAINER_FIND(&smdi_ifaces, iface_name)); 00531 }
| void ast_smdi_interface_unref | ( | struct ast_smdi_interface * | iface | ) |
Definition at line 160 of file res_smdi.c.
References ast_smdi_interface_destroy(), and ASTOBJ_UNREF.
Referenced by destroy_dahdi_pvt().
00161 { 00162 ASTOBJ_UNREF(iface, ast_smdi_interface_destroy); 00163 }
| void ast_smdi_md_message_destroy | ( | struct ast_smdi_md_message * | msg | ) |
ast_smdi_md_message destructor.
Definition at line 725 of file res_smdi.c.
References ast_free.
Referenced by ast_smdi_interface_destroy(), smdi_msg_datastore_destroy(), smdi_msg_retrieve_read(), smdi_read(), ss_thread(), and unref_msg().
00726 { 00727 ast_free(msg); 00728 }
| struct ast_smdi_md_message* ast_smdi_md_message_pop | ( | struct ast_smdi_interface * | iface | ) | [read] |
Get the next SMDI message from the queue.
| iface | a pointer to the interface to use. |
This function pulls the first unexpired message from the SMDI message queue on the specified interface. It will purge all expired SMDI messages before returning.
Definition at line 499 of file res_smdi.c.
References SMDI_MD, and smdi_msg_pop().
00500 { 00501 return smdi_msg_pop(iface, SMDI_MD); 00502 }
| void ast_smdi_md_message_putback | ( | struct ast_smdi_interface * | iface, | |
| struct ast_smdi_md_message * | msg | |||
| ) |
Put an SMDI message back in the front of the queue.
| iface | a pointer to the interface to use. | |
| md_msg | a pointer to the message to use. |
This function puts a message back in the front of the specified queue. It should be used if a message was popped but is not going to be processed for some reason, and the message needs to be returned to the queue.
Definition at line 230 of file res_smdi.c.
References ast_cond_broadcast(), ast_mutex_lock(), ast_mutex_unlock(), ASTOBJ_CONTAINER_LINK_START, ast_smdi_interface::md_q, ast_smdi_interface::md_q_cond, and ast_smdi_interface::md_q_lock.
00231 { 00232 ast_mutex_lock(&iface->md_q_lock); 00233 ASTOBJ_CONTAINER_LINK_START(&iface->md_q, md_msg); 00234 ast_cond_broadcast(&iface->md_q_cond); 00235 ast_mutex_unlock(&iface->md_q_lock); 00236 }
| struct ast_smdi_md_message* ast_smdi_md_message_wait | ( | struct ast_smdi_interface * | iface, | |
| int | timeout | |||
| ) | [read] |
Get the next SMDI message from the queue.
| iface | a pointer to the interface to use. | |
| timeout | the time to wait before returning in milliseconds. |
This function pulls a message from the SMDI message queue on the specified interface. If no message is available this function will wait the specified amount of time before returning.
Definition at line 504 of file res_smdi.c.
References SMDI_MD, and smdi_message_wait().
Referenced by ss_thread().
00505 { 00506 struct ast_flags options = { 0 }; 00507 return smdi_message_wait(iface, timeout, SMDI_MD, NULL, options); 00508 }
| void ast_smdi_mwi_message_destroy | ( | struct ast_smdi_mwi_message * | msg | ) |
ast_smdi_mwi_message destructor.
Definition at line 730 of file res_smdi.c.
References ast_free.
Referenced by ast_smdi_interface_destroy(), run_externnotify(), smdi_read(), and unref_msg().
00731 { 00732 ast_free(msg); 00733 }
| struct ast_smdi_mwi_message* ast_smdi_mwi_message_pop | ( | struct ast_smdi_interface * | iface | ) | [read] |
Get the next SMDI message from the queue.
| iface | a pointer to the interface to use. |
This function pulls the first unexpired message from the SMDI message queue on the specified interface. It will purge all expired SMDI messages before returning.
Definition at line 510 of file res_smdi.c.
References smdi_msg_pop(), and SMDI_MWI.
00511 { 00512 return smdi_msg_pop(iface, SMDI_MWI); 00513 }
| void ast_smdi_mwi_message_putback | ( | struct ast_smdi_interface * | iface, | |
| struct ast_smdi_mwi_message * | msg | |||
| ) |
Put an SMDI message back in the front of the queue.
| iface | a pointer to the interface to use. | |
| mwi_msg | a pointer to the message to use. |
This function puts a message back in the front of the specified queue. It should be used if a message was popped but is not going to be processed for some reason, and the message needs to be returned to the queue.
Definition at line 238 of file res_smdi.c.
References ast_cond_broadcast(), ast_mutex_lock(), ast_mutex_unlock(), ASTOBJ_CONTAINER_LINK_START, ast_smdi_interface::mwi_q, ast_smdi_interface::mwi_q_cond, and ast_smdi_interface::mwi_q_lock.
00239 { 00240 ast_mutex_lock(&iface->mwi_q_lock); 00241 ASTOBJ_CONTAINER_LINK_START(&iface->mwi_q, mwi_msg); 00242 ast_cond_broadcast(&iface->mwi_q_cond); 00243 ast_mutex_unlock(&iface->mwi_q_lock); 00244 }
| struct ast_smdi_mwi_message* ast_smdi_mwi_message_wait | ( | struct ast_smdi_interface * | iface, | |
| int | timeout | |||
| ) | [read] |
Get the next SMDI message from the queue.
| iface | a pointer to the interface to use. | |
| timeout | the time to wait before returning in milliseconds. |
This function pulls a message from the SMDI message queue on the specified interface. If no message is available this function will wait the specified amount of time before returning.
Definition at line 515 of file res_smdi.c.
References smdi_message_wait(), and SMDI_MWI.
00516 { 00517 struct ast_flags options = { 0 }; 00518 return smdi_message_wait(iface, timeout, SMDI_MWI, NULL, options); 00519 }
| struct ast_smdi_mwi_message* ast_smdi_mwi_message_wait_station | ( | struct ast_smdi_interface * | iface, | |
| int | timeout, | |||
| const char * | station | |||
| ) | [read] |
Definition at line 521 of file res_smdi.c.
References smdi_message_wait(), and SMDI_MWI.
Referenced by run_externnotify().
00523 { 00524 struct ast_flags options = { 0 }; 00525 return smdi_message_wait(iface, timeout, SMDI_MWI, station, options); 00526 }
| int ast_smdi_mwi_set | ( | struct ast_smdi_interface * | iface, | |
| const char * | mailbox | |||
| ) |
Set the MWI indicator for a mailbox.
| iface | the interface to use. | |
| mailbox | the mailbox to use. |
Definition at line 220 of file res_smdi.c.
References smdi_toggle_mwi().
Referenced by poll_mailbox(), and run_externnotify().
00221 { 00222 return smdi_toggle_mwi(iface, mailbox, 1); 00223 }
| int ast_smdi_mwi_unset | ( | struct ast_smdi_interface * | iface, | |
| const char * | mailbox | |||
| ) |
Unset the MWI indicator for a mailbox.
| iface | the interface to use. | |
| mailbox | the mailbox to use. |
Definition at line 225 of file res_smdi.c.
References smdi_toggle_mwi().
Referenced by poll_mailbox(), and run_externnotify().
00226 { 00227 return smdi_toggle_mwi(iface, mailbox, 0); 00228 }
1.6.2