FreeCalypso > hg > fc-magnetite
diff src/aci2/aci/ati_src_riv.c @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/aci2/aci/ati_src_riv.c Mon Sep 26 00:29:36 2016 +0000 @@ -0,0 +1,345 @@ +/* ++----------------------------------------------------------------------------- +| Project : ACI +| Modul : ati_src_riv ++----------------------------------------------------------------------------- +| Copyright 2002 Texas Instruments Berlin, AG +| All rights reserved. +| +| This file is confidential and a trade secret of Texas +| Instruments Berlin, AG +| The receipt of or possession of this file does not convey +| any rights to reproduce or disclose its contents or to +| manufacture, use, or sell anything it may describe, in +| whole, or in part, without the specific written consent of +| Texas Instruments Berlin, AG. ++----------------------------------------------------------------------------- +| Purpose : This modul ... ++----------------------------------------------------------------------------- +*/ +#ifndef ATI_SRC_RIV_C +#define ATI_SRC_RIV_C +#endif + +#ifdef MFW +#define ENTITY_MFW +#else +#ifdef SMI +#define ENTITY_SMI +#else +#define ENTITY_ACI +#endif +#endif + +#define ACI_MEMBER + +#include "aci_all.h" +#include "pei.h" +#include "dti.h" /* functionality of the dti library */ +#include "aci.h" +#include "line_edit.h" +#include "aci_cmh.h" +#include "ati_cmd.h" +#include "aci_cmd.h" + +#include "aci_lst.h" +#include "aci_mem.h" + +#include "dti_conn_mng.h" +#include "dti_cntrl_mng.h" + +#include "psa.h" +#include "cmh.h" + +#include "psa_uart.h" +#include "ati_io.h" +#include "aci_io.h" + +#include "psa_aaa.h" +#include "ati_src_riv.h" +#include "ati_src_uart.h" + + +EXTERN T_ACI_LIST *ati_src_list; + +/* ++-----------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ati_src_riv | +| STATE : code ROUTINE : ati_src_riv_open_port | ++-----------------------------------------------------------------------+ + + PURPOSE : - port_number = dev_no +*/ +GLOBAL UBYTE ati_src_riv_open_port (UBYTE port_number, UBYTE sub_no, UBYTE capability ) +{ + UBYTE src_id = DTI_SRC_ID_NOTPRESENT; + UBYTE dti_id = DTI_DTI_ID_NOTPRESENT; + T_DTI_ENTITY_ID dev_id = DTI_ENTITY_AAA ; /* id(name) of device = RIV */ + UBYTE dev_no = port_number; /* instance of device */ + T_ATI_SRC_PARAMS *src_params = NULL; + T_DTI_CNTRL *info = NULL; + + TRACE_FUNCTION("ati_src_riv_open_port()"); + + ACI_MALLOC (info, sizeof (T_DTI_CNTRL)); + /* + * if dti_cntrl_get_info_from_dev_id() returns with TRUE means + * that the port_number is already in use, so deny this request + */ + if (dti_cntrl_get_info_from_dev_id (dev_id, dev_no, sub_no, info) EQ FALSE) + { + if (BITFIELD_CHECK (capability, DTI_CPBLTY_CMD)) + { + if (src_id NEQ 0) + { + T_LEDIT line; + + src_id = ati_init (ATI_SRC_TYPE_RIV, riv_src_result_cb, riv_src_line_state_cb); + ati_switch_mode(src_id, ATI_CMD_MODE); + + src_params = find_element (ati_src_list, src_id, search_ati_src_id); + + /* + * tell line edit that the line termination for Rivera is not default '\r' + */ + line.S3 = 0x00; /* Rivera terminates cmd line with NULL */ + line.S4 = 0x0A; /* LF default value */ + line.S5 = 0x08; /* BS default value */ + line.smsEnd = 0x00; /* Rivera does not terminate a SMS with Ctrl-Z, but NULL */ + line.atE = 0; + ati_user_output_cfg[src_params->src_id].atE = 0; + + ledit_set_config (src_params->src_id, line); + + if (dti_cntrl_new_device (src_id, (UBYTE)dev_id, dev_no, sub_no, port_number, capability, DTI_DRIVER_ID_NOTPRESENT, DTI_DIO_ID_NOTPRESENT)) + { + if (dti_cntrl_get_info_from_src_id (src_id, info)) + { + dti_id = info->dti_id; + } + else + { + TRACE_EVENT_P2("[ERR] no info available for port_number/src_id: %d/%d", port_number, src_id); + } + } + else + { + TRACE_EVENT_P1("[ERR] no dti_id available for port_number: %d", port_number); + } + } + else + { + TRACE_EVENT_P1("[ERR] no srd_id available for port_number: %d", port_number); + } + } + else + { + TRACE_EVENT_P1("[ERR] device with port_number: %d has no AT cmd capability", port_number); + } + } + else + { + TRACE_EVENT_P1("[ERR] port_number: %d already in use", port_number); + } + + if ((src_id NEQ DTI_SRC_ID_NOTPRESENT) AND (dti_id NEQ DTI_DTI_ID_NOTPRESENT)) + { + TRACE_EVENT_P3("port = %d, src_id = %d, dti_id = %d", port_number, src_id, dti_id); + } + + ACI_MFREE(info); + + return (dti_id); +} + +/* ++-----------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ati_src_riv | +| STATE : code ROUTINE : ati_src_riv_close_port| ++-----------------------------------------------------------------------+ + + PURPOSE : - +*/ +GLOBAL void ati_src_riv_close_port (UBYTE port_number, UBYTE sub_no) +{ + UBYTE src_id = DTI_SRC_ID_NOTPRESENT; + T_DTI_ENTITY_ID dev_id = DTI_ENTITY_AAA ; /* id(name) of device = RIV */ + UBYTE dev_no = port_number; /* instance of device */ + T_DTI_CNTRL *info = NULL; + + TRACE_FUNCTION("ati_src_riv_close_port"); + + ACI_MALLOC (info, sizeof (T_DTI_CNTRL)); + + if (dti_cntrl_get_info_from_dev_id (dev_id, dev_no, sub_no, info)) + { + src_id = info->src_id; + + ati_finit (src_id); + + dti_cntrl_erase_entry (info->dti_id); + + TRACE_EVENT_P1("Source nb %d deleted", src_id); + } + else + { + TRACE_EVENT_P1("there is no info to port_number %d", port_number); + } + + ACI_MFREE(info); +} + +/* ++----------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ati_src_riv | +| STATE : code ROUTINE : ati_src_riv_proc_cmd | ++----------------------------------------------------------------------+ + + PURPOSE : - +*/ +GLOBAL BOOL ati_src_riv_proc_cmd (T_AAA_CMD_REQ *cmd) +{ + UBYTE src_id = DTI_SRC_ID_NOTPRESENT; + T_DTI_ENTITY_ID dev_id = DTI_ENTITY_AAA; /* id(name) of device = RIV */ + UBYTE dev_no = cmd->port_number; /* instance of device */ + UBYTE sub_no = cmd->sub_no; /* multiplexed channel of device */ + T_DTI_CNTRL info; + T_ATI_SRC_PARAMS *src_params = NULL; + + //ACI_MALLOC (info, sizeof (T_DTI_CNTRL)); + + if (dti_cntrl_get_info_from_dev_id (dev_id, dev_no, sub_no, &info)) + { + src_id = info.src_id; + src_params = find_element (ati_src_list, src_id, search_ati_src_id); + + //ACI_MFREE (info); + TRACE_EVENT_P1("AT command: %s", cmd->cmd_seq); + + if (src_params->text_mode EQ CMD_MODE) + { + TRACE_FUNCTION ("ati_src_riv_proc_cmd(): CMD MODE"); + } + else + { + TRACE_FUNCTION ("ati_src_riv_proc_cmd(): TEXT MODE"); + } +#ifdef _SIMULATION_ + return (ati_execute (src_id, cmd->cmd_seq, (USHORT)(cmd->cmd_len+1))); +#else + return (ati_execute (src_id, cmd->cmd_seq, cmd->cmd_len)); +#endif + } + else + { + TRACE_EVENT_P1("ati_src_riv_proc_cmd(): there is no info to port_number %d", cmd->port_number); + } + + //ACI_MFREE (info); + return (FALSE); +} + +/* ++-------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ati_src_riv | +| STATE : code ROUTINE : riv_src_result_cb | ++-------------------------------------------------------------------+ + + PURPOSE : - +*/ +GLOBAL void riv_src_result_cb (UBYTE src_id, + T_ATI_OUTPUT_TYPE output_type, + UBYTE *output, + USHORT output_len) +{ + UBYTE port_number = 0xFF; + UBYTE sub_no = 0xFF; + T_DTI_CNTRL *info = NULL; + + TRACE_FUNCTION("riv_src_result_cb()"); + + ACI_MALLOC (info, sizeof (T_DTI_CNTRL)); + + if (dti_cntrl_get_info_from_src_id (src_id, info)) + { + port_number = info->dev_no; + sub_no = info->sub_no; + ACI_MFREE(info); + + if (IS_INDICATION_OUTPUT(output_type)) + { + psaAAA_ures_ind (port_number, sub_no, output_len, output); + return; + } + + if (IS_CONFIRM_OUTPUT(output_type)) + { + psaAAA_cmd_cnf (port_number, sub_no, output_len, output); + return; + } + + if (IS_NORMAL_OUTPUT(output_type)) + { + psaAAA_pres_ind (port_number, sub_no, output_len, output); + return; + } + } + else + { + ACI_MFREE(info); + TRACE_EVENT("riv_src_result_cb(): did not get port_number or unknown output_type !"); + } +} + +/* ++-----------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ati_src_riv | +| STATE : code ROUTINE : riv_src_line_state_cb | ++-----------------------------------------------------------------------+ + + PURPOSE : - this is just a dummy function to match + the function parameters of ati_init() +*/ +GLOBAL void riv_src_line_state_cb (UBYTE src_id, + T_ATI_LINE_STATE_TYPE line_state_type, + ULONG line_state_param) +{ +} + + +/* ++-----------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ati_src_riv | +| STATE : code ROUTINE : ati_riv_src_dti_rsp | ++-----------------------------------------------------------------------+ + + PURPOSE : - +*/ +GLOBAL void ati_src_riv_dti_rsp (ULONG link_id) +{ +#ifndef FF_ESIM + dti_cntrl_connect_after_aaa_dti_rsp(EXTRACT_DTI_ID(link_id)) ; + dti_cntrl_entity_connected (link_id, DTI_ENTITY_AAA, DTI_OK); +#endif +} + +/* ++-----------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ati_src_riv | +| STATE : code ROUTINE : ati_riv_src_disconnect_rsp | ++-----------------------------------------------------------------------+ + + PURPOSE : - +*/ +GLOBAL void ati_src_riv_disconnect_rsp (ULONG link_id) +{ +/* T_DTI_CNTRL dti_cntr; */ + +/* if(dti_cntrl_get_info_from_dti_id(EXTRACT_DTI_ID(link_id), &dti_cntr)) */ +/* { */ +/* R_AT( RAT_OK, dti_cntr.src_id ) ( AT_CMD_CGACT ); */ +/* } */ + + dti_cntrl_entity_disconnected (link_id, DTI_ENTITY_AAA); +} +