FreeCalypso > hg > fc-magnetite
view src/aci2/aci/ati_omcompat.c @ 700:800bf29abf31
audio mode load change from Tourmaline
Our FreeCalypso universe now has two kinds of audio mode config files:
the old 164 byte kind and the new 176 byte kind. We are not enabling
L1_NEW_AEC in Magnetite, only in Tourmaline, thus 164 byte audio mode
files are still native to Magnetite. But we still desire graceful
handling of the situation when a running Magnetite fw may load a
176 byte audio mode file (presumably with new AEC config), thus we
incorporate the same audio mode loading change which we implemented
in Tourmaline: if the loaded audio mode file is of the wrong kind,
the AEC config is cleared to default disabled state.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 30 Jul 2021 03:55:52 +0000 |
parents | 1badec9097de |
children |
line wrap: on
line source
/* * This module has been added to the Leonardo GSM firmware source by * Spacefalcon the Outlaw. It contains the implementation of the AT@ * commands which were invented by Openmoko. The addition of this code * to the present leo2moko source tree allows our fw to serve as a * compatible and fully functional replacement for the closed original * mokoN firmware. */ #ifndef ATI_OMCOMPAT_C #define ATI_OMCOMPAT_C #include "aci_all.h" #include <ctype.h> #include <string.h> #include "aci_cmh.h" #include "ati_cmd.h" #include "aci_cmd.h" #include "aci_io.h" #include "aci_cmd.h" #include "l4_tim.h" #include "line_edit.h" #include "aci_lst.h" #include "pcm.h" #include "audio.h" #include "aci.h" #include "rx.h" #include "pwr.h" #include "l4_tim.h" #ifdef GPRS #ifdef DTI #include "dti.h" #include "dti_conn_mng.h" #include "dti_cntrl_mng.h" #endif /* DTI */ #include "gaci.h" #include "gaci_cmh.h" #include "gaci_cmd.h" #endif /* GPRS */ #include "aci_mem.h" #include "aci_prs.h" #include "ati_int.h" #ifndef _SIMULATION_ #include "ffs/ffs.h" #endif #ifdef FF_ATI_BAT #include "typedefs.h" #include "gdd.h" #include "bat.h" #include "ati_bat.h" #endif /*FF_ATI_BAT*/ #include "audio/audio_api.h" #include "abb.h" #include "dar/dar_api.h" #ifdef GPRS #include "p_mph.h" #include "p_mphc.h" #include "../alr/alr_gprs.h" #endif #include "p_tb.h" #include "../alr/alr.h" /* * PURPOSE : @ST command (Configure the sidetone level) */ GLOBAL T_ATI_RSLT atAtST (char *cl, UBYTE srcId) { char tmp[8]={0}; INT8 gain = -26; TRACE_FUNCTION("atAtST()"); /* * input functionality */ cl = parse(cl,"s", (LONG)8, tmp); gain = atoi(tmp); if ( cl ) { if ( gain == -23 || gain == -20 || gain == -17 || gain == -14 || gain == -11 || gain == -8 || gain == -5 || gain == -2 || gain == 1 || gain == -26 ) { Side_Tone_Write(gain); return (ATI_CMPL); } else { cmdCmsError(CMS_ERR_OpNotAllowed); return (ATI_FAIL); } } } GLOBAL T_ATI_RSLT queatAtST (char *cl, UBYTE srcId) { char *me="+ST: "; INT8 ST1; TRACE_FUNCTION("queatAtST()"); ST1 = Side_Tone_Read(); sprintf(g_sa,"%s%d",me,ST1); io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); return (ATI_CMPL); } /* * PURPOSE : @POFF command (Power Off GSM Modem) */ GLOBAL T_ATI_RSLT atAtPOFF (char *cl, UBYTE srcId) { TRACE_FUNCTION("atAtPOFF"); sprintf(g_sa,"%s","OK"); io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); ABB_Power_Off(); return (ATI_CMPL); } /* * PURPOSE : @RST command (Reset GSM Modem) */ GLOBAL T_ATI_RSLT atAtRST (char *cl, UBYTE srcId) { TRACE_FUNCTION("atAtRST"); dar_reset_system(); return (ATI_CMPL); } /* * Openmoko's firmware contains an undocumented AT@SC command that * sets/changes the IMEI of the modem. However, it takes the IMEI * input in an obfuscated form, and the logic is broken - hence * we are NOT reimplementing this bogon in FreeCalypso. * * If you feel like changing your modem's IMEI, you can do it * through the RVTMUX interface with our fc-fsio utility's * set-imeisv command. */ /* * PURPOSE : @BAND command (Get RF band) */ GLOBAL T_ATI_RSLT atAtBAND (char *cl, UBYTE srcId) { char szDummy[32]; // to produce the exact same assembler code char szBand[32]; UBYTE band_sc = get_band (alr_data->serving_cell); // to produce the exact same assembler code TRACE_FUNCTION("atAtBAND"); band_sc = alr_data->sc_band; switch(band_sc) { case BAND_GSM_900: strcpy(szBand, "GSM 900"); break; case BAND_DCS_1800: strcpy(szBand, "DCS 1800"); break; case BAND_PCS_1900: strcpy(szBand, "PCS 1900"); break; case BAND_E_GSM: strcpy(szBand, "EGSM"); break; case BAND_GSM_850: strcpy(szBand, "GSM 850"); break; default: strcpy(szBand, "Unknown"); break; } sprintf(g_sa,"%s", szBand); io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); return (ATI_CMPL); } #endif /* ATI_OMCOMPAT_C */