X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=gsm_bs.cpp;h=3a9ab7d00db29dd6e66c07c7979b215ebbd7ca53;hp=9ce9321851da3fc191da8461cc8c2da743a8faba;hb=f6aea744f84e702b3469393f007b9e1bf25f6737;hpb=302368de4846ab1d5dca3b73b7ed632aea08354e diff --git a/gsm_bs.cpp b/gsm_bs.cpp index 9ce9321..3a9ab7d 100644 --- a/gsm_bs.cpp +++ b/gsm_bs.cpp @@ -64,6 +64,25 @@ Pgsm_bs::~Pgsm_bs() PDEBUG(DEBUG_GSM, "Destroyed GSM BS process(%s).\n", p_name); } +static const char *media_type2name(unsigned char media_type) { + switch (media_type) { + case MEDIA_TYPE_ULAW: + return "PCMU"; + case MEDIA_TYPE_ALAW: + return "PCMA"; + case MEDIA_TYPE_GSM: + return "GSM"; + case MEDIA_TYPE_GSM_HR: + return "GSM-HR"; + case MEDIA_TYPE_GSM_EFR: + return "GSM-EFR"; + case MEDIA_TYPE_AMR: + return "AMR"; + } + + return "UKN"; +} + /* PROCEEDING INDICATION (from MS) */ void Pgsm_bs::call_conf_ind(unsigned int msg_type, unsigned int callref, struct gsm_mncc *mncc) { @@ -296,7 +315,7 @@ void Pgsm_bs::select_payload_type(struct gsm_mncc *mncc, unsigned char *payload_ if ((mncc->fields & MNCC_F_BEARER_CAP)) { /* select preferred payload type from list */ int i; - uint8_t dynamic_type = 96; + unsigned char dynamic_type = 96; add_trace("bearer", "capa", "given by MS"); for (i = 0; mncc->bearer_cap.speech_ver[i] >= 0; i++) { @@ -322,6 +341,11 @@ void Pgsm_bs::select_payload_type(struct gsm_mncc *mncc, unsigned char *payload_ media_type = MEDIA_TYPE_GSM_HR; payload_type = dynamic_type++; break; + case 5: + add_trace("speech", "version", "AMR Half Rate given"); + media_type = MEDIA_TYPE_AMR; + payload_type = dynamic_type++; + break; default: add_trace("speech", "version", "%d given", mncc->bearer_cap.speech_ver[i]); media_type = 0; @@ -583,7 +607,7 @@ int message_bsc(struct lcr_gsm *lcr_gsm, int msg_type, void *arg) } if (msg_type == GSM_TCHF_FRAME - || msg_type == GSM_TCHF_BAD_FRAME) { + || msg_type == GSM_BAD_FRAME) { if (port) { /* inject DTMF, if enabled */ if (pgsm_bs->p_g_dtmf) {