📄 async.c
字号:
SetDlgItemText(hDlg, IDC_ASYNC_LOCK_GENERATION_COUNT, tmpBuff);
CheckRadioButton( hDlg,
IDC_ASYNC_LOCK_MASK_SWAP,
IDC_ASYNC_LOCK_WRAP_ADD,
pAsyncLock->fulTransactionType + (IDC_ASYNC_LOCK_MASK_SWAP-1)
);
return(TRUE); // WM_INITDIALOG
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_USE_BUS_NODE_NUMBER))
pAsyncLock->bRawMode = TRUE;
else
pAsyncLock->bRawMode = FALSE;
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_BUS_NUMBER, tmpBuff, STRING_SIZE);
pAsyncLock->DestinationAddress.IA_Destination_ID.NA_Bus_Number = (USHORT)strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_NODE_NUMBER, tmpBuff, STRING_SIZE);
pAsyncLock->DestinationAddress.IA_Destination_ID.NA_Node_Number = (USHORT)strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_OFFSET_HIGH, tmpBuff, STRING_SIZE);
pAsyncLock->DestinationAddress.IA_Destination_Offset.Off_High = (USHORT)strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_OFFSET_LOW, tmpBuff, STRING_SIZE);
pAsyncLock->DestinationAddress.IA_Destination_Offset.Off_Low = strtoul(tmpBuff, NULL, 16);
pAsyncLock->fulTransactionType = 0;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_MASK_SWAP))
pAsyncLock->fulTransactionType = LOCK_TRANSACTION_MASK_SWAP;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_COMPARE_SWAP))
pAsyncLock->fulTransactionType = LOCK_TRANSACTION_COMPARE_SWAP;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_LITTLE_ADD))
pAsyncLock->fulTransactionType = LOCK_TRANSACTION_LITTLE_ADD;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_FETCH_ADD))
pAsyncLock->fulTransactionType = LOCK_TRANSACTION_FETCH_ADD;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_BOUNDED_ADD))
pAsyncLock->fulTransactionType = LOCK_TRANSACTION_BOUNDED_ADD;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_WRAP_ADD))
pAsyncLock->fulTransactionType = LOCK_TRANSACTION_WRAP_ADD;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_32BIT)) {
if ((pAsyncLock->fulTransactionType == LOCK_TRANSACTION_FETCH_ADD) ||
(pAsyncLock->fulTransactionType == LOCK_TRANSACTION_LITTLE_ADD)) {
pAsyncLock->nNumberOfArgBytes = 0;
}
else
pAsyncLock->nNumberOfArgBytes = sizeof(ULONG);
pAsyncLock->nNumberOfDataBytes = sizeof(ULONG);
}
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_64BIT)) {
if ((pAsyncLock->fulTransactionType == LOCK_TRANSACTION_FETCH_ADD) ||
(pAsyncLock->fulTransactionType == LOCK_TRANSACTION_LITTLE_ADD)) {
pAsyncLock->nNumberOfArgBytes = 0;
}
else
pAsyncLock->nNumberOfArgBytes = sizeof(ULONG)*2;
pAsyncLock->nNumberOfDataBytes = sizeof(ULONG)*2;
}
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_ARGUMENT1, tmpBuff, STRING_SIZE);
pAsyncLock->Arguments[0] = strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_ARGUMENT2, tmpBuff, STRING_SIZE);
pAsyncLock->Arguments[1] = strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_DATA1, tmpBuff, STRING_SIZE);
pAsyncLock->DataValues[0] = strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_DATA2, tmpBuff, STRING_SIZE);
pAsyncLock->DataValues[1] = strtoul(tmpBuff, NULL, 16);
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_LOCK_GET_GENERATION))
pAsyncLock->bGetGeneration = TRUE;
else
pAsyncLock->bGetGeneration = FALSE;
GetDlgItemText(hDlg, IDC_ASYNC_LOCK_GENERATION_COUNT, tmpBuff, STRING_SIZE);
pAsyncLock->ulGeneration = strtoul(tmpBuff, NULL, 16);
EndDialog(hDlg, TRUE);
return(TRUE); // IDOK
case IDCANCEL:
EndDialog(hDlg, FALSE);
return(TRUE); // IDCANCEL
default:
return(TRUE); // default
} // switch
break; // WM_COMMAND
default:
break; // default
} // switch
return(FALSE);
} // AsyncLockDlgProc
void
w1394_AsyncLock(
HWND hWnd,
PSTR szDeviceName
)
{
ASYNC_LOCK asyncLock;
DWORD dwRet;
TRACE(TL_TRACE, (hWnd, "Enter w1394_AsyncLock\r\n"));
asyncLock.bRawMode = FALSE;
asyncLock.bGetGeneration = TRUE;
asyncLock.DestinationAddress.IA_Destination_ID.NA_Bus_Number = 0x3FF;
asyncLock.DestinationAddress.IA_Destination_ID.NA_Node_Number = 0;
asyncLock.DestinationAddress.IA_Destination_Offset.Off_High = 0;
asyncLock.DestinationAddress.IA_Destination_Offset.Off_Low = 0;
asyncLock.nNumberOfArgBytes = sizeof(ULONG);
asyncLock.nNumberOfDataBytes = sizeof(ULONG);
asyncLock.fulTransactionType = LOCK_TRANSACTION_MASK_SWAP;
asyncLock.fulFlags = 0;
asyncLock.Arguments[0] = 0;
asyncLock.Arguments[1] = 0;
asyncLock.DataValues[0] = 0;
asyncLock.DataValues[1] = 0;
asyncLock.ulGeneration = 0;
if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
"AsyncLock",
hWnd,
AsyncLockDlgProc,
(LPARAM)&asyncLock
)) {
dwRet = AsyncLock( hWnd,
szDeviceName,
&asyncLock
);
}
TRACE(TL_TRACE, (hWnd, "Exit w1394_AsyncLock\r\n"));
return;
} // w1394_AsyncLock
INT_PTR CALLBACK
AsyncStreamDlgProc(
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
static PASYNC_STREAM pAsyncStream;
static CHAR tmpBuff[STRING_SIZE];
switch (uMsg) {
case WM_INITDIALOG:
pAsyncStream = (PASYNC_STREAM)lParam;
_ultoa(pAsyncStream->nNumberOfBytesToStream, tmpBuff, 16);
SetDlgItemText(hDlg, IDC_ASYNC_STREAM_BYTES_TO_STREAM, tmpBuff);
_ultoa(pAsyncStream->ulTag, tmpBuff, 16);
SetDlgItemText(hDlg, IDC_ASYNC_STREAM_TAG, tmpBuff);
_ultoa(pAsyncStream->nChannel, tmpBuff, 16);
SetDlgItemText(hDlg, IDC_ASYNC_STREAM_CHANNEL, tmpBuff);
_ultoa(pAsyncStream->ulSynch, tmpBuff, 16);
SetDlgItemText(hDlg, IDC_ASYNC_STREAM_SYNCH, tmpBuff);
if (pAsyncStream->nSpeed == SPEED_FLAGS_FASTEST) {
CheckRadioButton( hDlg,
IDC_ASYNC_STREAM_100MBPS,
IDC_ASYNC_STREAM_FASTEST,
IDC_ASYNC_STREAM_FASTEST
);
}
else {
CheckRadioButton( hDlg,
IDC_ASYNC_STREAM_100MBPS,
IDC_ASYNC_STREAM_FASTEST,
pAsyncStream->nSpeed + (IDC_ASYNC_STREAM_100MBPS-1)
);
}
return(TRUE); // WM_INITDIALOG
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
GetDlgItemText(hDlg, IDC_ASYNC_STREAM_BYTES_TO_STREAM, tmpBuff, STRING_SIZE);
pAsyncStream->nNumberOfBytesToStream = strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_STREAM_TAG, tmpBuff, STRING_SIZE);
pAsyncStream->ulTag = strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_STREAM_CHANNEL, tmpBuff, STRING_SIZE);
pAsyncStream->nChannel = strtoul(tmpBuff, NULL, 16);
GetDlgItemText(hDlg, IDC_ASYNC_STREAM_SYNCH, tmpBuff, STRING_SIZE);
pAsyncStream->ulSynch = strtoul(tmpBuff, NULL, 16);
pAsyncStream->nSpeed = 0;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_STREAM_100MBPS))
pAsyncStream->nSpeed = SPEED_FLAGS_100;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_STREAM_200MBPS))
pAsyncStream->nSpeed = SPEED_FLAGS_200;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_STREAM_400MBPS))
pAsyncStream->nSpeed = SPEED_FLAGS_400;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_STREAM_1600MBPS))
pAsyncStream->nSpeed = SPEED_FLAGS_1600;
if (IsDlgButtonChecked(hDlg, IDC_ASYNC_STREAM_FASTEST))
pAsyncStream->nSpeed = SPEED_FLAGS_FASTEST;
EndDialog(hDlg, TRUE);
return(TRUE); // IDOK
case IDCANCEL:
EndDialog(hDlg, FALSE);
return(TRUE); // IDCANCEL
default:
return(TRUE); // default
} // switch
break; // WM_COMMAND
default:
break; // default
} // switch
return(FALSE);
} // AsyncStreamDlgProc
void
w1394_AsyncStream(
HWND hWnd,
PSTR szDeviceName
)
{
ASYNC_STREAM asyncStream;
DWORD dwRet;
TRACE(TL_TRACE, (hWnd, "Enter w1394_AsyncStream\r\n"));
asyncStream.nNumberOfBytesToStream = 8;
asyncStream.fulFlags = 0;
asyncStream.ulTag = 0;
asyncStream.nChannel = 0;
asyncStream.ulSynch = 0;
asyncStream.nSpeed = SPEED_FLAGS_FASTEST;
if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
"AsyncStream",
hWnd,
AsyncStreamDlgProc,
(LPARAM)&asyncStream
)) {
dwRet = AsyncStream( hWnd,
szDeviceName,
&asyncStream,
TRUE
);
}
TRACE(TL_TRACE, (hWnd, "Exit w1394_AsyncStream\r\n"));
return;
} // w1394_AsyncStream
INT_PTR CALLBACK
AsyncLoopbackDlgProc(
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
static PASYNC_LOOPBACK_PARAMS pLoopbackParams;
static CHAR tmpBuff[STRING_SIZE];
switch (uMsg) {
case WM_INITDIALOG:
pLoopbackParams = (PASYNC_LOOPBACK_PARAMS)lParam;
_ultoa(pLoopbackParams->AddressOffset.Off_High, tmpBuff, 16);
SetDlgItemText(hDlg, IDC_ASYNC_LOOP_OFFSET_HIGH, tmpBuff);
_ultoa(pLoopbackParams->AddressOffset.Off_Low, tmpBuff, 16);
SetDlgItemText(hDlg, IDC_ASYNC_LOOP_OFFSET_LOW, tmpBuff);
_ultoa(pLoopbackParams->nMaxBytes, tmpBuff, 16);
SetDlgItemText(hDlg, IDC_ASYNC_LOOP_MAX_BYTES, tmpBuff);
_ultoa(pLoopbackParams->nIterations, tmpBuff, 16);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -