aboutsummaryrefslogtreecommitdiffstats
path: root/channels/misdn
diff options
context:
space:
mode:
authorcrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2006-03-07 11:16:56 +0000
committercrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2006-03-07 11:16:56 +0000
commit145279b5f137604619287b3b82281e789e10095b (patch)
tree654d4e0952747435e95141c28b0d8cbb72e867c5 /channels/misdn
parentf320a81034bbbe4a0424530a0b58c1d93d85ccbb (diff)
added misdn port down to send a L1 Deactivate to a NT Port. changed some default values regarding jitterbuffer.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@12288 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/misdn')
-rw-r--r--channels/misdn/isdn_lib.c65
-rw-r--r--channels/misdn/isdn_lib.h4
2 files changed, 65 insertions, 4 deletions
diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c
index 60f98a1f3..37f0bfbe9 100644
--- a/channels/misdn/isdn_lib.c
+++ b/channels/misdn/isdn_lib.c
@@ -192,7 +192,7 @@ void te_lib_destroy(int midev) ;
struct misdn_bchannel *manager_find_bc_by_pid(int pid);
struct misdn_bchannel *manager_find_bc_holded(struct misdn_bchannel* bc);
unsigned char * manager_flip_buf_bits ( unsigned char * buf , int len);
-void manager_ph_control_block(struct misdn_bchannel *bc, int c1, void *c2, int c2_len);
+void manager_ph_control_block(struct misdn_bchannel *bc, long c1, void *c2, int c2_len);
void manager_clean_bc(struct misdn_bchannel *bc );
void manager_bchannel_setup (struct misdn_bchannel *bc);
void manager_bchannel_cleanup (struct misdn_bchannel *bc);
@@ -596,6 +596,49 @@ static int newteid=0;
#define MAXPROCS 0x100
+int misdn_lib_get_l1_down(struct misdn_stack *stack)
+{
+ /* Pull Up L1 */
+ iframe_t act;
+ act.prim = PH_DEACTIVATE | REQUEST;
+ act.addr = (stack->upper_id | FLG_MSG_DOWN) ;
+
+
+ act.dinfo = 0;
+ act.len = 0;
+
+ return mISDN_write(stack->midev, &act, mISDN_HEADER_LEN+act.len, TIMEOUT_1SEC);
+
+
+}
+
+
+int misdn_lib_get_l2_down(struct misdn_stack *stack)
+{
+
+ if (stack->ptp && (stack->nt) ) {
+ msg_t *dmsg;
+ /* L2 */
+ dmsg = create_l2msg(DL_RELEASE| REQUEST, 0, 0);
+
+ if (stack->nst.manager_l3(&stack->nst, dmsg))
+ free_msg(dmsg);
+
+ } else {
+ iframe_t act;
+
+ act.prim = DL_RELEASE| REQUEST;
+ act.addr = (stack->upper_id |FLG_MSG_DOWN) ;
+
+ act.dinfo = 0;
+ act.len = 0;
+ return mISDN_write(stack->midev, &act, mISDN_HEADER_LEN+act.len, TIMEOUT_1SEC);
+ }
+
+ return 0;
+}
+
+
int misdn_lib_get_l1_up(struct misdn_stack *stack)
{
/* Pull Up L1 */
@@ -1443,6 +1486,22 @@ int misdn_lib_get_port_up (int port)
}
+int misdn_lib_get_port_down (int port)
+{ /* Pull Down L1 */
+ struct misdn_stack *stack;
+ for (stack=glob_mgr->stack_list;
+ stack;
+ stack=stack->next) {
+ if (stack->port == port) {
+ if (stack->l2link)
+ misdn_lib_get_l2_down(stack);
+ misdn_lib_get_l1_down(stack);
+ return 0;
+ }
+ }
+ return 0;
+}
+
int misdn_lib_send_facility(struct misdn_bchannel *bc, enum facility_type fac, void *data)
{
switch (fac) {
@@ -3246,7 +3305,7 @@ int misdn_lib_tx2misdn_frm(struct misdn_bchannel *bc, void *data, int len)
/*
* send control information to the channel (dsp-module)
*/
-void manager_ph_control(struct misdn_bchannel *bc, int c1, int c2)
+void manager_ph_control(struct misdn_bchannel *bc, long c1, long c2)
{
unsigned char buffer[mISDN_HEADER_LEN+2*sizeof(long)];
iframe_t *ctrl = (iframe_t *)buffer; /* preload data */
@@ -3265,7 +3324,7 @@ void manager_ph_control(struct misdn_bchannel *bc, int c1, int c2)
/*
* send control information to the channel (dsp-module)
*/
-void manager_ph_control_block(struct misdn_bchannel *bc, int c1, void *c2, int c2_len)
+void manager_ph_control_block(struct misdn_bchannel *bc, long c1, void *c2, int c2_len)
{
unsigned char buffer[mISDN_HEADER_LEN+sizeof(long)+c2_len];
iframe_t *ctrl = (iframe_t *)buffer;
diff --git a/channels/misdn/isdn_lib.h b/channels/misdn/isdn_lib.h
index 7590b3eee..4b5d17db6 100644
--- a/channels/misdn/isdn_lib.h
+++ b/channels/misdn/isdn_lib.h
@@ -329,7 +329,7 @@ void manager_bchannel_deactivate(struct misdn_bchannel * bc);
int misdn_lib_tx2misdn_frm(struct misdn_bchannel *bc, void *data, int len);
-void manager_ph_control(struct misdn_bchannel *bc, int c1, int c2);
+void manager_ph_control(struct misdn_bchannel *bc, long c1, long c2);
int misdn_lib_port_restart(int port);
@@ -337,6 +337,8 @@ int misdn_lib_get_port_info(int port);
int misdn_lib_port_up(int port, int notcheck);
+int misdn_lib_get_port_down(int port);
+
int misdn_lib_get_port_up (int port) ;
int misdn_lib_maxports_get(void) ;