Added support for retrieving adapter and card status
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user