⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmmmisc.c

📁 这是单板上DPRAM的驱动程序
💻 C
字号:
#include <psos.h>
#include "board.h"
#include "cmmmisc.h"
#include "bspcomm.h"
#include "bspspec.h"

static void CmmMiscInit(void *pDataBuf, CmmMiscCfgStruct *cfg )
{
    CmmMiscCfgStruct*   pCfg =(CmmMiscCfgStruct *)(pDataBuf);
    memmove(pCfg,cfg,sizeof(*cfg));
}

static int CmmMiscCntrl(void *pDataBuf, int cmd, void *pParam, int maxlen)
{
    int ret,i,ClkAlarm,rc,len,dev;
    ULONG temp,*buf;
    DS21x54WarningStruct tmp;
    CmmMiscCfgStruct*  pCfg =(CmmMiscCfgStruct *)(pDataBuf);
    switch(cmd)
    {
        case SDC_REINIT:
            CmmMiscInit(pDataBuf,pCfg);
            rc=SDE_OK;
            break;

        case SDC_GET_ALARMS:
        	i=0; len=maxlen/4;
            ClkAlarm=(*(unsigned short *)CLK_CHECK)>>5;
            if((ClkAlarm & 0x10)==0){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_FCK;
            }
            if((ClkAlarm & 0x8)==0){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_SYNCLK;
            }
            if((ClkAlarm & 0x4)==0){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_FCLK;
            }
            if((ClkAlarm & 0x2)==0){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_4M;
            }
            if((ClkAlarm & 0x1)==0){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_13M;
            }
            return i;

		default:
			if(CMMVerChecking()==0)
			{
				if(cmd==SDC_GET_21354_A_ALARMS)dev=SDN_21Q50_A;
				else if(cmd==SDC_GET_21354_B_ALARMS)dev=SDN_21Q50_B;
				else if(cmd==SDC_GET_21354_E_ALARMS)dev=SDN_21Q50_E;
				else if(cmd==SDC_GET_21354_D_ALARMS)dev=SDN_21Q50_D;
				else return SDE_UNKNOW_CMD;
			}
			else
			{
				if(cmd==SDC_GET_21354_A_ALARMS)dev=SDN_21354_A;
				else if(cmd==SDC_GET_21354_B_ALARMS)dev=SDN_21354_B;
				else if(cmd==SDC_GET_21354_C_ALARMS)dev=SDN_21354_C;
				else if(cmd==SDC_GET_21354_D_ALARMS)dev=SDN_21354_D;
				else if(cmd==SDC_GET_21354_E_ALARMS)dev=SDN_21354_E;
				else if(cmd==SDC_GET_21354_F_ALARMS)dev=SDN_21354_F;
				else return SDE_UNKNOW_CMD;
			}				

        	i=0; len=maxlen/4;
        	rc=sd_cntrl(dev,SDC_DS21x54_GETWARNING,&tmp,sizeof(tmp));
        				
			if(rc!=SDE_OK)return 0;
        	if(tmp.RCL==1){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_DS21x54_RCL;
            }
            if(tmp.RLOS==1){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_DS21x54_RLOS;
            }
            if(tmp.RPSlip==1){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_DS21x54_RPSLIP;
            }
            if(tmp.RNSlip==1){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_DS21x54_RNSLIP;
            }
           /* if(tmp.TPSlip==1){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_DS21x54_TPSLIP;
            }
            if(tmp.TNSlip==1){
                if(i>=len)return SDE_SHORTER_BUF;
                ((ULONG*)pParam)[i++]=SDA_DS21x54_TNSLIP;
            }*/
            return i;
         		
    }/* end of switch(cmd) */
    return rc;
}

char *CmmMiscBspInit(int DEV, char *FreeMemPtr, CmmMiscCfgStruct *cfg)
{
    InstallSD(DEV,NULL,NULL,CmmMiscCntrl,FreeMemPtr);
    CmmMiscInit(FreeMemPtr, cfg); 
    FreeMemPtr += sizeof(CmmMiscCfgStruct);
    memcpy(FreeMemPtr,"*CmmMisc",8);
    FreeMemPtr += 8;
    return FreeMemPtr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -