RNIC_TIMER_STATUS_ENUM_UINT8 RNIC_GetTimerStatus( RNIC_TIMER_ID_ENUM_UINT16 enTimerId ) { RNIC_TIMER_CTX_STRU *pstRnicTimerCtx; VOS_UINT32 ulLeftLen; pstRnicTimerCtx = RNIC_GetTimerAddr(); ulLeftLen = 0; if (enTimerId >= RNIC_MAX_TIMER_NUM) { return RNIC_TIMER_STATUS_STOP; } if (RNIC_TIMER_STATUS_RUNING == pstRnicTimerCtx[enTimerId].enTimerStatus) { if (VOS_OK != (VOS_GetRelTmRemainTime(&(pstRnicTimerCtx[enTimerId].hTimer), &ulLeftLen))) { RNIC_StopTimer(enTimerId); return RNIC_TIMER_STATUS_STOP; } else { return RNIC_TIMER_STATUS_RUNING; } } return RNIC_TIMER_STATUS_STOP; }
/***************************************************************************** 函 数 名 : RNIC_GetTimerStatus 功能描述 : 查询指定的RNIC定时器的状态 输入参数 : enTimerId:需要查询的定时器ID 输出参数 : 无 返 回 值 : RNIC_TIMER_STATUS_ENUM_UINT8:定时器状态 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2011年12月12日 修改内容 : 新生成函数 *****************************************************************************/ RNIC_TIMER_STATUS_ENUM_UINT8 RNIC_GetTimerStatus( RNIC_TIMER_ID_ENUM_UINT16 enTimerId ) { RNIC_TIMER_CTX_STRU *pstRnicTimerCtx; VOS_UINT32 i; VOS_UINT32 ulLeftLen; pstRnicTimerCtx = RNIC_GetTimerAddr(); ulLeftLen = 0; for (i = 0 ; i < RNIC_MAX_TIMER_NUM ; i++) { if ((RNIC_TIMER_STATUS_RUNING == pstRnicTimerCtx[i].enTimerStatus) && (enTimerId == pstRnicTimerCtx[i].enTimerId)) { break; } } if (i >= RNIC_MAX_TIMER_NUM) { return RNIC_TIMER_STATUS_STOP; } if (VOS_OK != (VOS_GetRelTmRemainTime(&(pstRnicTimerCtx[i].hTimer), &ulLeftLen ))) { RNIC_StopTimer(enTimerId); return RNIC_TIMER_STATUS_STOP; } return RNIC_TIMER_STATUS_RUNING; }
ssize_t RNIC_WriteOnDemandFile( struct file *file, const char __user *buf, size_t len, loff_t *ppos ) { RNIC_DIAL_MODE_STRU *pstDialMode; RNIC_DIAL_MODE_STRU stDialMode; VOS_CHAR acModeTemp[RNIC_ONDEMAND_FILE_LEN]; PS_MEM_SET(acModeTemp, 0x00, RNIC_ONDEMAND_FILE_LEN); /* 获取按需拨号的模式以及时长的地址 */ pstDialMode = RNIC_GetDialModeAddr(); vos_printf("RNIC_WriteOnDemandFile:buf%x len %d \n", *buf, len); if (len >= RNIC_ONDEMAND_FILE_LEN) { RNIC_ERROR_LOG1(ACPU_PID_RNIC, "RNIC_WriteOnDemandFile:len is!", len); return -ENOSPC; } /*拷贝用户空间数据到内核空间上面*/ if (copy_from_user((VOS_VOID *)acModeTemp, (VOS_VOID *)buf, len) > 0) { RNIC_ERROR_LOG(ACPU_PID_RNIC, "RNIC_WriteOnDemandFile:copy_from_user ERR!"); return -EFAULT; } acModeTemp[len] = '\0'; vos_printf("RNIC_WriteOnDemandFile:acModeTemp %s len is %d\r\n", acModeTemp, len); stDialMode.enDialMode = RNIC_TransferStringToInt(acModeTemp); /* 按需拨号 */ if (AT_RNIC_DIAL_MODE_DEMAND_CONNECT == stDialMode.enDialMode) { RNIC_StartTimer(TI_RNIC_DEMAND_DIAL_DISCONNECT, TI_RNIC_DEMAND_DIAL_DISCONNECT_LEN); } else { RNIC_StopTimer(TI_RNIC_DEMAND_DIAL_DISCONNECT); } /* 保存拨号模式上下文中 */ pstDialMode->enDialMode = stDialMode.enDialMode; RNIC_SendDialInfoMsg(ID_RNIC_MNTN_DIAL_MODE_INFO); return (ssize_t)len; }
ssize_t RNIC_WriteIdleTimerOutFile( struct file *file, const char __user *buf, size_t len, loff_t *ppos ) { RNIC_DIAL_MODE_STRU *pstDialMode; RNIC_DIAL_MODE_STRU stDialMode; VOS_CHAR acIdleTimeTemp[RNIC_IDLETIMEROUT_FILE_LEN]; PS_MEM_SET(acIdleTimeTemp, 0x00, RNIC_IDLETIMEROUT_FILE_LEN); if (len >= RNIC_IDLETIMEROUT_FILE_LEN) { RNIC_ERROR_LOG1(ACPU_PID_RNIC, "RNIC_WriteIdleTimerOutFile:len is!", len); return -ENOSPC; } /*拷贝用户空间数据到内核空间上面*/ if (copy_from_user((VOS_VOID *)acIdleTimeTemp, (VOS_VOID *)buf, len) > 0) { RNIC_ERROR_LOG(ACPU_PID_RNIC, "RNIC_WriteIdleTimerOutFile:copy_from_user ERR!"); return -EFAULT; } acIdleTimeTemp[len]= '\0'; stDialMode.ulIdleTime = RNIC_TransferStringToInt(acIdleTimeTemp); /* 获取按需拨号的模式以及时长的地址 */ pstDialMode = RNIC_GetDialModeAddr(); if (AT_RNIC_DIAL_MODE_DEMAND_DISCONNECT == pstDialMode->enDialMode) { /* PDP激活,且与上次设置的时长不一致,需要启动拨号断开定时器 */ if ( pstDialMode->ulIdleTime != stDialMode.ulIdleTime) { RNIC_StopTimer(TI_RNIC_DEMAND_DIAL_DISCONNECT); RNIC_StartTimer(TI_RNIC_DEMAND_DIAL_DISCONNECT, TI_RNIC_DEMAND_DIAL_DISCONNECT_LEN); } } pstDialMode->ulIdleTime = stDialMode.ulIdleTime; RNIC_SendDialInfoMsg(ID_RNIC_MNTN_IDLE_TIMEOUT_INFO); return (ssize_t)len; }