?? scu2misc.c
字號:
#include <psos.h>
#include "board.h"
#include "scu2misc.h"
#include "bspcomm.h"
#include "bspspec.h"
static void ScuMiscInit(void *pDataBuf, ScuMiscCfgStruct *cfg )
{
ScuMiscCfgStruct* pCfg =(ScuMiscCfgStruct *)(pDataBuf);
memmove(pCfg,cfg,sizeof(*cfg));
}
static int ScuMiscCntrl(void *pDataBuf, int cmd, void *pParam, int maxlen)
{
int ret, i, j, Slave0=0, Slave1=1, NIUAlarmsBuf[10];
volatile int rc;
ULONG temp, temp1, *buf;
ScuMiscCfgStruct* pCfg =(ScuMiscCfgStruct *)(pDataBuf);
temp=*(ULONG *)(CS7_BASE+8);
temp1=*(ULONG *)(CS7_BASE+12);
switch(cmd)
{
case SDC_REINIT:
ScuMiscInit(pDataBuf,pCfg);
break;
case SDC_GET_ALARMS:
buf=(ULONG *)pParam;i=0; maxlen/=4;
if((temp&(1L<<(31-0)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_LOST_FCLK;
}
if((temp&(1L<<(31-1)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_LOST_OBCLK;
}
if((temp&(1L<<(31-2)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET0_SYNC1;
}
if((temp&(1L<<(31-3)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET0_SYNC2;
}
if(temp&(1L<<(31-4))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET0_ALARM;
}
if(temp&(1L<<(31-5))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET0_TESTMODE;
}
if((temp&(1L<<(31-8)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BAT_TEMP_HI;
}
if((temp&(1L<<(31-10)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_DC_POWER_ERR;
}
if((temp&(1L<<(31-25)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BAT_VOLTAGE_HI;
}
if((temp&(1L<<(31-27)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BAT_VOLTAGE_LO;
}
if((temp&(1L<<(31-21)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET1_SYNC1;
}
if((temp&(1L<<(31-22)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET1_SYNC2;
}
if(temp&(1L<<(31-23))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET1_ALARM;
}
if(temp&(1L<<(31-24))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_ZIPSOCKET1_TESTMODE;
}
if(temp&(1L<<(31-29))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_MAIN_POWER_LOST;
}
if((temp&(1L<<(31-11)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BPU0_DSP0_TIMEOUT;
}
if((temp&(1L<<(31-12)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BPU0_DSP1_TIMEOUT;
}
if((temp&(1L<<(31-30)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BPU1_DSP0_TIMEOUT;
}
if((temp&(1L<<(31-31)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BPU1_DSP1_TIMEOUT;
}
if(temp&(1L<<(31-13))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_TLOW0;
}
if(temp&(1L<<(31-14))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_THIGH0;
}
if(temp&(1L<<(31-16))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_TLOW1;
}
if(temp&(1L<<(31-17))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_TLOW2;
}
if(temp&(1L<<(31-18))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_THIGH2;
}
if(temp&(1L<<(31-19))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_TLOW3;
}
if(temp&(1L<<(31-20))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_THIGH3;
}
if((temp&(1L<<(31-7)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BT8370_ALARM0;
rc = sd_cntrl(SDN_NIU, SDC_SEL_SLAVE, &Slave0, sizeof(int));
rc = sd_cntrl(SDN_NIU, SDC_GET_ALARMS, NIUAlarmsBuf, sizeof(NIUAlarmsBuf));
for (j = 0; j < rc; j++){
if(rc == SDE_SHORTER_BUF)
return SDE_SHORTER_BUF;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_FRAME_ALIGNMENT)
buf[i++]=SDA_BT8370_0_LOSS_OF_FRAME_ALIGNMENT;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_RECEIVE_SIGNAL)
buf[i++]=SDA_BT8370_0_LOSS_OF_RECEIVE_SIGNAL;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_RECEIVE_ANALOG_SIGNAL)
buf[i++]=SDA_BT8370_0_LOSS_OF_RECEIVE_ANALOG_SIGNAL;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_ALARM_INDICATION_SIGNAL)
buf[i++]=SDA_BT8370_0_LOSS_OF_ALARM_INDICATION_SIGNAL;
else if(NIUAlarmsBuf[j] == SDA_BT8370_POSITIVE_FRAME_SLIP)
buf[i++]=SDA_BT8370_0_POSITIVE_FRAME_SLIP;
else if(NIUAlarmsBuf[j] == SDA_BT8370_NEGATIVE_FRAME_SLIP)
buf[i++]=SDA_BT8370_0_NEGATIVE_FRAME_SLIP;
}
}
if((temp&(1L<<(31-26)))==0){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_BT8370_ALARM1;
rc = sd_cntrl(SDN_NIU, SDC_SEL_SLAVE, &Slave1, sizeof(int));
rc = sd_cntrl(SDN_NIU, SDC_GET_ALARMS, NIUAlarmsBuf, sizeof(NIUAlarmsBuf));
for (j = 0; j < rc; j++){
if(rc == SDE_SHORTER_BUF)
return SDE_SHORTER_BUF;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_FRAME_ALIGNMENT)
buf[i++]=SDA_BT8370_1_LOSS_OF_FRAME_ALIGNMENT;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_RECEIVE_SIGNAL)
buf[i++]=SDA_BT8370_1_LOSS_OF_RECEIVE_SIGNAL;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_RECEIVE_ANALOG_SIGNAL)
buf[i++]=SDA_BT8370_1_LOSS_OF_RECEIVE_ANALOG_SIGNAL;
else if(NIUAlarmsBuf[j] == SDA_BT8370_LOSS_OF_ALARM_INDICATION_SIGNAL)
buf[i++]=SDA_BT8370_1_LOSS_OF_ALARM_INDICATION_SIGNAL;
else if(NIUAlarmsBuf[j] == SDA_BT8370_POSITIVE_FRAME_SLIP)
buf[i++]=SDA_BT8370_1_POSITIVE_FRAME_SLIP;
else if(NIUAlarmsBuf[j] == SDA_BT8370_NEGATIVE_FRAME_SLIP)
buf[i++]=SDA_BT8370_1_NEGATIVE_FRAME_SLIP;
}
}
if(temp1&(1L<<(31-0))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_EXTERNAL_ALARM0;
}
if(temp1&(1L<<(31-1))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_EXTERNAL_ALARM1;
}
if(temp1&(1L<<(31-2))){
if(i>=maxlen)return SDE_SHORTER_BUF;
buf[i++]=SDA_EXTERNAL_ALARM2;
}
return i;
case SDC_NIU0_TYPE:
return (GET_PA_BIT(4))?NIU_E1:NIU_HDSL;
case SDC_NIU1_TYPE:
return (GET_PA_BIT(5))?NIU_E1:NIU_HDSL;
case SDC_BAT_RECHS:
return (temp&(1<<(31-6)))?1:0;
case SDC_GET_TCOM0:
return (temp&(1<<(31-15)))?1:0;
case SDC_GET_SITE_TYPE:
return (GET_PC_BIT(4))?SITE_S:SITE_O;
case SDC_GET_SITE_ADDR:
return (GET_PA_BIT(3)<<2)|(GET_PC_VAL(0x0600)>>9);
default:
return SDE_UNKNOW_CMD;
}/* end of switch(cmd) */
return SDE_OK;
}
char *ScuMiscBspInit(int DEV, char *FreeMemPtr, ScuMiscCfgStruct *cfg)
{
InstallSD(DEV,NULL,NULL,ScuMiscCntrl,FreeMemPtr);
ScuMiscInit(FreeMemPtr, cfg);
FreeMemPtr += sizeof(ScuMiscCfgStruct);
memcpy(FreeMemPtr,"*ScuMisc",8);
FreeMemPtr += 8;
return FreeMemPtr;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -