diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_suppport.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_suppport.c deleted file mode 100644 index 85c29f269f..0000000000 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_suppport.c +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Copyright (c) 2009, Konrad Hammel - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the original author; nor the names of any contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* INCLUDE ********************************************************************/ -#include "ftmod_sangoma_ss7_main.h" -/******************************************************************************/ - -/* DEFINES ********************************************************************/ -/******************************************************************************/ - -/* GLOBALS ********************************************************************/ -uint32_t sngss7_id; -/******************************************************************************/ - -/* PROTOTYPES *****************************************************************/ -uint8_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven); -uint8_t copy_cgPtyNum_from_sngss7(ftdm_caller_data_t *ftdm, SiCgPtyNum *cgPtyNum); -uint8_t copy_cgPtyNum_to_sngss7(ftdm_caller_data_t *ftdm, SiCgPtyNum *cgPtyNum); -uint8_t copy_cdPtyNum_from_sngss7(ftdm_caller_data_t *ftdm, SiCdPtyNum *cdPtyNum); -uint8_t copy_cdPtyNum_to_sngss7(ftdm_caller_data_t *ftdm, SiCdPtyNum *cdPtyNum); - -int check_for_state_change(ftdm_channel_t *ftdmchan); -unsigned long get_unique_id(void); - -ftdm_status_t extract_chan_data(uint32_t circuit, sngss7_chan_data_t **sngss7_info, ftdm_channel_t **ftdmchan); - -/******************************************************************************/ - -/* FUNCTIONS ******************************************************************/ -uint8_t copy_cgPtyNum_from_sngss7(ftdm_caller_data_t *ftdm, SiCgPtyNum *cgPtyNum) -{ - - return 0; -} - -/******************************************************************************/ -uint8_t copy_cgPtyNum_to_sngss7(ftdm_caller_data_t *ftdm, SiCgPtyNum *cgPtyNum) -{ - int k; - int j; - int flag; - char tmp; - unsigned char lower; - unsigned char upper; - - /**************************************************************************/ - cgPtyNum->eh.pres = PRSNT_NODEF; - /**************************************************************************/ - cgPtyNum->natAddrInd.pres = PRSNT_NODEF; - cgPtyNum->natAddrInd.val = 0x03; - /**************************************************************************/ - cgPtyNum->scrnInd.pres = PRSNT_NODEF; - cgPtyNum->scrnInd.val = ftdm->screen; - /**************************************************************************/ - cgPtyNum->presRest.pres = PRSNT_NODEF; - cgPtyNum->presRest.val = ftdm->pres; - /**************************************************************************/ - cgPtyNum->numPlan.pres = PRSNT_NODEF; - cgPtyNum->numPlan.val = 0x01; - /**************************************************************************/ - cgPtyNum->niInd.pres = PRSNT_NODEF; - cgPtyNum->niInd.val = 0x00; - /**************************************************************************/ - cgPtyNum->addrSig.pres = PRSNT_NODEF; - - k = 0; - j = 0; - flag = 0; - while (1) { - tmp = ftdm->cid_num.digits[k]; - if (tmp != '\0') { - if (isdigit(tmp)) { - lower = atoi(&tmp); - k++; - tmp = ftdm->cid_num.digits[k]; - } else { - while (!(isdigit(tmp)) && (tmp != '\0')) { - k++; - tmp = ftdm->cid_num.digits[k]; - } /* while(!(isdigit(tmp))) */ - - if (tmp != '\0') { - lower = atoi(&tmp); - k++; - tmp = ftdm->cid_num.digits[k]; - } else { - flag = 1; - lower = 0xf; - } /* if (tmp != '\0') */ - } /* (isdigit(tmp)) */ - } else { - flag = 1; - lower = 0xf; - } /* if (tmp != '\0') */ - - tmp = ftdm->cid_num.digits[k]; - if (tmp != '\0') { - if (isdigit(tmp)) { - upper = (atoi(&tmp)) << 4; - } else { - while (!(isdigit(tmp)) && (tmp != '\0')) { - k++; - tmp = ftdm->cid_num.digits[k]; - } /* while(!(isdigit(tmp))) */ - - if (tmp != '\0') { - upper = (atoi(&tmp)) << 4; - k++; - } else { - flag = 1; - upper = 0xf; - } /* if (tmp != '\0') */ - } /* if (isdigit(tmp)) */ - } else { - if (flag == 1){ - upper = 0x0; - } else { - flag = 1; - upper = 0xf; - } /* if (flag == 1) */ - } /* if (tmp != '\0') */ - - cgPtyNum->addrSig.val[j] = upper | lower; - j++; - - if (flag) { - break; - } else { - k++; - } - } /* while(1) */ - - cgPtyNum->addrSig.len = j; - /**************************************************************************/ - cgPtyNum->oddEven.pres = PRSNT_NODEF; - cgPtyNum->oddEven.val = ((cgPtyNum->addrSig.val[j] >>4) == 0x0 ) ? 0x01 : 0x00; - /**************************************************************************/ - return 0; -} - -/******************************************************************************/ -uint8_t copy_cdPtyNum_from_sngss7(ftdm_caller_data_t *ftdm, SiCdPtyNum *cdPtyNum) -{ - - return 0; -} - -/******************************************************************************/ -uint8_t copy_cdPtyNum_to_sngss7(ftdm_caller_data_t *ftdm, SiCdPtyNum *cdPtyNum) -{ - int k; - int j; - int flag; - char tmp; - unsigned char lower; - unsigned char upper; - - /**************************************************************************/ - cdPtyNum->eh.pres = PRSNT_NODEF; - /**************************************************************************/ - cdPtyNum->natAddrInd.pres = PRSNT_NODEF; - cdPtyNum->natAddrInd.val = 0x03; - /**************************************************************************/ - cdPtyNum->numPlan.pres = PRSNT_NODEF; - cdPtyNum->numPlan.val = 0x01; - /**************************************************************************/ - cdPtyNum->innInd.pres = PRSNT_NODEF; - cdPtyNum->innInd.val = 0x01; - /**************************************************************************/ - cdPtyNum->addrSig.pres = PRSNT_NODEF; - - k = 0; - j = 0; - flag = 0; - while (1) { - tmp = ftdm->dnis.digits[k]; - if (tmp != '\0') { - if (isdigit(tmp)) { - lower = atoi(&tmp); - k++; - tmp = ftdm->dnis.digits[k]; - } else { - while (!(isdigit(tmp)) && (tmp != '\0')) { - k++; - tmp = ftdm->dnis.digits[k]; - } /* while(!(isdigit(tmp))) */ - - if (tmp != '\0') { - lower = atoi(&tmp); - k++; - tmp = ftdm->dnis.digits[k]; - } else { - flag = 1; - lower = 0xf; - } /* if (tmp != '\0') */ - } /* (isdigit(tmp)) */ - } else { - flag = 1; - lower = 0xf; - } /* if (tmp != '\0') */ - - tmp = ftdm->dnis.digits[k]; - if (tmp != '\0') { - if (isdigit(tmp)) { - upper = (atoi(&tmp)) << 4; - } else { - while (!(isdigit(tmp)) && (tmp != '\0')) { - k++; - tmp = ftdm->dnis.digits[k]; - } /* while(!(isdigit(tmp))) */ - - if (tmp != '\0') { - upper = (atoi(&tmp)) << 4; - k++; - } else { - flag = 1; - upper = 0xf; - } /* if (tmp != '\0') */ - } /* if (isdigit(tmp)) */ - } else { - if (flag == 1){ - upper = 0x0; - } else { - flag = 1; - upper = 0xf; - } /* if (flag == 1) */ - } /* if (tmp != '\0') */ - - cdPtyNum->addrSig.val[j] = upper | lower; - j++; - - if (flag) { - break; - } else { - k++; - } - } /* while(1) */ - - cdPtyNum->addrSig.len = j; - /**************************************************************************/ - cdPtyNum->oddEven.pres = PRSNT_NODEF; - cdPtyNum->oddEven.val = ((cdPtyNum->addrSig.val[j] >>4) == 0x0 ) ? 0x01 : 0x00; - /**************************************************************************/ - return 0; -} - -/******************************************************************************/ -uint8_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven) -{ - uint8_t i; - uint8_t j; - - /* check if the token string is present */ - if (str.pres == 1) { - j=0; - - for (i=0; i < str.len; i++) { - sprintf(&ftdm[j], "%d", (str.val[i] & 0x0F)); - j++; - sprintf(&ftdm[j], "%d", ((str.val[i] & 0xF0) >> 4)); - j++; - } - - /* if the odd flag is up the last digit is a fake "0" */ - if ((oddEven.pres == 1) && (oddEven.val == 1)) { - ftdm[j-1] = '\0'; - } else { - ftdm[j] = '\0'; - } - } else { - SS7_ERROR("Asked to copy tknStr that is not present!\n"); - return 1; - } - - return 0; -} - -/******************************************************************************/ -int check_for_state_change(ftdm_channel_t *ftdmchan) -{ - -#if 0 - SS7_DEBUG("Checking for pending state change on span: %d, chan: %d\n!", - ftdmchan->physical_span_id, - ftdmchan->physical_chan_id); -#endif - /* check to see if there are any pending state changes on the channel and give them a sec to happen*/ - ftdm_wait_for_flag_cleared(ftdmchan, FTDM_CHANNEL_STATE_CHANGE, 5000); - - /* check the flag to confirm it is clear now */ - if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) { - /* the flag is still up...so we have a problem */ - SS7_ERROR("FTDM_CHANNEL_STATE_CHANGE set for over 500ms on span: %d, chan: %d\n", - ftdmchan->physical_span_id, - ftdmchan->physical_chan_id); - - /* move the state of the channel to RESTART to force a reset */ - ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); - - return 1; - } - return 0; -} - -/******************************************************************************/ -ftdm_status_t extract_chan_data(uint32_t circuit, sngss7_chan_data_t **sngss7_info, ftdm_channel_t **ftdmchan) -{ - SS7_FUNC_TRACE_ENTER(__FUNCTION__); - - if (g_ftdm_sngss7_data.cfg.isupCircuit[circuit].obj == NULL) { - SS7_ERROR("sngss7_info is Null for circuit #%d\n", circuit); - return FTDM_FAIL; - } - - ftdm_assert_return(g_ftdm_sngss7_data.cfg.isupCircuit[circuit].obj,FTDM_FAIL,"received message on signalling link or non-configured cic\n"); - *sngss7_info = g_ftdm_sngss7_data.cfg.isupCircuit[circuit].obj; - - ftdm_assert_return((*sngss7_info)->ftdmchan,FTDM_FAIL,"received message on signalling link or non-configured cic\n"); - *ftdmchan = (*sngss7_info)->ftdmchan; - - SS7_FUNC_TRACE_EXIT(__FUNCTION__); - return FTDM_SUCCESS; -} - -/******************************************************************************/ -unsigned long get_unique_id(void) -{ - - if (sngss7_id < 420000000) { - sngss7_id++; - } else { - sngss7_id = 1; - } - - return(sngss7_id); -} - -/******************************************************************************/ - -/******************************************************************************/ -/* For Emacs: - * Local Variables: - * mode:c - * indent-tabs-mode:t - * tab-width:4 - * c-basic-offset:4 - * End: - * For VIM: - * vim:set softtabstop=4 shiftwidth=4 tabstop=4: - */ -/******************************************************************************/