Features: - Cross-platform support (Windows/Linux/macOS) - CAN and CANFD protocol support - USB communication (WinUSB/libusb) - Device management and configuration - Message transmission and reception - Filter configuration - CMake build system - Comprehensive examples and tests
120 lines
3.3 KiB
C++
120 lines
3.3 KiB
C++
/**
|
|
* @file test_usb.cpp
|
|
* @brief USB通信层测试
|
|
*/
|
|
|
|
#include "../include/usb/UsbDevice.h"
|
|
#include "../include/usb/WinUsbDevice.h"
|
|
#include "../include/usb/LinuxUsbDevice.h"
|
|
#include "../include/platform/Platform.h"
|
|
#include <iostream>
|
|
#include <cassert>
|
|
|
|
/**
|
|
* @brief 测试USB设备创建功能
|
|
* @return 测试结果
|
|
*/
|
|
bool test_usb_device_creation() {
|
|
std::cout << " [TEST] Testing USB device creation..." << std::endl;
|
|
|
|
// 创建平台实例
|
|
usb2can::platform::Platform* platform = usb2can::platform::Platform::createPlatform();
|
|
if (!platform) {
|
|
std::cout << " [FAIL] Failed to create platform instance" << std::endl;
|
|
return false;
|
|
}
|
|
|
|
// 创建USB设备实例
|
|
usb2can::usb::UsbDevice* device = usb2can::usb::UsbDevice::createUsbDevice(platform);
|
|
if (!device) {
|
|
std::cout << " [FAIL] Failed to create USB device instance" << std::endl;
|
|
delete platform;
|
|
return false;
|
|
}
|
|
|
|
std::cout << " [PASS] USB device created successfully" << std::endl;
|
|
|
|
// 清理资源
|
|
delete device;
|
|
delete platform;
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @brief 测试USB设备管理器创建功能
|
|
* @return 测试结果
|
|
*/
|
|
bool test_usb_device_manager_creation() {
|
|
std::cout << " [TEST] Testing USB device manager creation..." << std::endl;
|
|
|
|
// 创建平台实例
|
|
usb2can::platform::Platform* platform = usb2can::platform::Platform::createPlatform();
|
|
if (!platform) {
|
|
std::cout << " [FAIL] Failed to create platform instance" << std::endl;
|
|
return false;
|
|
}
|
|
|
|
// 创建USB设备管理器实例
|
|
usb2can::usb::UsbDeviceManager manager(platform);
|
|
|
|
std::cout << " [PASS] USB device manager created successfully" << std::endl;
|
|
|
|
// 清理资源
|
|
delete platform;
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @brief 测试USB设备扫描功能
|
|
* @return 测试结果
|
|
*/
|
|
bool test_usb_device_scan() {
|
|
std::cout << " [TEST] Testing USB device scanning..." << std::endl;
|
|
|
|
// 创建平台实例
|
|
usb2can::platform::Platform* platform = usb2can::platform::Platform::createPlatform();
|
|
if (!platform) {
|
|
std::cout << " [FAIL] Failed to create platform instance" << std::endl;
|
|
return false;
|
|
}
|
|
|
|
// 初始化平台
|
|
if (!platform->initialize()) {
|
|
std::cout << " [FAIL] Failed to initialize platform" << std::endl;
|
|
delete platform;
|
|
return false;
|
|
}
|
|
|
|
// 创建USB设备管理器实例
|
|
usb2can::usb::UsbDeviceManager manager(platform);
|
|
|
|
// 扫描USB设备
|
|
std::vector<usb2can::usb::UsbDeviceInfo> devices = manager.scanDevices();
|
|
std::cout << " [INFO] Found " << devices.size() << " USB devices" << std::endl;
|
|
|
|
// 清理资源
|
|
delete platform;
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @brief 测试USB通信层
|
|
* @return 测试结果
|
|
*/
|
|
bool test_usb() {
|
|
std::cout << "\n[TEST] Starting USB communication layer tests..." << std::endl;
|
|
|
|
bool all_passed = true;
|
|
|
|
// 运行测试
|
|
all_passed &= test_usb_device_creation();
|
|
all_passed &= test_usb_device_manager_creation();
|
|
all_passed &= test_usb_device_scan();
|
|
|
|
std::cout << "[TEST] USB communication layer tests " << (all_passed ? "PASSED" : "FAILED") << std::endl;
|
|
|
|
return all_passed;
|
|
} |