int main(int argc, char *argv[]) { t38_core_state_t t38_core_a; t38_core_state_t t38_core_b; for (t38_version = 0; t38_version < 2; t38_version++) { printf("Using T.38 version %d\n", t38_version); if (t38_core_init(&t38_core_a, rx_indicator_handler, rx_data_handler, rx_missing_handler, &t38_core_b, tx_packet_handler, &t38_core_b) == NULL) { fprintf(stderr, "Cannot start the T.38 core\n"); exit(2); } if (t38_core_init(&t38_core_b, rx_indicator_handler, rx_data_handler, rx_missing_handler, &t38_core_a, tx_packet_handler, &t38_core_a) == NULL) { fprintf(stderr, "Cannot start the T.38 core\n"); exit(2); } t38_set_t38_version(&t38_core_a, t38_version); t38_set_t38_version(&t38_core_b, t38_version); span_log_set_level(&t38_core_a.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG); span_log_set_tag(&t38_core_a.logging, "T.38-A"); span_log_set_level(&t38_core_b.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG); span_log_set_tag(&t38_core_b.logging, "T.38-B"); if (encode_decode_tests(&t38_core_a, &t38_core_b)) { printf("Encode/decode tests failed\n"); exit(2); } if (attack_tests(&t38_core_a)) { printf("Attack tests failed\n"); exit(2); } } if (!succeeded) { printf("Tests failed\n"); exit(2); } printf("Tests passed\n"); return 0; }
t38_terminal_state_t *t38_terminal_init(t38_terminal_state_t *s, int calling_party, t38_tx_packet_handler_t *tx_packet_handler, void *tx_packet_user_data) { if (tx_packet_handler == NULL) return NULL; memset(s, 0, sizeof(*s)); span_log_init(&s->logging, SPAN_LOG_NONE, NULL); span_log_set_protocol(&s->logging, "T.38T"); s->rx_signal_present = FALSE; s->timed_step = T38_TIMED_STEP_NONE; s->tx_ptr = 0; t38_core_init(&s->t38, process_rx_indicator, process_rx_data, process_rx_missing, (void *) s, tx_packet_handler, tx_packet_user_data); s->t38.fastest_image_data_rate = 14400; t38_terminal_set_config(s, FALSE); s->timed_step = T38_TIMED_STEP_NONE; s->current_tx_data_type = T38_DATA_NONE; s->next_tx_samples = 0; t30_init(&(s->t30_state), calling_party, set_rx_type, (void *) s, set_tx_type, (void *) s, send_hdlc, (void *) s); t30_set_supported_modems(&(s->t30_state), T30_SUPPORT_V27TER | T30_SUPPORT_V29 | T30_SUPPORT_V17 | T30_SUPPORT_IAF); t30_set_iaf_mode(&(s->t30_state), T30_IAF_MODE_T37 | T30_IAF_MODE_T38); t30_restart(&s->t30_state); return s; }