FreeCalypso > hg > fc-magnetite
diff src/g23m-aci/aci/cmh_uartf.c @ 162:53929b40109c
src/g23m-aci: initial import from TCS3.2/LoCosto
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 11 Oct 2016 02:02:43 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-aci/aci/cmh_uartf.c Tue Oct 11 02:02:43 2016 +0000 @@ -0,0 +1,791 @@ +/* ++----------------------------------------------------------------------------- +| Project : GSM-PS (6147) +| Modul : CMH_UARTF ++----------------------------------------------------------------------------- +| 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 module defines the functions used by the command +| handler for the UART module. ++----------------------------------------------------------------------------- +*/ + +#ifdef UART + +#ifndef CMH_UARTF_C +#define CMH_UARTF_C +#endif + +#include "aci_all.h" +/*==== INCLUDES ===================================================*/ +#include "aci_cmh.h" +#include "ati_cmd.h" +#include "aci_cmd.h" +#include "dti.h" /* functionality of the dti library */ + +#include "aci_lst.h" + +#include "dti_conn_mng.h" +#include "psa_uart.h" +#include "cmh_uart.h" +#include "aci_mem.h" + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_LST | +| STATE : code ROUTINE : cmhUARTtest_srcId | ++--------------------------------------------------------------------+ + + PURPOSE : search function for source Id in the structure T_ACI_DTI_PRC. + +*/ + +GLOBAL BOOL cmhUARTtest_srcId( UBYTE srcId, void *elem) +{ + T_ACI_DTI_PRC *compared = (T_ACI_DTI_PRC *)elem; + + if (compared -> srcId EQ srcId ) + return TRUE; + else + return FALSE; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_LST | +| STATE : code ROUTINE : cmhUARTtest_device | ++--------------------------------------------------------------------+ + + PURPOSE : search function for device number in the structure T_ACI_DTI_PRC. + +*/ + +GLOBAL BOOL cmhUARTtest_device (UBYTE device, void *elem) +{ + T_ACI_DTI_PRC *compared = (T_ACI_DTI_PRC *)elem; + + if (compared -> device EQ device ) + return TRUE; + else + return FALSE; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_LST | +| STATE : code ROUTINE : cmhUART_find_dlci | ++--------------------------------------------------------------------+ + + PURPOSE : returns element with corresponding dlci and device. + + If called dlci=UART_DLCI_NOT_MULTIPLEXED (UART entity + value for device not multiplexed) then function returns + element with corresponding device... + +*/ +GLOBAL T_ACI_DTI_PRC *cmhUART_find_dlci (T_ACI_LIST *search_list, + UBYTE device, UBYTE dlci) +{ + T_ACI_DTI_PRC *content = NULL; + + if (search_list EQ NULL) + return NULL; + + do + { + content = find_next_element (search_list, content, device, + cmhUARTtest_device); + if (content EQ NULL) + return NULL; + + if( dlci EQ UART_DLCI_NOT_MULTIPLEXED OR + content->dlci EQ UART_DLCI_NOT_MULTIPLEXED OR + content->dlci EQ dlci) + return content; + } + while (content NEQ NULL); + + return NULL; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_LST | +| STATE : code ROUTINE : cmhUART_erase_elem_received_cmd | ++--------------------------------------------------------------------+ + + PURPOSE : erase an entry element from the uart_src_params list. + +*/ + +GLOBAL void cmhUART_erase_elem_received_cmd (UBYTE srcId) +{ + T_ACI_DTI_PRC *content; + + /* find element to be erased */ + content = remove_element (uart_src_params, (UBYTE)srcId, cmhUARTtest_srcId); + + ACI_MFREE (content); +} + +/********************************************************* +////////////////////////////////////////////////////////// + TEMP: rests from aci_urt.c + + ready for remove? */ + +GLOBAL BOOL atiViaTif = FALSE; + +/******************************************************** +///////////////////////////////////////////////////////// */ + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_URT | +| STATE : code ROUTINE : urt_init | ++--------------------------------------------------------------------+ + + PURPOSE : initialize the module and the UART + +*/ + +GLOBAL void urt_init (void) +{ + TRACE_FUNCTION ("urt_init()"); + +} + +/* ++--------------------------------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_URT | +| STATE : code ROUTINE : cmhUART_translateBD_RATE_to_UART_IO_SPEED | ++--------------------------------------------------------------------------------------------+ + + PURPOSE: +*/ + +LOCAL UBYTE cmhUART_translateBD_RATE_to_UART_IO_SPEED ( T_ACI_BD_RATE rate ) +{ + + switch ( rate ) + { + case BD_RATE_AUTO: return UART_IO_SPEED_AUTO; + case BD_RATE_75: return UART_IO_SPEED_75; + case BD_RATE_150: return UART_IO_SPEED_150; + case BD_RATE_300: return UART_IO_SPEED_300; + case BD_RATE_600: return UART_IO_SPEED_600; + case BD_RATE_1200: return UART_IO_SPEED_1200; + case BD_RATE_2400: return UART_IO_SPEED_2400; + case BD_RATE_4800: return UART_IO_SPEED_4800; + case BD_RATE_7200: return UART_IO_SPEED_7200; + case BD_RATE_9600: return UART_IO_SPEED_9600; + case BD_RATE_14400: return UART_IO_SPEED_14400; + case BD_RATE_19200: return UART_IO_SPEED_19200; + case BD_RATE_28800: return UART_IO_SPEED_28800; + case BD_RATE_33900: return UART_IO_SPEED_33900; + case BD_RATE_38400: return UART_IO_SPEED_38400; + case BD_RATE_57600: return UART_IO_SPEED_57600; + case BD_RATE_115200: return UART_IO_SPEED_115200; + case BD_RATE_203125: return UART_IO_SPEED_203125; + case BD_RATE_406250: return UART_IO_SPEED_406250; + case BD_RATE_812500: return UART_IO_SPEED_812500; + default: return UART_IO_SPEED_UNDEF; + } +} + +/* ++-----------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_comParFindDevice | ++-----------------------------------------------------------------------------+ + + PURPOSE: Finding the device entry in the 'uart_com_par' table + +*/ +LOCAL BOOL cmhUART_comParFindDevice (UBYTE criterium, void *elem) +{ + if ( criterium EQ ((T_ACI_DEVICE_ENTRY*)elem)->device ) + return TRUE; + + return FALSE; +} + +/* ++-----------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_FindAll | ++-----------------------------------------------------------------------------+ + + PURPOSE: Find every entry + +*/ +LOCAL BOOL cmhUART_FindAll (UBYTE criterium, void *elem) +{ + return TRUE; +} + +LOCAL T_ACI_UART_COM_PAR cmhUART_getDefaultUARTParameter(void) +{ + T_ACI_UART_COM_PAR comPar = + { + UART_IO_SPEED_115200, + UART_IO_BPC_8, + UART_IO_SB_1, + UART_IO_PA_NONE, + UART_IO_FC_RX_RTS, + UART_IO_FC_TX_RTS, + UART_IO_XON_VALID, + UART_IO_XON_DEFAULT, + UART_IO_XOFF_VALID, + UART_IO_XOFF_DEFAULT, + }; + + return comPar; +} +/* ++----------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_AddDeviceToComParameter | ++----------------------------------------------------------------------------------+ + + PURPOSE: add COM parameter for a new device + +*/ +GLOBAL void cmhUART_AddDeviceToComParameter( UBYTE device ) +{ + T_ACI_DEVICE_ENTRY *device_entry; + + TRACE_FUNCTION("cmhUART_AddDeviceToComParameter"); + + /* + * try to find the device + */ + device_entry = find_element(uart_com_par, device, cmhUART_comParFindDevice); + + /* + * if the device is new add it to the list + */ + if ( device_entry EQ NULL ) + { + ACI_MALLOC (device_entry, sizeof (T_ACI_DEVICE_ENTRY)); + + device_entry->device = device; + /* + * Default values by adding a new device + */ + device_entry->comPar = cmhUART_getDefaultUARTParameter(); + + insert_list (uart_com_par, device_entry); + } +} + +/* ++---------------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_RemoveDeviceFromComParameter | ++---------------------------------------------------------------------------------------+ + + PURPOSE: remove COM parameter for a device from 'uart_com_par' table + +*/ +GLOBAL void cmhUART_RemoveDeviceFromComParameter( UBYTE device ) +{ + T_ACI_DEVICE_ENTRY *device_entry; + + TRACE_FUNCTION("cmhUART_RemoveDeviceFromComParameter"); + + /* + * Find the device and remove it. + */ + device_entry = remove_element(uart_com_par, device, cmhUART_comParFindDevice); + + if ( device_entry NEQ NULL ) + { + ACI_MFREE ( device_entry ); + } +} + +/* ++---------------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_RemoveDeviceFromComParameter | ++---------------------------------------------------------------------------------------+ + + PURPOSE: clean the 'uart_com_par' table + +*/ +GLOBAL void cmhUART_CleanComParameterList( void ) +{ + T_ACI_DEVICE_ENTRY *device_entry; + + TRACE_FUNCTION("cmhUART_CleanComParameterList"); + + /* + * Find the device and remove it. + */ + while ( NULL NEQ (device_entry = remove_element(uart_com_par, 0, cmhUART_FindAll)) ) + { + ACI_MFREE ( device_entry ); + } +} + +/* ++---------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_GetDeviceParOverDevice | ++---------------------------------------------------------------------------------+ + + PURPOSE: returns the COM parameter for this device + +*/ +GLOBAL T_ACI_DEVICE_ENTRY* cmhUART_GetDeviceParOverDevice( UBYTE device ) +{ + T_ACI_DEVICE_ENTRY *device_entry; + + TRACE_FUNCTION("cmhUART_GetDeviceParOverDevice"); + + /* + * return COM parameter for device + */ + device_entry = find_element(uart_com_par, device, cmhUART_comParFindDevice); + + if ( device_entry EQ NULL ) + { + TRACE_EVENT_P1("[ERR] cmhUART_GetDeviceParOverDevice: device=%d not found", device) ; + return NULL; + } + + return device_entry; +} + +/* ++---------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_GetDeviceParOverDevice | ++---------------------------------------------------------------------------------+ + + PURPOSE: + +*/ +GLOBAL T_ACI_DEVICE_TYPE cmhUART_GetDeviceType( UBYTE srcId ) +{ + T_ACI_DTI_PRC *src_infos; + + TRACE_FUNCTION("cmhUART_GetDeviceType"); + + src_infos = find_element (uart_src_params, (UBYTE)srcId, cmhUARTtest_srcId); + + if (src_infos NEQ NULL) + { + return src_infos->device_type; + } + else + { + return DEVICE_TYPE_UNKNOWN; + } +} + +/* ++---------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_ChangeDeviceParOverDevice | ++---------------------------------------------------------------------------------+ + + PURPOSE: + +*/ +GLOBAL BOOL cmhUART_ChangeDeviceType( UBYTE srcId, + T_ACI_DEVICE_TYPE device_type ) +{ + T_ACI_DTI_PRC *src_infos; + + TRACE_FUNCTION("cmhUART_ChangeDeviceType"); + + src_infos = find_element (uart_src_params, (UBYTE)srcId, cmhUARTtest_srcId); + + if (src_infos NEQ NULL) + { + src_infos->device_type = device_type; + + switch (device_type) + { + case DEVICE_TYPE_UNKNOWN: + TRACE_EVENT_P1("Device type of src %u is DEVICE_TYPE_UNKNOWN", srcId); + break; + case DEVICE_TYPE_URT: + TRACE_EVENT_P1("Device type of src %u is DEVICE_TYPE_URT", srcId); + break; + case DEVICE_TYPE_MUX: + TRACE_EVENT_P1("Device type of src %u is DEVICE_TYPE_MUX", srcId); + break; + default: + TRACE_EVENT_P1("Device type of src %u has invalid value", srcId); + break; + } + + return TRUE; + } + else + { + return FALSE; + } +} + +/* ++---------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_GetDeviceParOverSrcID | ++---------------------------------------------------------------------------------+ + + PURPOSE: returns the COM parameter for this source ID + +*/ +GLOBAL T_ACI_DEVICE_ENTRY* cmhUART_GetDeviceParOverSrcID( UBYTE srcId ) +{ + T_ACI_DEVICE_ENTRY *device_entry; + T_ACI_DTI_PRC *cmd_struct; + + TRACE_FUNCTION("cmhUART_GetDeviceParOverSrcID()"); + + if( !ati_is_src_type(srcId, ATI_SRC_TYPE_UART) ) + { + /* not a UART source */ + return(NULL); + } + + /* + * find the device connected to this source ID + */ + cmd_struct = find_element (uart_src_params, srcId, cmhUARTtest_srcId); + + if (cmd_struct EQ NULL) + { + TRACE_EVENT_P1("[ERR] cmhUART_GetDeviceParOverSrcID: srcId=%d not found", srcId) ; + return NULL; + } + + /* + * return COM parameter for device + */ + device_entry = find_element(uart_com_par, cmd_struct->device, cmhUART_comParFindDevice); + + if ( device_entry EQ NULL ) + { + TRACE_EVENT_P1("[ERR] cmhUART_GetDeviceParOverSrcID: device=%d not found", cmd_struct->device) ; + return NULL; + } + + return device_entry; +} + +GLOBAL UBYTE cmhUART_GetParityOverSrcID( UBYTE srcId ) +{ + T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( (UBYTE) srcId ); + + if ( device_entry EQ NULL ) + { + return cmhUART_getDefaultUARTParameter().parity; + } + + return device_entry->comPar.parity; +} + +GLOBAL UBYTE cmhUART_GetDataBitOverSrcID( UBYTE srcId ) +{ + T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( (UBYTE) srcId ); + + if ( device_entry EQ NULL ) + { + return cmhUART_getDefaultUARTParameter().bpc; + } + + return device_entry->comPar.bpc; +} + +GLOBAL UBYTE cmhUART_GetStopBitOverSrcID( UBYTE srcId ) +{ + T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( (UBYTE) srcId ); + + if ( device_entry EQ NULL ) + { + return cmhUART_getDefaultUARTParameter().nsb; + } + + return device_entry->comPar.nsb; +} + +/* ++------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_SetComParToUnchanged | ++------------------------------------------------------------------------------+ + + PURPOSE: set the UART COM parameter to unchanged + +*/ +GLOBAL void cmhUART_SetComParToUnchanged( T_comPar *comPar ) +{ + comPar->speed = UART_IO_SPEED_UNDEF; /* baud rate */ + comPar->bpc = UART_IO_BPC_UNDEF; /* bits per character */ + comPar->nsb = UART_IO_SB_UNDEF; /* stop bits */ + comPar->parity = UART_IO_PA_UNDEF; /* parity of serial link */ + comPar->flow_rx = UART_IO_FC_RX_UNDEF; /* flow control mode RX */ + comPar->flow_tx = UART_IO_FC_TX_UNDEF; /* flow control mode TX */ + comPar->xon_valid = UART_IO_XON_UNDEF; /* indicator whether xon is valid */ + comPar->xoff_valid = UART_IO_XOFF_UNDEF; /* indicator whether xoff is valid */ + + comPar->xon = UART_IO_XON_DEFAULT; + comPar->xoff = UART_IO_XOFF_DEFAULT; + + /* + * Set escape parameters + */ + comPar->esc_valid = UART_IO_ESC_VALID; + comPar->esc_char = UART_IO_ESC_CHAR_DEFAULT; + comPar->esc_gp = UART_IO_ESC_GP_DEFAULT; +} + +/* ++------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_SetDataRate | ++------------------------------------------------------------------------------+ + + PURPOSE: set the UART data rate + +*/ +GLOBAL T_ACI_RETURN cmhUART_SetDataRate ( UBYTE srcId, T_ACI_BD_RATE rate) +{ + T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( srcId ); + T_comPar newComPar; + + if ( device_entry EQ NULL ) + { + TRACE_EVENT_P1("[ERR] cmhUART_SetDataRate: device for source ID = %d not found", srcId); + return AT_FAIL; + } + + cmhUART_SetComParToUnchanged( &newComPar ); + + device_entry->comPar.speed = newComPar.speed = cmhUART_translateBD_RATE_to_UART_IO_SPEED( rate ); + + psaUART_SetParameters(device_entry->device, &newComPar); + + return AT_EXCT; +} + +/* ++------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_SetCharacterFraming | ++------------------------------------------------------------------------------+ + + PURPOSE: set the UART character framing + +*/ +GLOBAL T_ACI_RETURN cmhUART_SetCharacterFraming ( UBYTE srcId, + T_ACI_BS_FRM format, + T_ACI_BS_PAR parity ) +{ + T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( srcId ); + T_comPar comPar; + + if ( device_entry EQ NULL ) + { + TRACE_EVENT_P1("[ERR] cmhUART_SetCharacterFraming: device for source ID = %d not found", srcId); + return AT_FAIL; + } + + cmhUART_SetComParToUnchanged( &comPar ); + + /* + * translate AT command parameter to UART parameter + */ + if ( format NEQ BS_FRM_NotPresent ) + { + if ( format & 4 ) + { + device_entry->comPar.bpc = comPar.bpc = UART_IO_BPC_7; + format++; + } + else + { + device_entry->comPar.bpc = comPar.bpc = UART_IO_BPC_8; + } + + device_entry->comPar.nsb = comPar.nsb = format & 2 ? UART_IO_SB_1 : UART_IO_SB_2; + + if ( format & 1 ) + { + device_entry->comPar.parity = comPar.parity = UART_IO_PA_NONE; + parity = BS_PAR_NotPresent; + } + else + { + if ( parity EQ BS_PAR_NotPresent ) + { + if ( device_entry->comPar.parity NEQ UART_IO_PA_NONE ) + { + if ( device_entry->comPar.parity EQ NOT_SUPPORTED_UART_IO_PA_MARK ) + { + comPar.parity = UART_IO_PA_NONE; + comPar.nsb = UART_IO_SB_2; + } + else + { + comPar.parity = device_entry->comPar.parity; + } + } + else + { + /* the type of parity is not defined */ + return AT_FAIL; + } + } + } + } + + switch (parity) + { + case BS_PAR_NotPresent: + /* this case is handled by format translation */ + break; + case BS_PAR_Odd: + device_entry->comPar.parity = comPar.parity = UART_IO_PA_ODD; + break; + case BS_PAR_Even: + device_entry->comPar.parity = comPar.parity = UART_IO_PA_EVEN; + break; + case BS_PAR_Mark: + /* + * parity mark is not supported by the UART SAP, + * but it is the same as no parity and 2 stop bit + */ + device_entry->comPar.parity = NOT_SUPPORTED_UART_IO_PA_MARK; + comPar.parity = UART_IO_PA_NONE; + comPar.nsb = UART_IO_SB_2; + break; + case BS_PAR_Space: + device_entry->comPar.parity = comPar.parity = UART_IO_PA_SPACE; + break; + } + + psaUART_SetParameters(device_entry->device, &comPar); + + return AT_EXCT; +} + +/* ++------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_SetFlowControl | ++------------------------------------------------------------------------------+ + + PURPOSE: set the UART flow control + +*/ +GLOBAL T_ACI_RETURN cmhUART_SetFlowControl(UBYTE srcId, T_ACI_RX_FLOW_CTRL DCE_by_DTE) +{ + T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( srcId ); + T_comPar comPar; + + if ( device_entry EQ NULL ) + { + TRACE_EVENT_P1("[ERR] cmhUART_SetFlowControl: device for source ID = %d not found", srcId); + return AT_FAIL; + } + + cmhUART_SetComParToUnchanged( &comPar ); + + /* + * translate AT command parameter to UART parameter + */ + switch ( DCE_by_DTE ) + { + case RX_FLOW_NONE: + comPar.flow_rx = UART_IO_FC_RX_NONE; + comPar.flow_tx = UART_IO_FC_TX_NONE; + break; + case RX_FLOW_SOFTWARE: + comPar.flow_rx = UART_IO_FC_RX_XOFF; + comPar.flow_tx = UART_IO_FC_TX_XOFF; + break; + case RX_FLOW_HARDWARE: + comPar.flow_rx = UART_IO_FC_RX_RTS; + comPar.flow_tx = UART_IO_FC_TX_RTS; + break; + case RX_FLOW_NotPresent: + return AT_CMPL; + } + + device_entry->comPar.flow_rx = comPar.flow_rx; + device_entry->comPar.flow_tx = comPar.flow_tx; + + psaUART_SetParameters(device_entry->device, &comPar); + + return AT_EXCT; +} + +/* ++--------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_GetFktInterfaceFormat | ++--------------------------------------------------------------------------------+ + + PURPOSE: translate the UART COM parameter to the AT command format parameter + + ATTENTION: internal function, COM paramter is is not checking of validity + +*/ +GLOBAL T_ACI_BS_FRM cmhUART_GetFktInterfaceFormat( T_ACI_UART_COM_PAR *comPar ) +{ + UBYTE format = 1; /* 8 Data 2 Stop */ + + if ( comPar->bpc EQ UART_IO_BPC_7 ) + format += 3; + + if ( comPar->nsb NEQ UART_IO_SB_2 ) + format += 2; + + if ( comPar->parity NEQ UART_IO_PA_NONE ) + format -= 1; + + return (T_ACI_BS_FRM) format; +} + +/* ++--------------------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_UART | +| STATE : code ROUTINE : cmhUART_GetFktInterfaceParity | ++--------------------------------------------------------------------------------+ + + PURPOSE: translate the UART COM parameter to the AT command parity parameter + + ATTENTION: internal function, COM paramter is is not checking of validity + +*/ +GLOBAL T_ACI_BS_PAR cmhUART_GetFktInterfaceParity( T_ACI_UART_COM_PAR *comPar ) +{ + switch ( comPar->parity ) + { + case UART_IO_PA_ODD: + return (T_ACI_BS_PAR) BS_PAR_Odd; + case UART_IO_PA_EVEN: + return (T_ACI_BS_PAR) BS_PAR_Even; + case NOT_SUPPORTED_UART_IO_PA_MARK: + return (T_ACI_BS_PAR) BS_PAR_Mark; + case UART_IO_PA_SPACE: + return (T_ACI_BS_PAR) BS_PAR_Space; + } + return BS_PAR_NotPresent; +} +#endif /* UART */