SNGISDN_ENUM_NAMES(SNGISDN_PROGIND_LOC_NAMES, SNGISDN_PROGIND_LOC_STRINGS)
SNGISDN_STR2ENUM(ftdm_str2ftdm_sngisdn_progind_loc, ftdm_sngisdn_progind_loc2str, ftdm_sngisdn_progind_loc_t, SNGISDN_PROGIND_LOC_NAMES, SNGISDN_PROGIND_LOC_INVALID)
+static uint8_t get_trillium_val(ftdm2trillium_t *vals, uint8_t ftdm_val, uint8_t default_val);
+static uint8_t get_ftdm_val(ftdm2trillium_t *vals, uint8_t trillium_val, uint8_t default_val);
+
extern ftdm_sngisdn_data_t g_sngisdn_data;
void get_memory_info(void);
+ftdm2trillium_t npi_codes[] = {
+ {FTDM_NPI_UNKNOWN, IN_NP_UNK},
+ {FTDM_NPI_ISDN, IN_NP_ISDN},
+ {FTDM_NPI_DATA, IN_NP_DATA},
+ {FTDM_NPI_TELEX, IN_NP_TELEX},
+ {FTDM_NPI_NATIONAL, IN_NP_NATIONAL},
+ {FTDM_NPI_PRIVATE, IN_NP_PRIVATE},
+ {FTDM_NPI_RESERVED, IN_NP_EXT},
+};
+
+ftdm2trillium_t ton_codes[] = {
+ {FTDM_TON_UNKNOWN, IN_TON_UNK},
+ {FTDM_TON_INTERNATIONAL, IN_TON_INT},
+ {FTDM_TON_NATIONAL, IN_TON_NAT},
+ {FTDM_TON_NETWORK_SPECIFIC, IN_TON_NETSPEC},
+ {FTDM_TON_SUBSCRIBER_NUMBER, IN_TON_SUB},
+ {FTDM_TON_ABBREVIATED_NUMBER, IN_TON_ABB},
+ {FTDM_TON_RESERVED, IN_TON_EXT},
+};
+
+static uint8_t get_trillium_val(ftdm2trillium_t *vals, uint8_t ftdm_val, uint8_t default_val)
+{
+ ftdm2trillium_t *val = vals;
+ while(val++) {
+ if (val->ftdm_val == ftdm_val) {
+ return val->trillium_val;
+ }
+ }
+ return default_val;
+}
+
+static uint8_t get_ftdm_val(ftdm2trillium_t *vals, uint8_t trillium_val, uint8_t default_val)
+{
+ ftdm2trillium_t *val = vals;
+ while(val++) {
+ if (val->trillium_val == trillium_val) {
+ return val->ftdm_val;
+ }
+ }
+ return default_val;
+}
+
+
void clear_call_data(sngisdn_chan_data_t *sngisdn_info)
{
uint32_t cc_id = ((sngisdn_span_data_t*)sngisdn_info->ftdmchan->span->signal_data)->cc_id;
}
if (cdPtyNmb->nmbPlanId.pres == PRSNT_NODEF) {
- caller_data->dnis.plan = cdPtyNmb->nmbPlanId.val;
+ caller_data->dnis.plan = get_ftdm_val(npi_codes, cdPtyNmb->nmbPlanId.val, IN_NP_UNK);
}
if (cdPtyNmb->typeNmb0.pres == PRSNT_NODEF) {
- caller_data->dnis.type = cdPtyNmb->typeNmb0.val;
+ caller_data->dnis.type = get_ftdm_val(ton_codes, cdPtyNmb->typeNmb0.val, IN_TON_UNK);
}
if (cdPtyNmb->nmbDigits.pres == PRSNT_NODEF) {
}
if (redirNmb->nmbPlanId.pres == PRSNT_NODEF) {
- caller_data->rdnis.plan = redirNmb->nmbPlanId.val;
+ caller_data->rdnis.plan = get_ftdm_val(npi_codes, redirNmb->nmbPlanId.val, IN_NP_UNK);
}
if (redirNmb->typeNmb.pres == PRSNT_NODEF) {
- caller_data->rdnis.type = redirNmb->typeNmb.val;
+ caller_data->rdnis.type = get_ftdm_val(ton_codes, redirNmb->typeNmb.val, IN_TON_UNK);
}
if (redirNmb->nmbDigits.pres == PRSNT_NODEF) {
ftdm_status_t get_prog_ind_ie(ftdm_channel_t *ftdmchan, ProgInd *progInd)
{
uint8_t val;
+
if (!progInd->eh.pres) {
return FTDM_FAIL;
}
if (progInd->progDesc.pres) {
+ /* TODO: use get_ftdm_val function and table here */
switch (progInd->progDesc.val) {
case IN_PD_NOTETEISDN:
val = SNGISDN_PROGIND_DESCR_NETE_ISDN;
cgPtyNmb->presInd0.val = caller_data->pres;
cgPtyNmb->nmbPlanId.pres = PRSNT_NODEF;
- if (caller_data->cid_num.plan >= FTDM_NPI_INVALID) {
- cgPtyNmb->nmbPlanId.val = FTDM_NPI_UNKNOWN;
- } else {
- cgPtyNmb->nmbPlanId.val = caller_data->cid_num.plan;
- }
+ cgPtyNmb->nmbPlanId.val = get_trillium_val(npi_codes, caller_data->cid_num.plan, IN_NP_UNK);
cgPtyNmb->typeNmb1.pres = PRSNT_NODEF;
- if (caller_data->cid_num.type >= FTDM_TON_INVALID) {
- cgPtyNmb->typeNmb1.val = FTDM_TON_UNKNOWN;
- } else {
- cgPtyNmb->typeNmb1.val = caller_data->cid_num.type;
- }
+ cgPtyNmb->typeNmb1.val = get_trillium_val(ton_codes, caller_data->cid_num.type, IN_TON_UNK);
cgPtyNmb->nmbDigits.pres = PRSNT_NODEF;
cgPtyNmb->nmbDigits.len = len;
val = FTDM_SCREENING_INVALID;
string = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "isdn.cg_pty2.screening_ind");
- if ((string != NULL) && (*string)) {
+ if (!ftdm_strlen_zero(string)) {
val = ftdm_str2ftdm_screening(string);
}
val = FTDM_PRES_INVALID;
string = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "isdn.cg_pty2.presentation_ind");
- if ((string != NULL) && (*string)) {
+ if (!ftdm_strlen_zero(string)) {
val = ftdm_str2ftdm_presentation(string);
}
val = FTDM_NPI_INVALID;
string = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "isdn.cg_pty2.npi");
- if ((string != NULL) && (*string)) {
+ if (!ftdm_strlen_zero(string)) {
val = ftdm_str2ftdm_npi(string);
}
if (val == FTDM_NPI_INVALID) {
cgPtyNmb->nmbPlanId.val = caller_data->cid_num.plan;
} else {
- cgPtyNmb->nmbPlanId.val = val;
+ cgPtyNmb->nmbPlanId.val = get_trillium_val(npi_codes, val, IN_NP_UNK);
}
cgPtyNmb->typeNmb1.pres = PRSNT_NODEF;
/* Type of Number */
val = FTDM_TON_INVALID;
string = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "isdn.cg_pty2.ton");
- if ((string != NULL) && (*string)) {
+ if (!ftdm_strlen_zero(string)) {
val = ftdm_str2ftdm_ton(string);
}
if (val == FTDM_TON_INVALID) {
cgPtyNmb->typeNmb1.val = caller_data->cid_num.type;
} else {
- cgPtyNmb->typeNmb1.val = val;
+ cgPtyNmb->typeNmb1.val = get_trillium_val(ton_codes, val, IN_TON_UNK);
}
return FTDM_SUCCESS;
}
if (!len) {
return FTDM_SUCCESS;
}
- cdPtyNmb->eh.pres = PRSNT_NODEF;
+
+ cdPtyNmb->eh.pres = PRSNT_NODEF;
- cdPtyNmb->nmbPlanId.pres = PRSNT_NODEF;
- if (caller_data->dnis.plan >= FTDM_NPI_INVALID) {
- cdPtyNmb->nmbPlanId.val = FTDM_NPI_UNKNOWN;
- } else {
- cdPtyNmb->nmbPlanId.val = caller_data->dnis.plan;
- }
+ cdPtyNmb->nmbPlanId.pres = PRSNT_NODEF;
+ cdPtyNmb->nmbPlanId.val = get_trillium_val(npi_codes, caller_data->dnis.plan, IN_NP_UNK);
- cdPtyNmb->typeNmb0.pres = PRSNT_NODEF;
- if (caller_data->dnis.type >= FTDM_TON_INVALID) {
- cdPtyNmb->typeNmb0.val = FTDM_TON_UNKNOWN;
- } else {
- cdPtyNmb->typeNmb0.val = caller_data->dnis.type;
- }
+ cdPtyNmb->typeNmb0.pres = PRSNT_NODEF;
+ cdPtyNmb->typeNmb0.val = get_trillium_val(ton_codes, caller_data->dnis.type, IN_TON_UNK);
cdPtyNmb->nmbDigits.pres = PRSNT_NODEF;
cdPtyNmb->nmbDigits.len = len;
redirNmb->eh.pres = PRSNT_NODEF;
redirNmb->nmbPlanId.pres = PRSNT_NODEF;
- if (caller_data->rdnis.plan >= FTDM_NPI_INVALID) {
- redirNmb->nmbPlanId.val = FTDM_NPI_UNKNOWN;
- } else {
- redirNmb->nmbPlanId.val = caller_data->rdnis.plan;
- }
+ redirNmb->nmbPlanId.val = get_trillium_val(npi_codes, caller_data->rdnis.plan, IN_NP_UNK);
redirNmb->typeNmb.pres = PRSNT_NODEF;
- if (caller_data->rdnis.type >= FTDM_TON_INVALID) {
- redirNmb->typeNmb.val = FTDM_TON_UNKNOWN;
- } else {
- redirNmb->typeNmb.val = caller_data->rdnis.type;
- }
+ redirNmb->typeNmb.val = get_trillium_val(ton_codes, caller_data->rdnis.type, IN_TON_UNK);
redirNmb->nmbDigits.pres = PRSNT_NODEF;
redirNmb->nmbDigits.len = len;
{
switch(bearer_capability) {
case IN_ITC_SPEECH:
- return FTDM_BEARER_CAP_SPEECH;
+ return FTDM_BEARER_CAP_SPEECH;
case IN_ITC_UNRDIG:
- return FTDM_BEARER_CAP_64K_UNRESTRICTED;
+ return FTDM_BEARER_CAP_64K_UNRESTRICTED;
case IN_ITC_A31KHZ:
return FTDM_BEARER_CAP_3_1KHZ_AUDIO;
default: