123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619 |
- // /*****************************************************************
- // *****************************************************************
- // *** **
- // *** (C)Copyright 2005-2006, American Megatrends Inc. **
- // *** **
- // *** All Rights Reserved. **
- // *** **
- // *** 6145-F, Northbelt Parkway, Norcross, **
- // *** **
- // *** Georgia - 30071, USA. Phone-(770)-246-8600. **
- // *** **
- // *****************************************************************
- // ****************************************************************
- // *
- // * SOLConfig.c
- // * SOL configuration
- // *
- // * Author: Govind kothandapani <govindk@ami.com>
- // ****************************************************************/
- // #define ENABLE_DEBUG_MACROS 0
- // #include "Types.h"
- // #include "Debug.h"
- // #include "MsgHndlr.h"
- // #include "Support.h"
- // #include "IPMIDefs.h"
- // #include "SharedMem.h"
- // #include "PMConfig.h"
- // #include "IPMI_SOLConfig.h"
- // #include "NVRAccess.h"
- // #include "PDKDefs.h"
- // #include "PDKAccess.h"
- // #include"Ethaddr.h"
- // #include "IPMIConf.h"
- // /*** Local Definitions ***/
- // #define SOL_SET_IN_PROGRESS 0
- // #define SOL_ENABLE_PARAM 1
- // #define SOL_AUTHENTICATION_PARAM 2
- // #define SOL_ACCUM_THRESHOLD_PARAM 3
- // #define SOL_RETRY_PARAM 4
- // #define SOL_NVOL_BIT_RATE_PARAM 5
- // #define SOL_VOL_BIT_RATE_PARAM 6
- // #define SOL_PAYLD_CHANNEL_PARAM 7
- // #define SOL_PAYLD_PORT_NUM_PARAM 8
- // #define SET_IN_PROGRESS 0x01
- // #define SET_COMPLETE 0x00
- // #define PARAM_REVISION 0x11
- // #define GET_PARAM_REV_ONLY_MASK 0x80
- // #define BAUD_RATE_9600 6
- // #define BAUD_RATE_19200 7
- // #define BAUD_RATE_38400 8
- // #define BAUD_RATE_57600 9
- // #define BAUD_RATE_115200 10
- // /* Reserved Bits table */
- // #define MAX_SOL_PARAMS_DATA 9
- // #define RESERVED_VALUE_70 0x70
- // #define RESERVED_VALUE_F0 0xF0
- // typedef struct
- // {
- // INT8U Params;
- // INT8U ReservedBits [MAX_SOL_PARAMS_DATA];
- // INT8U DataLen;
- // } SOLCfgRsvdBits_T;
- // static SOLCfgRsvdBits_T m_RsvdBitsCheck [] = {
- // /* Param Reserved Bits Data Size */
- // { 0, { 0xFC }, 0x1 },
- // { 1, { 0xFE }, 0x1 },
- // { 2, { 0x30 }, 0x1 },
- // { 4, { 0xF8 }, 0x1 },
- // { 5, { 0xF0 }, 0x1 }
- // };
- // /*** Module Variables ***/
- // /**
- // * @brief SOL Configuration Parameter Lengths
- // **/
- // static const INT8U SOLConfigParamLengths [] = { 1,1,1,2,2,1,1,1,2 };
- // /**
- // * IsBaudRateValid
- // **/
- // static int IsBaudRateValid (INT8U BaudRate);
- // // Function to check if valid privileges
- // static int IsValidPrivilege(INT8U authtype);
- // #if SOL_ACTIVATING_COMMAND != UNIMPLEMENTED
- // /*---------------------------------------
- // * SOLActivating
- // *---------------------------------------*/
- // int
- // SOLActivating (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst)
- // {
- // /**
- // * Send SOL activating Message to Remote Application connected to
- // * Connected to Serial port
- // **/
- // *pRes = CC_NORMAL;
- // return sizeof (*pRes);
- // }
- // #endif /* SOL_ACTIVATING_COMMAND */
- // #if GET_SOL_CONFIGURATION != UNIMPLEMENTED
- // /*---------------------------------------
- // * GetSOLConfig
- // *---------------------------------------*/
- // int
- // GetSOLConfig (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst)
- // {
- // _NEAR_ GetSOLConfigReq_T* GetReq = (_NEAR_ GetSOLConfigReq_T*) pReq;
- // _NEAR_ GetSOLConfigRes_T* GetRes = (_NEAR_ GetSOLConfigRes_T*) pRes;
- // _NEAR_ GetSOLConfigOEMRes_T* GetOEMRes = (_NEAR_ GetSOLConfigOEMRes_T*) pRes;
- // _FAR_ BMCSharedMem_T* pSharedMem = BMC_GET_SHARED_MEM (BMCInst);
- // BMCInfo_t *pBMCInfo = &g_BMCInfo[BMCInst];
- // INT8U Size,*curchannel;
- // INT8U ChannelNum, EthIndex;
- // INT8U oem_len;
- // unsigned long oem_addr;
- // ChannelNum = GetReq->ChannelNum & 0x0F;
- // if(GetReq->ChannelNum & RESERVED_VALUE_70)
- // {
- // /* Alarm !!! Somebody is trying to set Reseved Bits */
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // if (ChannelNum > 0x0F)
- // {
- // *pRes =CC_INV_DATA_FIELD;
- // return sizeof(*pRes);
- // }
- // if (0x0E == ChannelNum)
- // {
- // OS_THREAD_TLS_GET(g_tls.CurChannel,curchannel);
- // EthIndex = GetEthIndex (*curchannel & 0xF, BMCInst);
- // }
- // else
- // {
- // EthIndex = GetEthIndex (ChannelNum, BMCInst);
- // }
- // if (0xFF == EthIndex)
- // {
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // if((GetReq->SetSel != 0x00) ||(GetReq->BlkSEl != 0x00))
- // {
- // *pRes =CC_INV_DATA_FIELD;
- // return sizeof(*pRes);
- // }
- // GetRes->CompletionCode = CC_NORMAL;
- // GetRes->ParamRev = PARAM_REVISION;
- // /* Check if only parameter revision is required */
- // if (0 != (GetReq->ChannelNum & GET_PARAM_REV_ONLY_MASK))
- // {
- // if((MAX_SOL_CONF_PARAM >= GetReq->ParamSel))
- // {
- // return sizeof(GetSOLConfigRes_T);
- // }
- // else if(( NULL != g_PDKHandle[PDK_GETSOLOEMPARAM]) &&
- // ((MIN_SOL_OEM_CONF_PARAM <= GetReq->ParamSel) && (MAX_SOL_OEM_CONF_PARAM >= GetReq->ParamSel)))
- // {
- // oem_len = ((int(*)(INT8U, unsigned long*,int))(g_PDKHandle[PDK_GETSOLOEMPARAM]))(GetReq->ParamSel, &oem_addr ,BMCInst);
- // if( oem_len == 0)
- // {
- // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
- // return sizeof(INT8U);
- // }
- // else
- // return sizeof(GetSOLConfigRes_T);
- // }
- // else
- // {
- // *pRes = CC_PARAM_NOT_SUPPORTED;
- // return sizeof (*pRes);
- // }
- // }
- // Size = sizeof (GetSOLConfigRes_T);
- // /* Load individual configurations */
- // switch (GetReq->ParamSel)
- // {
- // case SOL_SET_IN_PROGRESS:
- // LOCK_BMC_SHARED_MEM(BMCInst);
- // (*(_NEAR_ INT8U*)(GetRes + 1)) = BMC_GET_SHARED_MEM(BMCInst)->m_SOL_SetInProgress;
- // UNLOCK_BMC_SHARED_MEM(BMCInst);
- // Size = Size + sizeof (INT8U);
- // break;
- // case SOL_ENABLE_PARAM:
- // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].SOLEnable;
- // Size = Size + sizeof (INT8U);
- // break;
- // case SOL_AUTHENTICATION_PARAM:
- // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].SOLAuth;
- // Size = Size + sizeof (INT8U);
- // break;
- // case SOL_ACCUM_THRESHOLD_PARAM:
- // _fmemcpy((INT8U *)(GetRes+1),(INT8U *)&pBMCInfo->SOLCfg[EthIndex].CharAccThresh,sizeof(INT16U));
- // Size = Size + sizeof (INT16U);
- // break;
- // case SOL_RETRY_PARAM:
- // (*((_NEAR_ INT8U*)(GetRes + 1))) = pBMCInfo->SOLCfg[EthIndex].SOLRetryCount;
- // (*((_NEAR_ INT8U*)(GetRes + 1) + 1)) = pBMCInfo->SOLCfg[EthIndex].SOLRetryInterval;
- // Size = Size + sizeof (INT16U);
- // break;
- // case SOL_NVOL_BIT_RATE_PARAM:
- // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].NVBitRate;
- // Size = Size + sizeof (INT8U);
- // break;
- // case SOL_VOL_BIT_RATE_PARAM:
- // (*(_NEAR_ INT8U*)(GetRes + 1)) = pSharedMem->SOLBitRate[EthIndex];
- // Size = Size + sizeof (INT8U);
- // break;
- // case SOL_PAYLD_CHANNEL_PARAM:
- // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].PayldChannel;
- // Size = Size + sizeof (INT8U);
- // break;
- // case SOL_PAYLD_PORT_NUM_PARAM:
- // _fmemcpy((INT8U *)(GetRes+1),(INT8U *)&pBMCInfo->SOLCfg[EthIndex].PayldPortNum,sizeof(INT16U));
- // Size = Size + sizeof (INT16U);
- // break;
- // default:
- // if(g_PDKHandle[PDK_GETSOLOEMPARAM] != NULL &&
- // (GetReq->ParamSel >= 192 && GetReq->ParamSel <= 255))
- // {
- // oem_len = ((int(*)(INT8U, unsigned long*,int))(g_PDKHandle[PDK_GETSOLOEMPARAM]))(GetReq->ParamSel, &oem_addr ,BMCInst);
- // if( oem_len == 0)
- // {
- // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
- // return sizeof(INT8U);
- // }
- // else
- // {
- // //Acquire the OEM parameters
- // if( oem_len < MSG_PAYLOAD_SIZE - sizeof(GetSOLConfigOEMRes_T))
- // {
- // memcpy((char*)GetOEMRes + sizeof(GetSOLConfigOEMRes_T) ,\
- // (unsigned int*)oem_addr , oem_len);
- // }
- // else
- // {
- // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
- // return sizeof(INT8U);
- // }
- // return sizeof(GetSystemInfoParamOEMRes_T) + oem_len;
- // }
- // }
- // else
- // {
- // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
- // Size = sizeof (INT8U);
- // }
- // }
- // return Size;
- // }
- // #endif /* GET_SOL_CONFIGURATION */
- // #if SET_SOL_CONFIGURATION != UNIMPLEMENTED
- // /*---------------------------------------
- // * SetSOLConfig
- // *---------------------------------------*/
- // int
- // SetSOLConfig (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst)
- // {
- // _NEAR_ SetSOLConfigReq_T* SetReq = (_NEAR_ SetSOLConfigReq_T*) pReq;
- // _NEAR_ SetSOLConfigOEMReq_T* pSetOEMReq = (_NEAR_ SetSOLConfigOEMReq_T*) pReq;
- // _FAR_ BMCSharedMem_T* pSharedMem = BMC_GET_SHARED_MEM (BMCInst);
- // BMCInfo_t *pBMCInfo = &g_BMCInfo[BMCInst];
- // int i=0, j=0;
- // INT8U ChannelNum, EthIndex,*curchannel;
- // unsigned long oem_addr;
- // int size;
- // INT8U m_SOL_SetInProgress; /**< Contains setting SOL configuration status */
-
- // ChannelNum = SetReq->ChannelNum & 0x0F;
- // if (ChannelNum > 0x0F)
- // {
- // *pRes =CC_INV_DATA_FIELD;
- // return sizeof(*pRes);
- // }
- // if (0x0E == ChannelNum)
- // {
- // OS_THREAD_TLS_GET(g_tls.CurChannel,curchannel);
- // EthIndex = GetEthIndex (*curchannel & 0xF, BMCInst);
- // }
- // else
- // {
- // EthIndex = GetEthIndex (ChannelNum, BMCInst);
- // }
- // if (0xFF == EthIndex)
- // {
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // if (SetReq->ParamSel >= sizeof (SOLConfigParamLengths))
- // {
- // *pRes = CC_PARAM_NOT_SUPPORTED;
- // return sizeof (*pRes);
- // }
- // /* Validate Req Lengths */
- // if (ReqLen != (sizeof (SetSOLConfigReq_T) +
- // SOLConfigParamLengths [SetReq->ParamSel]))
- // {
- // *pRes = CC_REQ_INV_LEN;
- // return sizeof (*pRes);
- // }
- // if(SetReq->ChannelNum & RESERVED_VALUE_F0)
- // {
- // /* Alarm !!! Somebody is trying to set Reseved Bits */
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // /* Check for Reserved Bits */
- // for (i = 0; i < sizeof (m_RsvdBitsCheck)/ sizeof (m_RsvdBitsCheck[0]); i++)
- // {
- // /* Check if this Parameter Selector needs Reserved bit checking !! */
- // if (m_RsvdBitsCheck[i].Params == SetReq->ParamSel )
- // {
- // for (j = 0; j < m_RsvdBitsCheck[i].DataLen; j++)
- // {
- // if ( 0 != (pReq[2+j] & m_RsvdBitsCheck[i].ReservedBits[j]))
- // {
- // /* Alarm !!! Somebody is trying to set Reseved Bits */
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // }
- // }
- // }
- // *pRes = CC_NORMAL;
- // switch (SetReq->ParamSel)
- // {
- // case SOL_SET_IN_PROGRESS:
- // LOCK_BMC_SHARED_MEM(BMCInst);
- // m_SOL_SetInProgress = BMC_GET_SHARED_MEM(BMCInst)->m_SOL_SetInProgress;
- // UNLOCK_BMC_SHARED_MEM(BMCInst);
- // /* Commit Write is optional and supported
- // * only if rollback is supported */
- // if ((SET_COMPLETE != (*(_NEAR_ INT8U*)(SetReq + 1))) &&
- // (SET_IN_PROGRESS != (*(_NEAR_ INT8U*)(SetReq + 1))))
- // {
- // *pRes = CC_PARAM_NOT_SUPPORTED;
- // return sizeof (*pRes);
- // }
- // else if ((SET_IN_PROGRESS == m_SOL_SetInProgress) &&
- // (SET_IN_PROGRESS == (*(_NEAR_ INT8U*)(SetReq + 1))))
- // {
- // /*Set In Progress already Set */
- // *pRes = CC_SET_IN_PROGRESS;
- // return sizeof (*pRes);
- // }
- // LOCK_BMC_SHARED_MEM(BMCInst);
- // BMC_GET_SHARED_MEM(BMCInst)->m_SOL_SetInProgress = (*(_NEAR_ INT8U*)(SetReq + 1));
- // UNLOCK_BMC_SHARED_MEM(BMCInst);
- // break;
- // case SOL_ENABLE_PARAM:
- // pBMCInfo->SOLCfg[EthIndex].SOLEnable = (*(_NEAR_ INT8U*)(SetReq + 1));
- // break;
- // case SOL_AUTHENTICATION_PARAM:
- // /*
- // #34323: Check if user is setting reserved bits. This cannot be handled at main logic
- // of reserve bit checking.
- // */
- // if (0 != IsValidPrivilege((0x3F & (*(_NEAR_ INT8U*)(SetReq + 1)))))
- // {
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // pBMCInfo->SOLCfg[EthIndex].SOLAuth = (*(_NEAR_ INT8U*)(SetReq + 1));
- // break;
- // case SOL_ACCUM_THRESHOLD_PARAM:
- // if(((*(_NEAR_ INT8U*)(SetReq + 1)) == 0) || ((*((_NEAR_ INT8U*)(SetReq +1)+1)) == 0))
- // {
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
-
- // pBMCInfo->SOLCfg[EthIndex].CharAccThresh = (*(_NEAR_ INT16U*)(SetReq + 1));
- // break;
- // case SOL_RETRY_PARAM:
- // pBMCInfo->SOLCfg[EthIndex].SOLRetryCount = (*((_NEAR_ INT8U*)(SetReq +1) ) );
- // pBMCInfo->SOLCfg[EthIndex].SOLRetryInterval = (*((_NEAR_ INT8U*)(SetReq +1)+1));
- // break;
- // case SOL_NVOL_BIT_RATE_PARAM:
- // if ( 0 != IsBaudRateValid (*(_NEAR_ INT8U*)(SetReq + 1)))
- // {
- // /*Invalid baud rate setting */
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // if((*(_NEAR_ INT8U*)(SetReq+1)) == 0)
- // *(_NEAR_ INT8U*)(SetReq+1) = BAUD_RATE_9600;
- // pBMCInfo->SOLCfg[EthIndex].NVBitRate = *(_NEAR_ INT8U*)(SetReq + 1);
- // break;
- // case SOL_VOL_BIT_RATE_PARAM:
- // if ( 0 != IsBaudRateValid (*(_NEAR_ INT8U*)(SetReq + 1)))
- // {
- // /*Invalid baud rate setting */
- // *pRes = CC_INV_DATA_FIELD;
- // return sizeof (*pRes);
- // }
- // if((*(_NEAR_ INT8U*)(SetReq+1)) == 0)
- // *(_NEAR_ INT8U*)(SetReq+1) = BAUD_RATE_9600;
- // pSharedMem->SOLBitRate[EthIndex] = *(_NEAR_ INT8U*)(SetReq + 1);
- // break;
- // case SOL_PAYLD_CHANNEL_PARAM:
- // *pRes = CC_ATTEMPT_TO_SET_RO_PARAM;
- // return sizeof (*pRes);
- // break;
- // case SOL_PAYLD_PORT_NUM_PARAM:
- // *pRes = CC_ATTEMPT_TO_SET_RO_PARAM;
- // return sizeof (*pRes);
- // break;
- // default:
- // if(g_PDKHandle[PDK_SETSOLOEMPARAM] != NULL &&
- // (SetReq->ParamSel >= 192 && SetReq->ParamSel <= 255))
- // {
- // oem_addr = (unsigned long)((char*)pSetOEMReq + sizeof(SetSOLConfigOEMReq_T));
- // size = ((int(*)(INT8U, unsigned long*,int))(g_PDKHandle[PDK_SETSOLOEMPARAM]))(SetReq->ParamSel, &oem_addr ,BMCInst);
- // if(size <= 0)
- // {
- // *pRes = CC_PARAM_NOT_SUPPORTED;
- // return sizeof(*pRes);
- // }
- // else
- // {
- // *pRes = CC_PARAM_NOT_SUPPORTED;
- // return sizeof(*pRes);
- // }
- // }
- // }
- // FlushIPMI((INT8U*)&pBMCInfo->SOLCfg[0],(INT8U*)&pBMCInfo->SOLCfg[EthIndex],pBMCInfo->IPMIConfLoc.SOLCfgAddr,
- // sizeof(SOLConfig_T),BMCInst);
- // return sizeof (*pRes);
- // }
- // #endif /* SET_SOL_CONFIGURATION */
- // /**
- // * IsBaudRateValid
- // **/
- // int
- // IsBaudRateValid (INT8U BaudRate)
- // {
-
- // /* Check against supported Baud Rates */
- // if ((BaudRate == 0) ||
- // (BaudRate == BAUD_RATE_9600) ||
- // (BaudRate == BAUD_RATE_19200) ||
- // (BaudRate == BAUD_RATE_38400) ||
- // (BaudRate == BAUD_RATE_57600) ||
- // (BaudRate == BAUD_RATE_115200))
- // {
- // //Baud rate is valid
- // return 0;
- // }
- // //Baud rate is invvalid
- // return -1;
- // }
- // /*
- // Check if user entered Auth type is valid
- // */
- // int IsValidPrivilege(INT8U priv_lvl)
- // {
- // if ((priv_lvl == 02) ||
- // (priv_lvl == 03) ||
- // (priv_lvl == 04) ||
- // (priv_lvl == 05))
- // return 0;
- // else
- // return -1; //// Invalid privilege
- // }
- // #if 0
- // /**
- // * InitSOLPort
- // **/
- // int
- // InitSOLPort (INT8U BaudRate)
- // {
- // int status;
- // int fd;
- // struct termios tty_struct;
- // if ((fd = open(SOL_IFC_PORT,O_RDONLY)) < 0)
- // {
- // IPMI_WARNING ("Can't open serial port..%s\n",strerror(errno));
- // return -1;
- // }
- // status = tcgetattr(fd,&tty_struct); /* get termios structure */
- // switch (BaudRate) {
- // case BAUD_RATE_9600:
- // cfsetospeed(&tty_struct, B9600);
- // cfsetispeed(&tty_struct, B9600);
- // break;
- // case BAUD_RATE_19200:
- // cfsetospeed(&tty_struct, B19200);
- // cfsetispeed(&tty_struct, B19200);
- // break;
- // case BAUD_RATE_38400:
- // cfsetospeed(&tty_struct, B38400);
- // cfsetispeed(&tty_struct, B38400);
- // break;
- // case BAUD_RATE_57600:
- // cfsetospeed(&tty_struct, B57600);
- // cfsetispeed(&tty_struct, B57600);
- // break;
- // case BAUD_RATE_115200:
- // cfsetospeed(&tty_struct, B115200);
- // cfsetispeed(&tty_struct, B115200);
- // break;
- // default:
- // IPMI_ERROR ("SOLConfig.c : Invalid baud rate = %x\n", BaudRate);
- // }
- // tty_struct.c_cflag |= CS8; /* Set 8bits/charecter */
- // tty_struct.c_cflag &= ~CSTOPB; /* set framing to 1 stop bits */
- // tty_struct.c_cflag &= ~(PARENB); /* set parity to NONE */
- // tty_struct.c_iflag &= ~(INPCK);
- // /* Set Hardware flow control */
- // tty_struct.c_cflag |= CRTSCTS;
- // tty_struct.c_lflag &= ~(ICANON|ECHO|ECHOE|ISIG); /* Raw input mode */
- // tty_struct.c_oflag &= ~(OCRNL | ONOCR | ONLRET);
- // tty_struct.c_iflag &= ~(IXON | IXOFF); /* no sw flow ctrl */
- // tty_struct.c_iflag &= ~INLCR;
- // tty_struct.c_iflag &= ~ICRNL;
- // tty_struct.c_iflag &= ~IGNCR;
- // PDK_InitSOLPort (&tty_struct); /* OEM specific SOL initialization */
- // /* set the new attributes in the tty driver */
- // status = tcsetattr(fd, TCSANOW, &tty_struct);
- // close (fd);
- // return 0;
- // }
- // #endif /* #if 0 */
|