Files
eskin-finger-sdk/example/cpp/main.cpp
lenn a7b7192341 feat: add FFI layer, protocol tests, mock transport, README
- FFI: eskin_open/close/read_register/write_register for C/C++/Python
- Protocol: encode/decode tests with golden bytes verification
- Stream: implement PollingSampleCollector producing FingerSample
- Register: add parse_combined_forces/parse_module_errors
- Transport: add MockSerialTransport for testing
- Include: add C header file eskin_ffi.h
- Examples: C++ and Python usage examples
- README: full usage guide for Rust/C++/Python
- Exclude docs/ from repo (internal only)
2026-05-06 00:54:44 +08:00

49 lines
1.3 KiB
C++

#include "../../include/eskin_ffi.h"
#include <cstdint>
#include <cstdio>
#include <cstring>
int main() {
printf("ESkin SDK version: %u.%u.%u\n",
eskin_version().major, eskin_version().minor, eskin_version().patch);
EskinDeviceHandle dev = eskin_open("/dev/ttyUSB0", nullptr);
if (!dev) {
printf("Failed to open device\n");
return 1;
}
printf("Device opened\n");
uint8_t buf[256];
uint32_t actual = 0;
EskinSdkErrorCode err = eskin_read_register(dev, 0x0000, 4, buf, sizeof(buf), &actual);
if (err == ESkinSuccess) {
printf("Serial number (%u bytes): ", actual);
for (uint32_t i = 0; i < actual; i++) {
printf("%02X ", buf[i]);
}
printf("\n");
}
else {
printf("read_register failed: %d\n", err);
}
err = eskin_read_register(dev, 0x000F, 2, buf, sizeof(buf), &actual);
if (err == ESkinSuccess) {
printf("Firmware version (%u bytes): ", actual);
for (uint32_t i = 0; i < actual; i++) {
printf("%02X", buf[i]);
}
printf("\n");
}
err = eskin_read_register(dev, 0x0500, 168, buf, sizeof(buf), &actual);
if (err == ESkinSuccess) {
printf("Combined force raw (%u bytes)\n");
}
eskin_close(dev);
printf("Device closed\n");
return 0;
}