[Freeswitch-svn] [commit] r9566 - freeswitch/trunk/src/mod/applications/mod_fax

Freeswitch SVN coppice at freeswitch.org
Mon Sep 15 00:48:55 EDT 2008


Author: coppice
Date: Mon Sep 15 00:48:55 2008
New Revision: 9566

Modified:
   freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c

Log:
The location of the T.30 state context is now extracted from the FAX or T.38
state contexts by function calls. This is part of a move towards less knowledge
of spandsp internals being required by applications.


Modified: freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c	Mon Sep 15 00:48:55 2008
@@ -247,7 +247,6 @@
 	/*
       TODO Fire events
     */
-
 }
 
 static switch_status_t spanfax_init(pvt_t * pvt, transport_mode_t trans_mode)
@@ -256,6 +255,7 @@
 	switch_core_session_t *session;
 	switch_channel_t *chan;
 	fax_state_t *fax;
+	t30_state_t *t30;
 
 	session = (switch_core_session_t *) pvt->session;
 	switch_assert(session);
@@ -273,6 +273,7 @@
         }
 
 		fax = pvt->fax_state;
+        t30 = fax_get_t30_state(fax);
 
 		memset(fax, 0, sizeof(fax_state_t));
 		if (fax_init(fax, pvt->caller) == NULL) {
@@ -283,54 +284,54 @@
 		fax_set_transmit_on_idle(fax, TRUE);
 
 		span_log_set_message_handler(&fax->logging, spanfax_log_message);
-		span_log_set_message_handler(&fax->t30.logging, spanfax_log_message);
+		span_log_set_message_handler(&t30->logging, spanfax_log_message);
 
 		if (pvt->verbose) {
 			span_log_set_level(&fax->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW);
-			span_log_set_level(&fax->t30.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW);
+			span_log_set_level(&t30->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW);
 		}
 
-		t30_set_tx_ident(&fax->t30, pvt->ident);
-		t30_set_tx_page_header_info(&fax->t30, pvt->header);
+		t30_set_tx_ident(t30, pvt->ident);
+		t30_set_tx_page_header_info(t30, pvt->header);
 
-		t30_set_phase_e_handler(&fax->t30, phase_e_handler, pvt);
+		t30_set_phase_e_handler(t30, phase_e_handler, pvt);
 
-		t30_set_supported_image_sizes(&fax->t30,
+		t30_set_supported_image_sizes(t30,
 									  T30_SUPPORT_US_LETTER_LENGTH | T30_SUPPORT_US_LEGAL_LENGTH | T30_SUPPORT_UNLIMITED_LENGTH
 									  | T30_SUPPORT_215MM_WIDTH | T30_SUPPORT_255MM_WIDTH | T30_SUPPORT_303MM_WIDTH);
-		t30_set_supported_resolutions(&fax->t30,
+		t30_set_supported_resolutions(t30,
 									  T30_SUPPORT_STANDARD_RESOLUTION | T30_SUPPORT_FINE_RESOLUTION | T30_SUPPORT_SUPERFINE_RESOLUTION
 									  | T30_SUPPORT_R8_RESOLUTION | T30_SUPPORT_R16_RESOLUTION);
 
 
 		if (pvt->disable_v17) {
-			t30_set_supported_modems(&fax->t30, T30_SUPPORT_V29 | T30_SUPPORT_V27TER);
+			t30_set_supported_modems(t30, T30_SUPPORT_V29 | T30_SUPPORT_V27TER);
 			switch_channel_set_variable(chan, "fax_v17_disabled", "1");
 		} else {
-			t30_set_supported_modems(&fax->t30, T30_SUPPORT_V29 | T30_SUPPORT_V27TER | T30_SUPPORT_V17);
+			t30_set_supported_modems(t30, T30_SUPPORT_V29 | T30_SUPPORT_V27TER | T30_SUPPORT_V17);
 			switch_channel_set_variable(chan, "fax_v17_disabled", "0");
 		}
 
 		if (pvt->use_ecm) {
-			t30_set_supported_compressions(&fax->t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
-			t30_set_ecm_capability(&fax->t30, TRUE);
+			t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
+			t30_set_ecm_capability(t30, TRUE);
 			switch_channel_set_variable(chan, "fax_ecm_requested", "1");
 		} else {
-			t30_set_supported_compressions(&fax->t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION);
+			t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION);
 			switch_channel_set_variable(chan, "fax_ecm_requested", "0");
 		}
 
 		if (pvt->app_mode == FUNCTION_TX) {
-			t30_set_tx_file(&fax->t30, pvt->filename, pvt->tx_page_start, pvt->tx_page_end);
+			t30_set_tx_file(t30, pvt->filename, pvt->tx_page_start, pvt->tx_page_end);
 		} else {
-			t30_set_rx_file(&fax->t30, pvt->filename, -1);
+			t30_set_rx_file(t30, pvt->filename, -1);
 		}
 		switch_channel_set_variable(chan, "fax_filename", pvt->filename);
 		break;
 	case T38_MODE:
 		/* 
 		   Here goes the T.38 SpanDSP initializing functions 
-		   T.38 will require a big effort as it needs a different approac
+		   T.38 will require a big effort as it needs a different approach
 		   but the pieces are already in place
         */
 	default:
@@ -344,6 +345,7 @@
 static switch_status_t spanfax_destroy(pvt_t * pvt)
 {
 	int terminate;
+	t30_state_t *t30;
 
 	if (pvt->fax_state) {
 		if (pvt->t38_state) {
@@ -352,8 +354,9 @@
 			terminate = 1;
         }
 
-		if (terminate && &pvt->fax_state->t30) {
-			t30_terminate(&pvt->fax_state->t30);
+        t30 = fax_get_t30_state(pvt->fax_state);
+		if (terminate && t30) {
+			t30_terminate(t30);
         }
 
 		fax_release(pvt->fax_state);
@@ -366,8 +369,9 @@
 			terminate = 0;
         }
 
-		if (terminate && &pvt->t38_state->t30) {
-			t30_terminate(&pvt->t38_state->t30);
+        t30 = t38_terminal_get_t30_state(pvt->t38_state);
+		if (terminate && t30) {
+			t30_terminate(t30);
         }
 
 		t38_terminal_release(pvt->t38_state);



More information about the Freeswitch-svn mailing list