root/src/sangoma_pri.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*****************************************************************************
   2  * libsangoma.c AFT T1/E1: HDLC API Code Library
   3  *
   4  * Author(s):   Anthony Minessale II <anthmct@yahoo.com>
   5  *              Nenad Corbic <ncorbic@sangoma.com>
   6  *
   7  * Copyright:   (c) 2005 Anthony Minessale II
   8  *
   9  *              This program is free software; you can redistribute it and/or
  10  *              modify it under the terms of the GNU General Public License
  11  *              as published by the Free Software Foundation; either version
  12  *              2 of the License, or (at your option) any later version.
  13  * ============================================================================
  14  */
  15 
  16 #ifndef _SANGOMA_PRI_H
  17 #define _SANGOMA_PRI_H
  18 #include <libpri.h>
  19 #include <pri_internal.h>
  20 
  21 
  22 #define SANGOMA_MAX_CHAN_PER_SPAN 32
  23 
  24 typedef enum {
  25         SANGOMA_PRI_EVENT_ANY = 0,
  26         SANGOMA_PRI_EVENT_DCHAN_UP = PRI_EVENT_DCHAN_UP,
  27         SANGOMA_PRI_EVENT_DCHAN_DOWN = PRI_EVENT_DCHAN_DOWN,
  28         SANGOMA_PRI_EVENT_RESTART = PRI_EVENT_RESTART,
  29         SANGOMA_PRI_EVENT_CONFIG_ERR = PRI_EVENT_CONFIG_ERR,
  30         SANGOMA_PRI_EVENT_RING = PRI_EVENT_RING,
  31         SANGOMA_PRI_EVENT_HANGUP = PRI_EVENT_HANGUP,
  32         SANGOMA_PRI_EVENT_RINGING = PRI_EVENT_RINGING,
  33         SANGOMA_PRI_EVENT_ANSWER = PRI_EVENT_ANSWER,
  34         SANGOMA_PRI_EVENT_HANGUP_ACK = PRI_EVENT_HANGUP_ACK,
  35         SANGOMA_PRI_EVENT_RESTART_ACK = PRI_EVENT_RESTART_ACK,
  36         SANGOMA_PRI_EVENT_FACNAME = PRI_EVENT_FACNAME,
  37         SANGOMA_PRI_EVENT_INFO_RECEIVED = PRI_EVENT_INFO_RECEIVED,
  38         SANGOMA_PRI_EVENT_PROCEEDING = PRI_EVENT_PROCEEDING,
  39         SANGOMA_PRI_EVENT_SETUP_ACK = PRI_EVENT_SETUP_ACK,
  40         SANGOMA_PRI_EVENT_HANGUP_REQ = PRI_EVENT_HANGUP_REQ,
  41         SANGOMA_PRI_EVENT_NOTIFY = PRI_EVENT_NOTIFY,
  42         SANGOMA_PRI_EVENT_PROGRESS = PRI_EVENT_PROGRESS,
  43         SANGOMA_PRI_EVENT_KEYPAD_DIGIT = PRI_EVENT_KEYPAD_DIGIT
  44 } sangoma_pri_event_t;
  45 
  46 typedef enum {
  47         SANGOMA_PRI_NETWORK = PRI_NETWORK,
  48         SANGOMA_PRI_CPE = PRI_CPE
  49 } sangoma_pri_node_t;
  50 
  51 typedef enum {
  52         SANGOMA_PRI_SWITCH_UNKNOWN = PRI_SWITCH_UNKNOWN,
  53         SANGOMA_PRI_SWITCH_NI2 = PRI_SWITCH_NI2,                        
  54         SANGOMA_PRI_SWITCH_DMS100 = PRI_SWITCH_DMS100,
  55         SANGOMA_PRI_SWITCH_LUCENT5E = PRI_SWITCH_LUCENT5E,
  56         SANGOMA_PRI_SWITCH_ATT4ESS = PRI_SWITCH_ATT4ESS,
  57         SANGOMA_PRI_SWITCH_EUROISDN_E1 = PRI_SWITCH_EUROISDN_E1,
  58         SANGOMA_PRI_SWITCH_EUROISDN_T1 = PRI_SWITCH_EUROISDN_T1,
  59         SANGOMA_PRI_SWITCH_NI1 = PRI_SWITCH_NI1,
  60         SANGOMA_PRI_SWITCH_GR303_EOC = PRI_SWITCH_GR303_EOC,
  61         SANGOMA_PRI_SWITCH_GR303_TMC = PRI_SWITCH_GR303_TMC,
  62         SANGOMA_PRI_SWITCH_QSIG = PRI_SWITCH_QSIG
  63 } sangoma_pri_switch_t;
  64 
  65 typedef enum {
  66         SANGOMA_PRI_READY = (1 << 0)
  67 } sangoma_pri_flag_t;
  68 
  69 struct sangoma_pri;
  70 typedef int (*event_handler)(struct sangoma_pri *, sangoma_pri_event_t, pri_event *);
  71 typedef int (*loop_handler)(struct sangoma_pri *);
  72 #define MAX_EVENT 18
  73 
  74 struct sangoma_pri {
  75         struct pri *pri;
  76         int span;
  77         int dchan;
  78         unsigned int flags;
  79         void *private_info;
  80         event_handler eventmap[MAX_EVENT+1];
  81         loop_handler on_loop;
  82         ftdm_channel_t *zdchan;
  83 };
  84 
  85 struct sangoma_pri_event_list {
  86         int event_id;
  87         int pri_event;
  88         char *name;
  89 };
  90 
  91 
  92 
  93 #define SANGOMA_MAP_PRI_EVENT(spri, event, func) spri.eventmap[event] = func;
  94 
  95 char *sangoma_pri_event_str(sangoma_pri_event_t event_id);
  96 int sangoma_one_loop(struct sangoma_pri *spri);
  97 int sangoma_init_pri(struct sangoma_pri *spri, int span, int dchan, int swtype, int node, int debug);
  98 int sangoma_run_pri(struct sangoma_pri *spri);
  99 
 100 #endif

/* [<][>][^][v][top][bottom][index][help] */