Added support for retrieving adapter and card status

This commit is contained in:
Marty Kraimer
1995-04-26 14:16:59 +00:00
parent cded07df78
commit ef12c444d8
2 changed files with 57 additions and 15 deletions

View File

@@ -324,7 +324,7 @@ unsigned int ab_debug=0;
LOCAL char *statusMessage[] = {
"Success","New Card","Card Conflict","No Card",
"Card not initialized","block transfer queued",
"Card Busy","Timeout","Link Down","Failure"};
"Card Busy","Timeout","Adapter Down","Failure"};
char **abStatusMessage = statusMessage;
LOCAL char *numBitsMessage[] = {
@@ -616,7 +616,7 @@ LOCAL abStatus bt_queue(unsigned short command,ab_card *pcard,
unsigned short *pmb_msg = &pmb->msg[0];
int status;
if(!padapter->adapter_online) return(abLinkDown);
if(!padapter->adapter_online) return(abAdapterDown);
pbtInfo->cmd = command;
pbtInfo->pmsg = pmsg;
pbtInfo->msg_len = msg_len;
@@ -1482,26 +1482,30 @@ LOCAL abStatus registerCard(
if(link>=max_ab_6008s) {
printf("abDrv(registerCard) bad link %hu\n",link);
return(abFailure);
if(ab_debug>0)
printf("abDrv(registerCard) bad link %hu\n",link);
return(abNoCard);
}
if(adapter>=MAX_AB_ADAPTERS) {
printf("abDrv(registerCard) bad adapter %hu\n",adapter);
return(abFailure);
if(ab_debug>0)
printf("abDrv(registerCard) bad adapter %hu\n",adapter);
return(abNoCard);
}
if(card>=MAX_CARDS_PER_ADAPTER) {
printf("abDrv(registerCard) bad card %hu\n",card);
return(abFailure);
if(ab_debug>0)
printf("abDrv(registerCard) bad card %hu\n",card);
return(abNoCard);
}
plink = pab_links[link];
if(!plink || !plink->initialized) {
printf("abDrv(registerCard) link %hu not initialized\n",link);
return(abFailure);
if(ab_debug>0)
printf("abDrv(registerCard) link %hu not initialized\n",link);
return(abNoCard);
}
padapter = plink->papadapter[adapter];
if(padapter) pcard = padapter->papcard[card];
if(pcard) {
if(strcmp(pcard->card_name,card_name)!=0) return(abFailure);
if(strcmp(pcard->card_name,card_name)!=0) return(abCardConflict);
if(pcard->type==type) {
*ppcard = pcard;
return(abSuccess);
@@ -1518,7 +1522,7 @@ LOCAL abStatus registerCard(
return(abSuccess);
}
}
return(abFailure);
return(abCardConflict);
}
/*New Card*/
pcard = abCalloc(1,sizeof(ab_card));
@@ -1598,7 +1602,7 @@ LOCAL abStatus getStatus(void *drvPvt)
unsigned short adapter = pcard->adapter;
ab_adapter *padapter = pab_links[link]->papadapter[adapter];
if(!padapter->adapter_online) return(abLinkDown);
if(!padapter->adapter_online) return(abAdapterDown);
return(pcard->status);
}
@@ -1687,9 +1691,43 @@ LOCAL abStatus btWrite(void *drvPvt,unsigned short *pwrite_msg, unsigned short w
return(btStatus);
}
LOCAL abStatus adapterStatus(unsigned short link,unsigned short adapter)
{
ab_adapter *padapter;
ab_link *plink;
if(link>=max_ab_6008s) return(abFailure);
if(adapter>=MAX_AB_ADAPTERS) return(abFailure);
plink = pab_links[link];
if(!plink || !plink->initialized) return(abFailure);
padapter = plink->papadapter[adapter];
if(!padapter->adapter_online) return(abAdapterDown);
return(abSuccess);
}
LOCAL abStatus cardStatus(
unsigned short link,unsigned short adapter,unsigned short card)
{
ab_adapter *padapter;
ab_link *plink;
ab_card *pcard;
if(link>=max_ab_6008s) return(abFailure);
if(adapter>=MAX_AB_ADAPTERS) return(abFailure);
if(card>=MAX_CARDS_PER_ADAPTER) return(abFailure);
plink = pab_links[link];
if(!plink || !plink->initialized) return(abFailure);
padapter = plink->papadapter[adapter];
pcard = padapter->papcard[card];
if(!pcard) return(abNoCard);
if(!padapter->adapter_online) return(abAdapterDown);
return(pcard->status);
}
LOCAL abDrv abDrvTable= {
registerCard,getLocation,setNbits,setUserPvt,getUserPvt,
getStatus,startScan,updateAo,updateBo,readBo,readBi,btRead,btWrite
getStatus,startScan,updateAo,updateBo,readBo,readBi,btRead,btWrite,
adapterStatus,cardStatus
};
abDrv *pabDrv = &abDrvTable;

View File

@@ -41,7 +41,7 @@ typedef enum {typeNotAssigned,typeBi,typeBo,typeBiBo,typeAi,typeAo,typeBt}
cardType;
/* status values*/
typedef enum{abSuccess,abNewCard,abCardConflict,abNoCard,abNotInitialized,
abBtqueued,abBusy,abTimeout,abLinkDown,abFailure} abStatus;
abBtqueued,abBusy,abTimeout,abAdapterDown,abFailure} abStatus;
extern char **abStatusMessage;
typedef enum{abBitNotdefined,abBit8,abBit16,abBit32} abNumBits;
@@ -73,6 +73,10 @@ typedef struct {
unsigned short read_msg_len);
abStatus(*btWrite)(void *drvPvt,unsigned short *pwrite_msg,
unsigned short write_msg_len);
abStatus (*adapterStatus)
(unsigned short link,unsigned short adapter);
abStatus (*cardStatus)
(unsigned short link,unsigned short adapter, unsigned short card);
}abDrv;
extern abDrv *pabDrv;