AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
Usbh_Cdc_RestartBulkIN 関数

Data Class Interface での Bulk IN 転送を再開する

Syntax
C++
uhs_status_t Usbh_Cdc_RestartBulkIN(void* pContext);
引数 
説明 
void* pContext 
[in] コミュニケーションデバイス識別へのポインタ 

Data Class Interface での Bulk IN 転送の再開結果

返値の詳細 
説明 
成功 
パラメータエラー 
初期化済みでない、デバイス情報不一致 
デバイスが接続されていない 
リソース獲得失敗 
使用準備が出来ていない 
非サポートデバイス 
オープンしていない 
要求が既に発行済み 
バッファフル状態 
データ転送失敗 

Data Class Interface での Bulk IN 転送を再開します。 

pContext は、接続コールバックにてコミュニケーションデバイスクラスドライバから ユーザアプリケーションへ渡される識別子情報です。 

ユーザアプリケーションは、この識別子で複数台のコミュニケーションデバイスを管理 して下さい。識別子情報に対してアクセスする事は禁止です。 

受信バッファフル状態であった場合はエラーを返却し、Bulk IN 要求の再開は行われません。 

Bulk IN 転送完了通知のコールバックがエラーだった場合は、Bulk IN 要求が停止している可能性があるので、 本APIを呼び出してBluk IN 要求の再発行を行う必要があります。

通知用コールバックからの呼出しは禁止です。 

Usbh_Cdc_Open APIを実施後に使用して下さい。 実施前に呼び出した場合は、エラーを返却します。 

1: uhs_status_t Usbh_Cdc_RestartBulkIN(void* pContext) 2: { 3: PCDC_DEVICE pCdcDevice; 4: uhs_status_t nRetvalResorce; 5: CDC_FUNC_STATUS nRetval; 6: uhs_ubit8_t u8CntDeviceId; 7: uhs_status_t nRetStatus; 8: 9: 10: 11: 12: if( pContext == NULL ) { 13: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 14: return( USBCDC_API_PARAM_ERROR ); 15: } 16: 17: 18: 19: 20: if( g_pCdcDriver == NULL ) { 21: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_INIT ); 22: return( USBCDC_API_SYS_SYSTEM_ERROR ); 23: } 24: 25: 26: 27: 28: 29: nRetStatus = Usbh_Cdc_CheckDeviceStatus(pContext, &pCdcDevice, &u8CntDeviceId, ID_API_DET); 30: if(nRetStatus != USBCDC_API_SUCCESS){ 31: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_SYSTEM_ERROR ); 32: return(nRetStatus); 33: } 34: 35: 36: 37: 38: nRetvalResorce = CdcUtils_AcquisitionSemaphore(pCdcDevice->pDataInExecuteLock, WAITFOREVER); 39: if( nRetvalResorce != TRUE ){ 40: 41: 42: 43: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 44: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 45: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 46: } 47: 48: 49: 50: 51: if( (pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_CONNECTING) || 52: (pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_REGIST) ) { 53: 54: 55: 56: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 57: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 58: 59: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_USE ); 60: return( USBCDC_API_NOT_READY ); 61: } 62: else if( pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_NO_SUPPORT ) { 63: 64: 65: 66: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 67: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 68: 69: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NO_SUPPORT ); 70: return( USBCDC_API_NO_SUPPORT ); 71: } 72: else if( pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_CLOSE ) { 73: 74: 75: 76: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 77: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 78: 79: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_OPEN ); 80: return( USBCDC_API_NOT_OPEN ); 81: } 82: else { 83: ; 84: } 85: 86: 87: 88: 89: nRetvalResorce = CdcUtils_AcquisitionSemaphore(pCdcDevice->pBulkINBuffAccessLock, WAITFOREVER); 90: if( nRetvalResorce != TRUE ){ 91: 92: 93: 94: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 95: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 96: 97: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 98: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 99: } 100: 101: 102: if( pCdcDevice->pBulkInBuff->isBulkINFlag == TRUE ) { 103: 104: 105: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pBulkINBuffAccessLock ); 106: 107: 108: 109: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 110: 111: 112: 113: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 114: 115: 116: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_ALREADY_START_BULKIN ); 117: return( USBCDC_API_ALREADY_START_BULKIN ); 118: } 119: 120: 121: 122: 123: pCdcDevice->pBulkInBuff->pu8EndBuff = (pCdcDevice->pBulkInBuff->pu8StartBuff + (pCdcDevice->pBulkInBuff->u8TotalBuffSize * 1024)); 124: pCdcDevice->pBulkInBuff->pu8ReadPos = pCdcDevice->pBulkInBuff->pu8StartBuff; 125: pCdcDevice->pBulkInBuff->pu8WritePos = pCdcDevice->pBulkInBuff->pu8StartBuff; 126: pCdcDevice->pBulkInBuff->u32RemainBuffSize = (pCdcDevice->pBulkInBuff->u8TotalBuffSize * 1024); 127: 128: 129: 130: 131: nRetval = Usbh_Cdc_IssueBulkINMsg(pCdcDevice); 132: if(nRetval != CDC_FUNC_STATUS_SUCCESS ) { 133: 134: 135: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pBulkINBuffAccessLock ); 136: 137: 138: 139: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 140: 141: 142: 143: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 144: 145: 146: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_FAILED_BULK ); 147: return( USBCDC_API_TRANS_DATA_FAILED ); 148: } 149: 150: 151: 152: 153: pCdcDevice->pBulkInBuff->isBulkINFlag = TRUE; 154: 155: 156: 157: pCdcDevice->pBulkInBuff->isBulkINUserFlag = TRUE; 158: 159: 160: 161: 162: nRetvalResorce = CdcUtils_ReleaseSemaphore( pCdcDevice->pBulkINBuffAccessLock ); 163: if(nRetvalResorce != TRUE){ 164: 165: 166: 167: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 168: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 169: 170: 171: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 172: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 173: } 174: 175: 176: 177: 178: nRetvalResorce = CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 179: if(nRetvalResorce != TRUE){ 180: 181: 182: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 183: 184: 185: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 186: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 187: } 188: 189: 190: 191: 192: nRetvalResorce = CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 193: if(nRetvalResorce != TRUE){ 194: 195: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 196: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 197: } 198: 199: return( USBCDC_API_SUCCESS ); 200: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.