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

非同期シリアル通信を設定する

Syntax
C++
uhs_status_t Usbh_Cdc_SetLineCoding(void* pContext, PCDC_LINE_CODING pstData);
引数 
説明 
void* pContext 
[in] コミュニケーションデバイス識別へのポインタ 
PCDC_LINE_CODING pstData 
[in] 設定する非同期シリアル通信設定情報へのポインタ 

非同期シリアル通信の設定結果

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

非同期シリアル通信を設定します。 

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

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

接続されたコミュニケーションデバイスが SetLineCoding リクエスト非サポートの場合は、 エラーを返却します。 

 

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

1: uhs_status_t Usbh_Cdc_SetLineCoding(void* pContext, 2: PCDC_LINE_CODING pstData) 3: { 4: PCDC_DEVICE pCdcDevice; 5: usb_device_request_t* pRequest; 6: CDC_FUNC_STATUS nRetval; 7: uhs_ubit8_t *pu8SetBuff; 8: uhs_ubit8_t u8CntDeviceId; 9: uhs_status_t nRetStatus; 10: uhs_status_t nRetvalResorce; 11: 12: 13: 14: 15: if( pContext == NULL ){ 16: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 17: return( USBCDC_API_PARAM_ERROR ); 18: } 19: 20: 21: 22: 23: if( g_pCdcDriver == NULL ) { 24: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_INIT ); 25: return( USBCDC_API_SYS_SYSTEM_ERROR ); 26: } 27: 28: 29: 30: 31: 32: nRetStatus = Usbh_Cdc_CheckDeviceStatus(pContext, &pCdcDevice, &u8CntDeviceId, ID_CLSREQ_DET); 33: if(nRetStatus != USBCDC_API_SUCCESS){ 34: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_SYSTEM_ERROR ); 35: return(nRetStatus); 36: } 37: 38: 39: 40: 41: 42: if( pstData == NULL ) { 43: 44: 45: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 46: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 47: return( USBCDC_API_PARAM_ERROR ); 48: } 49: if( pstData->u32BaudRate == 0 ) { 50: 51: 52: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 53: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 54: return( USBCDC_API_PARAM_ERROR ); 55: } 56: if( (pstData->StopBit != LINE_CODING_STOPBIT_1) && 57: (pstData->StopBit != LINE_CODING_STOPBIT_15) && 58: (pstData->StopBit != LINE_CODING_STOPBIT_2) ) { 59: 60: 61: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 62: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 63: return( USBCDC_API_PARAM_ERROR ); 64: } 65: if( (pstData->Parity != LINE_CODING_PARITY_NONE) && 66: (pstData->Parity != LINE_CODING_PARITY_ODD) && 67: (pstData->Parity != LINE_CODING_PARITY_EVEN) && 68: (pstData->Parity != LINE_CODING_PARITY_MARK) && 69: (pstData->Parity != LINE_CODING_PARITY_SPACE) ) { 70: 71: 72: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 73: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 74: return( USBCDC_API_PARAM_ERROR ); 75: } 76: if( (pstData->DataBit != LINE_CODING_DATABIT_5) && 77: (pstData->DataBit != LINE_CODING_DATABIT_6) && 78: (pstData->DataBit != LINE_CODING_DATABIT_7) && 79: (pstData->DataBit != LINE_CODING_DATABIT_8) && 80: (pstData->DataBit != LINE_CODING_DATABIT_16) ) { 81: 82: 83: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 84: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_PARAM_ERROR ); 85: return( USBCDC_API_PARAM_ERROR ); 86: } 87: 88: 89: 90: 91: if( (pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_CONNECTING) || 92: (pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_REGIST) ) { 93: 94: 95: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 96: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NOT_USE ); 97: return( USBCDC_API_NOT_READY ); 98: } 99: else if( pCdcDevice->nDeviceStat == CDC_DEVICE_STAT_NO_SUPPORT ) { 100: 101: 102: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 103: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_NO_SUPPORT ); 104: return( USBCDC_API_NO_SUPPORT ); 105: } 106: else { 107: ; 108: } 109: 110: 111: 112: 113: pRequest = CdcUtils_Malloc(sizeof(usb_device_request_t)); 114: if(pRequest == NULL) { 115: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 116: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 117: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 118: } 119: 120: 121: 122: 123: pu8SetBuff = CdcUtils_Malloc(7); 124: if(pu8SetBuff == NULL) { 125: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 126: CdcUtils_Free(pRequest); 127: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 128: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 129: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 130: } 131: 132: 133: 134: 135: pRequest->bmRequestType = 0x21; 136: pRequest->bRequest = 0x20; 137: pRequest->wValue0 = 0x00; 138: pRequest->wValue1 = 0x00; 139: pRequest->wIndex0 = 0x00; 140: pRequest->wIndex1 = 0x00; 141: pRequest->wLength0 = UNPACK16_LITTLE_ENDIAN_LSB( 0x0007 ); 142: pRequest->wLength1 = UNPACK16_LITTLE_ENDIAN_MSB( 0x0007 ); 143: 144: 145: 146: 147: pu8SetBuff[0] = UNPACK32_LITTLE_ENDIAN_LSB( pstData->u32BaudRate ); 148: pu8SetBuff[1] = UNPACK32_LITTLE_ENDIAN_LSBM( pstData->u32BaudRate ); 149: pu8SetBuff[2] = UNPACK32_LITTLE_ENDIAN_MSBM( pstData->u32BaudRate ); 150: pu8SetBuff[3] = UNPACK32_LITTLE_ENDIAN_MSB( pstData->u32BaudRate ); 151: pu8SetBuff[4] = (uhs_ubit8_t)(pstData->StopBit); 152: pu8SetBuff[5] = (uhs_ubit8_t)(pstData->Parity); 153: pu8SetBuff[6] = (uhs_ubit8_t)(pstData->DataBit); 154: 155: 156: 157: 158: nRetval = Usbh_Cdc_ForCommand(pCdcDevice, pRequest, pu8SetBuff, NULL); 159: if(nRetval != CDC_FUNC_STATUS_SUCCESS){ 160: CdcUtils_Free(pu8SetBuff); 161: CdcUtils_Free(pRequest); 162: 163: 164: (void)CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 165: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_FAILED_CLSREQ ); 166: return( USBCDC_API_TRANS_CLSREQ_FAILED ); 167: } 168: 169: 170: 171: 172: CdcUtils_Free(pu8SetBuff); 173: 174: 175: 176: 177: CdcUtils_Free(pRequest); 178: 179: 180: 181: 182: nRetvalResorce = CdcUtils_ReleaseSemaphore( g_pCdcDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 183: if(nRetvalResorce != TRUE){ 184: 185: CIAPI_CDC_REPORT_SUMMARY( USBCDC_LOG_SYS_OUT_OF_RESOURCE ); 186: return( USBCDC_API_SYS_OUT_OF_RESOURCE ); 187: } 188: 189: return( USBCDC_API_SUCCESS ); 190: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.