-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathtest-device-ping360.cpp
More file actions
79 lines (66 loc) · 2.76 KB
/
test-device-ping360.cpp
File metadata and controls
79 lines (66 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <link/desktop/abstract-link.h>
#include <ping-device-ping360.h>
#include <ping-message-all.h>
#include "command-line/command-line.h"
#include "helper.h"
#include <cstdio>
/**
* @brief Test ping 1D devices
*/
int main(int argc, char* argv[])
{
if (!CommandLine::self()->run(argc, argv)) {
return -1;
}
auto port = AbstractLink::openUrl(CommandLine::self()->connectionString);
if (!port) {
std::cerr << "Failed to open communication link with device" << std::endl;
return -1;
}
Ping360 device = Ping360(*port.get());
// Basic information
PingDeviceTest::test("Device initialization", device.initialize());
PingDeviceTest::test("Device type", static_cast<PingDeviceType>(device.device_information.device_type) == PingDeviceType::PING360);
PingDeviceTest::test("Device ID", device.device_id == 2);
PingDeviceTest::test("Ping protocol version",
device.protocol_version.version_major == 1);
printf("Firmware version: %d.%d.%d\n", device.device_information.firmware_version_major, device.device_information.firmware_version_minor, device.device_information.firmware_version_patch);
for(int number = 0; number < 200; number += 1) {
device.set_transducer(
1 //mode
,1 //gain_setting
,number //angle
,100 //transmit_duration
,100 //sample_period
,750 //transmit_frequency
,200 //number_of_samples
,1 //transmit
,0 //reserved
);
[[maybe_unused]] const auto message_device_data = static_cast<const ping360_device_data*>(device.waitMessage(Ping360Id::DEVICE_DATA, 8000));
assert(message_device_data);
assert(message_device_data->angle() == number);
}
PingDeviceTest::test("Check 400 transducer messages", true);
device.set_auto_transmit(
1 //mode
,1 //gain_setting
,100 //transmit_duration
,100 //sample_period
,750 //transmit_frequency
,200 //number_of_samples
,0 //start_angle
,399 //stop_angle
,1 //number_of_steps
,0 //delay
);
for(int number = 0; number < 200; number += 1) {
[[maybe_unused]] const auto message_device_data = static_cast<const ping360_auto_device_data*>(device.waitMessage(Ping360Id::AUTO_DEVICE_DATA, 8000));
assert(message_device_data);
assert(message_device_data->angle() == number);
}
PingDeviceTest::test("Check 400 auto transducer messages", true);
device.set_motor_off();
PingDeviceTest::test("Turn off motor", device.waitMessage(CommonId::ACK, 1000));
return 0;
}