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

Data Class Interface で転送された受信データを取得する

Syntax
C++
uhs_status_t Usbh_Cdc_ReadData(void* pContext, PCDC_BUFF_INFO pstData, uhs_ubit32_t* pu32RemainBuffSize);
引数 
説明 
void* pContext 
[in] コミュニケーションデバイス識別へのポインタ 
PCDC_BUFF_INFO pstData 
[out] 受信データ情報へのポインタ 
uhs_ubit32_t* pu32RemainBuffSize 
[out] 受信バッファの残サイズへのポインタ 

Data Class Interface で転送された受信データの取得結果

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

Data Class Interface で転送された受信データを取得します。 

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

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

pu32RemainBuffSize は、バイト単位で格納されます。 残サイズが1KB未満の場合は、受信バッファフル状態として「0」が格納されます。

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

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

1: uhs_status_t Usbh_Cdc_ReadData(void* pContext, 2: PCDC_BUFF_INFO pstData, 3: uhs_ubit32_t* pu32RemainBuffSize) 4: { 5: PCDC_DEVICE pCdcDevice; 6: uhs_status_t nRetvalResorce; 7: CDC_FUNC_STATUS nRetval; 8: uhs_ubit8_t u8CntDeviceId; 9: uhs_status_t nRetStatus; 10: 11: 12: 13: 14: if( pContext == NULL) { 15: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 16: return( USBCDC_API_PARAM_ERROR ); 17: } 18: 19: 20: 21: 22: if( g_pCdcDriver == NULL ) { 23: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_INIT ); 24: return( USBCDC_API_SYS_SYSTEM_ERROR ); 25: } 26: 27: 28: 29: 30: 31: nRetStatus = Usbh_Cdc_CheckDeviceStatus(pContext, &pCdcDevice, &u8CntDeviceId, ID_API_DET); 32: if(nRetStatus != USBCDC_API_SUCCESS){ 33: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_SYSTEM_ERROR ); 34: return(nRetStatus); 35: } 36: 37: 38: 39: 40: if( (pstData == NULL) || 41: (pstData->pu8Buff == NULL) || 42: (pstData->u32RequestLength == 0) || 43: (pu32RemainBuffSize == NULL) ) { 44: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 45: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 46: return( USBCDC_API_PARAM_ERROR ); 47: } 48: 49: 50: 51: 52: nRetvalResorce = CdcUtils_AcquisitionSemaphore(pCdcDevice->pDataInExecuteLock, WAITFOREVER); 53: if( nRetvalResorce != TRUE ){ 54: 55: 56: 57: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 58: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 59: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 60: } 61: 62: 63: 64: 65: if( (pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_CONNECTING) || 66: (pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_REGIST) ) { 67: 68: 69: 70: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 71: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 72: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_USE ); 73: return( USBCDC_API_NOT_READY ); 74: } 75: else if( pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_NO_SUPPORT ) { 76: 77: 78: 79: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 80: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 81: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NO_SUPPORT ); 82: return( USBCDC_API_NO_SUPPORT ); 83: } 84: else if( pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_CLOSE ) { 85: 86: 87: 88: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 89: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 90: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_OPEN ); 91: return( USBCDC_API_NOT_OPEN ); 92: } 93: else { 94: ; 95: } 96: 97: 98: 99: 100: nRetval = Usbh_Cdc_ExeBulkInReadBuff(pCdcDevice, pstData, pu32RemainBuffSize); 101: if(nRetval != CDC_FUNC_STATUS_SUCCESS ) { 102: 103: 104: 105: 106: (void)CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 107: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 108: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_FAILED_BULK ); 109: return( USBCDC_API_TRANS_DATA_FAILED ); 110: } 111: 112: 113: 114: 115: nRetvalResorce = CdcUtils_ReleaseSemaphore( pCdcDevice->pDataInExecuteLock ); 116: if(nRetvalResorce != TRUE){ 117: 118: 119: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 120: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 121: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 122: } 123: 124: 125: 126: 127: nRetvalResorce = CdcUtils_ReleaseSemaphore( g_pCdcDriver->pApiDetAccessLock[u8CntDeviceId] ); 128: if(nRetvalResorce != TRUE){ 129: 130: DIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 131: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 132: } 133: 134: return( USBCDC_API_SUCCESS ); 135: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.