#include <bayonne.h>
Public Types | |
enum | interface_t { IF_PSTN, IF_SPAN, IF_ISDN, IF_SS7, IF_INET, IF_NONE, IF_POTS = IF_PSTN } |
Telephony endpoint interface identifiers. More... | |
enum | calltype_t { NONE, INCOMING, OUTGOING, PICKUP, FORWARDED, RECALL, DIRECT, RINGING, VIRTUAL } |
Type of call session being processed. More... | |
enum | bridge_t { BR_TDM, BR_INET, BR_SOFT, BR_GATE, BR_NONE } |
Type of bridge used for joining ports. More... | |
enum | state_t { STATE_INITIAL = 0, STATE_IDLE, STATE_RESET, STATE_RELEASE, STATE_BUSY, STATE_DOWN, STATE_RING, STATE_PICKUP, STATE_SEIZE, STATE_ANSWER, STATE_STEP, STATE_EXEC, STATE_THREAD, STATE_CLEAR, STATE_INKEY, STATE_INPUT, STATE_READ, STATE_COLLECT, STATE_DIAL, STATE_XFER, STATE_REFER, STATE_HOLD, STATE_RECALL, STATE_TONE, STATE_DTMF, STATE_PLAY, STATE_RECORD, STATE_JOIN, STATE_WAIT, STATE_CALLING, STATE_CONNECT, STATE_RECONNECT, STATE_HUNTING, STATE_SLEEP, STATE_START, STATE_HANGUP, STATE_LIBRESET, STATE_WAITKEY, STATE_LIBWAIT, STATE_IRESET, STATE_FINAL, STATE_SUSPEND = STATE_DOWN, STATE_STANDBY = STATE_DOWN, STATE_LIBEXEC = STATE_EXEC, STATE_RINGING = STATE_RING, STATE_RUNNING = STATE_STEP, STATE_THREADING = STATE_THREAD } |
Call processing states offered in core library. More... | |
enum | signal_t { SIGNAL_EXIT = 0, SIGNAL_ERROR, SIGNAL_TIMEOUT, SIGNAL_DTMF, SIGNAL_0, SIGNAL_1, SIGNAL_2, SIGNAL_3, SIGNAL_4, SIGNAL_5, SIGNAL_6, SIGNAL_7, SIGNAL_8, SIGNAL_9, SIGNAL_STAR, SIGNAL_POUND, SIGNAL_A, SIGNAL_OVERRIDE = SIGNAL_A, SIGNAL_B, SIGNAL_FLASH = SIGNAL_B, SIGNAL_C, SIGNAL_IMMEDIATE = SIGNAL_C, SIGNAL_D, SIGNAL_PRIORITY = SIGNAL_D, SIGNAL_RING, SIGNAL_TONE, SIGNAL_EVENT, SIGNAL_WINK, SIGNAL_CHILD, SIGNAL_FAIL, SIGNAL_PICKUP, SIGNAL_PART, SIGNAL_INVALID, SIGNAL_PARENT, SIGNAL_WAIT, SIGNAL_HANGUP = SIGNAL_EXIT } |
Signaled interpreter events. More... | |
enum | event_t { MSGPORT_WAKEUP = 0, MSGPORT_SHUTDOWN, MSGPORT_LOGGING, MSGPORT_REGISTER, ENTER_STATE = 100, EXIT_STATE, EXIT_THREAD, EXIT_TIMER, EXIT_PARTING, NULL_EVENT, ERROR_STATE, ENTER_HUNTING, EXIT_HUNTING, ENTER_RECONNECT, EXIT_RECONNECT, RECALL_RECONNECT, EXIT_SCRIPT, STEP_SCRIPT, START_DIRECT = 200, START_INCOMING, START_OUTGOING, START_RECALL, START_FORWARDED, START_RINGING, START_HUNTING, START_REFER, STOP_SCRIPT, STOP_DISCONNECT, STOP_PARENT, CANCEL_CHILD, DETACH_CHILD, CHILD_RUNNING, CHILD_FAILED, CHILD_INVALID, CHILD_EXPIRED, CHILD_BUSY, CHILD_FAX, CHILD_DND, CHILD_AWAY, CHILD_NOCODEC, CHILD_OFFLINE, START_SCRIPT = START_INCOMING, START_SELECTED = START_OUTGOING, START_TRANSFER = START_REFER, ENTER_LIBEXEC = 300, EXIT_LIBEXEC, HEAD_LIBEXEC, ARGS_LIBEXEC, GOT_LIBEXEC, READ_LIBEXEC, DROP_LIBEXEC, STAT_LIBEXEC, PROMPT_LIBEXEC, CLEAR_LIBEXEC, WAIT_LIBEXEC, RECORD_LIBEXEC, REPLAY_LIBEXEC, RESTART_LIBEXEC, TONE_LIBEXEC, XFER_LIBEXEC, POST_LIBEXEC, ERROR_LIBEXEC, TIMER_EXPIRED = 400, LINE_WINK, LINE_PICKUP, LINE_HANGUP, LINE_DISCONNECT, LINE_ON_HOOK, LINE_OFF_HOOK, RING_ON, RING_OFF, RING_STOP, LINE_CALLER_ID, RINGING_DID, DEVICE_BLOCKED, DEVICE_UNBLOCKED, DEVICE_OPEN, DEVICE_CLOSE, DSP_READY, RING_SYNC, CALL_DETECT = 500, CALL_CONNECTED, CALL_RELEASED, CALL_ACCEPTED, CALL_ANSWERED, CALL_HOLD, CALL_HOLDING = CALL_HOLD, CALL_NOHOLD, CALL_DIGITS, CALL_OFFERED, CALL_ANI, CALL_ACTIVE, CALL_NOACTIVE, CALL_BILLING, CALL_RESTART, CALL_SETSTATE, CALL_FAILURE, CALL_ALERTING, CALL_INFO, CALL_BUSY, CALL_DIVERT, CALL_FACILITY, CALL_FRAME, CALL_NOTIFY, CALL_NSI, CALL_RINGING, CALL_DISCONNECT, CALL_CLEARED, CALL_PROCEEDING, RESTART_FAILED, RELEASE_FAILED, START_RING = 600, STOP_RING, CLEAR_TIMESLOT, START_FLASH, STOP_FLASH, DIAL_CONNECT, DIAL_TIMEOUT, DIAL_FAILED, DIAL_INVALID, DIAL_BUSY, DIAL_FAX, DIAL_PAM, DIAL_DND, DIAL_AWAY, DIAL_OFFLINE, DIAL_NOCODEC, DIAL_MACHINE = DIAL_PAM, AUDIO_IDLE = 700, AUDIO_ACTIVE, AUDIO_EXPIRED, INPUT_PENDING, OUTPUT_PENDING, AUDIO_BUFFER, TONE_IDLE, DTMF_KEYDOWN, DTMF_KEYSYNC, DTMF_KEYUP, TONE_START, TONE_STOP, AUDIO_START, AUDIO_STOP, DTMF_GENDOWN, DTMF_GENUP, AUDIO_SYNC, AUDIO_RECONNECT, AUDIO_DISCONNECT, PEER_RECONNECT, PEER_DISCONNECT, PEER_REFER, DTMF_GENTONE = DTMF_GENUP, MAKE_TEST = 800, MAKE_BUSY, MAKE_IDLE, MAKE_DOWN, MAKE_UP, MAKE_EXPIRED, ENABLE_LOGGING, DISABLE_LOGGING, PART_EXPIRED, PART_EXITING, PART_DISCONNECT, JOIN_PEER, PEER_WAITING, RELOCATE_REQUEST, RELOCATE_ACCEPT, RELOCATE_REJECT, START_RELOCATE, STREAM_ACTIVE, STREAM_PASSIVE, JOIN_RECALL, DROP_RECALL, DROP_REFER, ENTER_RESUME = MAKE_UP, ENTER_SUSPEND = MAKE_DOWN, SYSTEM_DOWN = 900, DRIVER_SPECIFIC = 1000 } |
Primary event identifiers. More... | |
enum | result_t { RESULT_SUCCESS = 0, RESULT_TIMEOUT, RESULT_INVALID, RESULT_PENDING, RESULT_COMPLETE, RESULT_FAILED, RESULT_BADPATH = 254, RESULT_OFFLINE = 255 } |
typedef uint16_t | timeslot_t |
typedef int32_t | rpcint_t |
typedef rpcint_t | rpcbool_t |
typedef void(* | rpcmethod_t )(BayonneRPC *rpc) |
A rpc method handler. | |
typedef bool(BayonneSession::* | Handler )(Event *event) |
The current state handler in effect for a given channel to receive events. | |
Public Member Functions | |
void | md5_hash (char *out, const char *source) |
Compute md5 hashes. | |
Static Public Member Functions | |
static void | snmptrap (unsigned id, const char *descr=NULL) |
static void | allocate (timeslot_t timeslots, ScriptCommand *pointer=NULL, timeslot_t overdraft=0) |
Allocates the maximum number of timeslots the server will use as a whole and attaches a given server to the library. | |
static const char * | getRegistryId (const char *id) |
static BayonneDriver * | getDriverTag (const char *id) |
static Audio::Encoding | getEncoding (const char *cp) |
static void | allocateLocal (void) |
Allocate local script engine sessions, if needed. | |
static void | addConfig (const char *cfgfile) |
Add config file entry. | |
static void | waitLoaded (void) |
Wait for live flag. | |
static unsigned long | uptime (void) |
Get server uptime. | |
static ScriptCompiler * | reload (void) |
Request active scripts to be recompiled from the library. | |
static void | down (void) |
Used to down the server from the library. | |
static bool | service (const char *service) |
Sets server service level from the library. | |
static const char * | getRunLevel (void) |
Get service level. | |
static BayonneSession * | getSession (timeslot_t timeslot) |
Returns a session pointer for a server timeslot. | |
static ScriptImage ** | getLocalImage (timeslot_t timeslot) |
Returns a local image pointer for a server timeslot. | |
static BayonneSession * | startDialing (const char *dial, const char *name, const char *caller, const char *display, BayonneSession *parent=NULL, const char *manager=NULL, const char *secret=NULL) |
Start a dialing session. | |
static BayonneSession * | getSid (const char *id) |
Returns a session pointer for a string identifier. | |
static timeslot_t | toTimeslot (const char *id) |
Returns a server timeslot number for a string identifier. | |
static timeslot_t | getTimeslotsUsed (void) |
Return total library timeslots used (highest used). | |
static timeslot_t | getTimeslotCount (void) |
Return total timeslots allocated for the server. | |
static timeslot_t | getAvailTimeslots (void) |
Return remaining timeslots available to allocate driver ports into. | |
static Handler | getState (const char *name) |
Map a state name into a handler. | |
static int | getDigit (char dtmf) |
Convert a dtmf character into a 0-15 number reference. | |
static char | getChar (int dtmf) |
Convert a dtmf digit number into it's ascii code. | |
static bool | matchDigits (const char *digits, const char *match, bool partial=false) |
A function to support pattern matching and templates for digit strings. | |
static ScriptImage * | useImage (void) |
Use the current compiled script image; mark as in use. | |
static void | endImage (ScriptImage *image) |
Release a script image in use. | |
static bool | loadPlugin (const char *path) |
Load a plugin module. | |
static bool | loadMonitor (const char *path) |
Load a monitoring/management module. | |
static bool | loadAudio (const char *path) |
Load a bgm/audio processing module for continues audio. | |
static void | errlog (const char *level, const char *fmt,...) |
static bool | getUserdata (void) |
static void | addTrap4 (const char *addr) |
Static Public Attributes | |
static char | dtmf_keymap [256] |
static timeout_t | step_timer |
static timeout_t | reset_timer |
static timeout_t | exec_timer |
static unsigned | compile_count |
static volatile bool | image_loaded |
static BayonneTranslator * | init_translator |
static const char * | init_voicelib |
static const char * | trap_community |
static AtomicCounter | libexec_count |
static statetab | states [] |
Table of states ordered by id. | |
static Mutex | serialize |
A mutex to serialize any direct console I/O operations. | |
static ThreadLock | reloading |
A mutex to serialize reload requests. | |
static Traffic | total_call_attempts |
master traffic counters for call attempts and call completions. | |
static Traffic | total_call_complete |
static volatile unsigned short | total_active_calls |
Static Protected Attributes | |
static BayonneSession ** | timeslots |
static ScriptImage ** | localimages |
static char * | status |
static ScriptCommand * | server |
static unsigned | ts_trk |
static unsigned | ts_ext |
static timeslot_t | ts_limit |
static timeslot_t | ts_count |
static timeslot_t | ts_used |
static std::ostream * | logging |
static const char * | path_prompts |
static const char * | path_tmpfs |
static const char * | path_tmp |
static unsigned | idle_count |
static unsigned | idle_limit |
static bool | shutdown_flag |
static char | sla [64] |
static time_t | start_time |
static time_t | reload_time |
Classes | |
struct | Event |
The event data structure includes the event identifier and any paramaters. More... | |
struct | libaudio_t |
struct | regauth_t |
class | Ring |
This is an internal ring class for synchronized ringing. More... | |
struct | RPCDefine |
This is a structure used to initialize XMLRPC method tables. More... | |
class | RPCNode |
This is a little class used to associate XMLRPC call method tables with our server. More... | |
struct | State |
The primary state data structure. More... | |
struct | statetab |
A list of each state and a description. More... | |
class | Traffic |
This is a class used for collecting statistics for call traffic measurement, such as might be used by MRTG. More... |
typedef uint16_t ost::Bayonne::timeslot_t |
typedef int32_t ost::Bayonne::rpcint_t |
typedef rpcint_t ost::Bayonne::rpcbool_t |
typedef void(* ost::Bayonne::rpcmethod_t)(BayonneRPC *rpc) |
A rpc method handler.
typedef bool(BayonneSession::* ost::Bayonne::Handler)(Event *event) |
The current state handler in effect for a given channel to receive events.
This is done by a direct method pointer for fast processing.
Call processing states offered in core library.
This list must be ordered to match the entries in the state table (statetab).
Signaled interpreter events.
These can be masked and accessed through ^xxx handlers in the scripting language.
Primary event identifiers.
These are the events that can be passed into the Bayonne state machine. They are broken into categories.
static void ost::Bayonne::snmptrap | ( | unsigned | id, | |
const char * | descr = NULL | |||
) | [static] |
static void ost::Bayonne::allocate | ( | timeslot_t | timeslots, | |
ScriptCommand * | pointer = NULL , |
|||
timeslot_t | overdraft = 0 | |||
) | [static] |
Allocates the maximum number of timeslots the server will use as a whole and attaches a given server to the library.
timeslots | to allocate. | |
pointer | to server shell. |
static const char* ost::Bayonne::getRegistryId | ( | const char * | id | ) | [static] |
static BayonneDriver* ost::Bayonne::getDriverTag | ( | const char * | id | ) | [static] |
static Audio::Encoding ost::Bayonne::getEncoding | ( | const char * | cp | ) | [static] |
static void ost::Bayonne::allocateLocal | ( | void | ) | [static] |
Allocate local script engine sessions, if needed.
static void ost::Bayonne::addConfig | ( | const char * | cfgfile | ) | [static] |
Add config file entry.
void ost::Bayonne::md5_hash | ( | char * | out, | |
const char * | source | |||
) |
Compute md5 hashes.
..
md5 | output string | |
string | to hash |
static void ost::Bayonne::waitLoaded | ( | void | ) | [static] |
Wait for live flag.
..
static unsigned long ost::Bayonne::uptime | ( | void | ) | [static] |
Get server uptime.
static ScriptCompiler* ost::Bayonne::reload | ( | void | ) | [static] |
Request active scripts to be recompiled from the library.
Reimplemented in ost::BayonneDriver.
static void ost::Bayonne::down | ( | void | ) | [static] |
Used to down the server from the library.
static bool ost::Bayonne::service | ( | const char * | service | ) | [static] |
Sets server service level from the library.
service | level or NULL to clear. |
static const char* ost::Bayonne::getRunLevel | ( | void | ) | [static] |
Get service level.
return | service level |
static BayonneSession* ost::Bayonne::getSession | ( | timeslot_t | timeslot | ) | [static] |
Returns a session pointer for a server timeslot.
Each server timeslot can map to a single session object.
timeslot | number in server. |
static ScriptImage** ost::Bayonne::getLocalImage | ( | timeslot_t | timeslot | ) | [static] |
Returns a local image pointer for a server timeslot.
timeslot | number in server. |
static BayonneSession* ost::Bayonne::startDialing | ( | const char * | dial, | |
const char * | name, | |||
const char * | caller, | |||
const char * | display, | |||
BayonneSession * | parent = NULL , |
|||
const char * | manager = NULL , |
|||
const char * | secret = NULL | |||
) | [static] |
Start a dialing session.
WARNING: this function leaves the channel locked so it can be examined by the returning task.
dialing | string or uri. | |
script | to run or start. | |
caller | id for this call. | |
display | name for this call. | |
parent | to join to. |
static BayonneSession* ost::Bayonne::getSid | ( | const char * | id | ) | [static] |
Returns a session pointer for a string identifier.
This can be for a transaction id, a call id, or other unique identifiers which can be mapped into a single timeslot.
id | session identifier string. |
static timeslot_t ost::Bayonne::toTimeslot | ( | const char * | id | ) | [static] |
Returns a server timeslot number for a string identifier.
id | for a session. |
static timeslot_t ost::Bayonne::getTimeslotsUsed | ( | void | ) | [inline, static] |
Return total library timeslots used (highest used).
static timeslot_t ost::Bayonne::getTimeslotCount | ( | void | ) | [inline, static] |
Return total timeslots allocated for the server.
static timeslot_t ost::Bayonne::getAvailTimeslots | ( | void | ) | [inline, static] |
Return remaining timeslots available to allocate driver ports into.
static Handler ost::Bayonne::getState | ( | const char * | name | ) | [static] |
Map a state name into a handler.
Used for logging requests. Uses the statetab.
name | of state to lookup. |
static int ost::Bayonne::getDigit | ( | char | dtmf | ) | [static] |
Convert a dtmf character into a 0-15 number reference.
dtmf | digit as ascii |
static char ost::Bayonne::getChar | ( | int | dtmf | ) | [static] |
Convert a dtmf digit number into it's ascii code.
dtmf | digit number. |
static bool ost::Bayonne::matchDigits | ( | const char * | digits, | |
const char * | match, | |||
bool | partial = false | |||
) | [static] |
A function to support pattern matching and templates for digit strings.
This is used for digit @xxx:... entries and the route command.
digits | to use. | |
match | digit pattern to match against. | |
partial | accept match if true. |
static ScriptImage* ost::Bayonne::useImage | ( | void | ) | [static] |
Use the current compiled script image; mark as in use.
static void ost::Bayonne::endImage | ( | ScriptImage * | image | ) | [static] |
Release a script image in use.
If no active calls are using it and it's no longer the top active image, purge from memory.
image | to compiled script from useImage. |
static bool ost::Bayonne::loadPlugin | ( | const char * | path | ) | [static] |
Load a plugin module.
path | id of plugin. |
static bool ost::Bayonne::loadMonitor | ( | const char * | path | ) | [static] |
Load a monitoring/management module.
path | id of plugin. |
static bool ost::Bayonne::loadAudio | ( | const char * | path | ) | [static] |
Load a bgm/audio processing module for continues audio.
path | id of plugin. |
static void ost::Bayonne::errlog | ( | const char * | level, | |
const char * | fmt, | |||
... | ||||
) | [static] |
static bool ost::Bayonne::getUserdata | ( | void | ) | [static] |
static void ost::Bayonne::addTrap4 | ( | const char * | addr | ) | [static] |
char ost::Bayonne::dtmf_keymap[256] [static] |
BayonneSession** ost::Bayonne::timeslots [static, protected] |
ScriptImage** ost::Bayonne::localimages [static, protected] |
char* ost::Bayonne::status [static, protected] |
ScriptCommand* ost::Bayonne::server [static, protected] |
unsigned ost::Bayonne::ts_trk [static, protected] |
unsigned ost::Bayonne::ts_ext [static, protected] |
timeslot_t ost::Bayonne::ts_limit [static, protected] |
timeslot_t ost::Bayonne::ts_count [static, protected] |
timeslot_t ost::Bayonne::ts_used [static, protected] |
std::ostream* ost::Bayonne::logging [static, protected] |
const char* ost::Bayonne::path_prompts [static, protected] |
const char* ost::Bayonne::path_tmpfs [static, protected] |
const char* ost::Bayonne::path_tmp [static, protected] |
unsigned ost::Bayonne::idle_count [static, protected] |
unsigned ost::Bayonne::idle_limit [static, protected] |
bool ost::Bayonne::shutdown_flag [static, protected] |
char ost::Bayonne::sla[64] [static, protected] |
time_t ost::Bayonne::start_time [static, protected] |
time_t ost::Bayonne::reload_time [static, protected] |
timeout_t ost::Bayonne::step_timer [static] |
timeout_t ost::Bayonne::reset_timer [static] |
Reimplemented in ost::BayonneDriver.
timeout_t ost::Bayonne::exec_timer [static] |
unsigned ost::Bayonne::compile_count [static] |
volatile bool ost::Bayonne::image_loaded [static] |
const char* ost::Bayonne::init_voicelib [static] |
const char* ost::Bayonne::trap_community [static] |
AtomicCounter ost::Bayonne::libexec_count [static] |
statetab ost::Bayonne::states[] [static] |
Table of states ordered by id.
Mutex ost::Bayonne::serialize [static] |
A mutex to serialize any direct console I/O operations.
Sometimes used to serialize other kinds of time insensitive requests.
ThreadLock ost::Bayonne::reloading [static] |
A mutex to serialize reload requests.
Traffic ost::Bayonne::total_call_attempts [static] |
master traffic counters for call attempts and call completions.
Traffic ost::Bayonne::total_call_complete [static] |
volatile unsigned short ost::Bayonne::total_active_calls [static] |