Skip to content

Conversation

RaulTrombin
Copy link
Member

Still under test, but could be promising, we can rewire our current building modules to validate protocol specs.

cargo install --path ./ping-protocol-validator

➜  ping-rs git:(ping_protocol_validator) ✗ ping-protocol-validator -p ./build/ping-protocol -v
2025-07-09T01:21:19.603571Z  INFO ping_protocol_validator: Starting ping-protocol validation...
2025-07-09T01:21:19.603590Z  INFO ping_protocol_validator: Validating ping-protocol at: ./build/ping-protocol
2025-07-09T01:21:19.603683Z  INFO ping_protocol_validator: Processing definition files...
2025-07-09T01:21:19.603706Z  INFO ping_protocol_validator: Processing module: bluebps
2025-07-09T01:21:19.620200Z  INFO ping_protocol_validator: ✅ Successfully processed: bluebps
2025-07-09T01:21:19.620225Z  INFO ping_protocol_validator: Processing module: omniscan450
2025-07-09T01:21:19.626224Z  INFO ping_protocol_validator: ✅ Successfully processed: omniscan450
2025-07-09T01:21:19.626260Z  INFO ping_protocol_validator: Processing module: ping1d
2025-07-09T01:21:19.646278Z  INFO ping_protocol_validator: ✅ Successfully processed: ping1d
2025-07-09T01:21:19.646299Z  INFO ping_protocol_validator: Processing module: common
2025-07-09T01:21:19.652530Z  INFO ping_protocol_validator: ✅ Successfully processed: common
2025-07-09T01:21:19.652560Z  INFO ping_protocol_validator: Processing module: ping360
2025-07-09T01:21:19.662913Z  INFO ping_protocol_validator: ✅ Successfully processed: ping360
2025-07-09T01:21:19.662933Z  INFO ping_protocol_validator: Skipping pinghf file: pinghf.json
2025-07-09T01:21:19.662945Z  INFO ping_protocol_validator: ✅ Individual module generation validation completed successfully
2025-07-09T01:21:19.662948Z  INFO ping_protocol_validator: Skipping module binder generation (not essential for validation)
2025-07-09T01:21:19.662951Z  INFO ping_protocol_validator: All definition files processed successfully!
2025-07-09T01:21:19.663201Z  INFO ping_protocol_validator: ✅ Validation completed successfully!

Current ping-protocol master with issues:

➜  ping-rs git:(ping_protocol_validator) ✗ ping-protocol-validator -p ./build/ping-protocol -v
2025-07-09T01:21:40.132644Z  INFO ping_protocol_validator: Starting ping-protocol validation...
2025-07-09T01:21:40.132656Z  INFO ping_protocol_validator: Validating ping-protocol at: ./build/ping-protocol
2025-07-09T01:21:40.132746Z  INFO ping_protocol_validator: Processing definition files...
2025-07-09T01:21:40.132769Z  INFO ping_protocol_validator: Processing module: bluebps
2025-07-09T01:21:40.148630Z  INFO ping_protocol_validator: ✅ Successfully processed: bluebps
2025-07-09T01:21:40.148654Z  INFO ping_protocol_validator: Processing module: omniscan450
2025-07-09T01:21:40.155971Z  INFO ping_protocol_validator: ✅ Successfully processed: omniscan450
2025-07-09T01:21:40.155998Z  INFO ping_protocol_validator: Processing module: ping1d
2025-07-09T01:21:40.177506Z  INFO ping_protocol_validator: ✅ Successfully processed: ping1d
2025-07-09T01:21:40.177527Z  INFO ping_protocol_validator: Processing module: ping1dtsr
2025-07-09T01:21:40.202065Z  INFO ping_protocol_validator: ✅ Successfully processed: ping1dtsr
2025-07-09T01:21:40.202089Z  INFO ping_protocol_validator: Processing module: common
2025-07-09T01:21:40.207806Z  INFO ping_protocol_validator: ✅ Successfully processed: common
2025-07-09T01:21:40.207826Z  INFO ping_protocol_validator: Processing module: ping360
2025-07-09T01:21:40.217396Z  INFO ping_protocol_validator: ✅ Successfully processed: ping360
2025-07-09T01:21:40.217418Z  INFO ping_protocol_validator: Processing module: surveyor240

thread 'main' panicked at src/../../build/parser.rs:49:26:
No available type: "u64"
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2025-07-09T01:21:40.217616Z ERROR ping_protocol_validator: ❌ Failed to process surveyor240: No available type: "u64"
2025-07-09T01:21:40.217626Z  INFO ping_protocol_validator: Skipping pinghf file: pinghf.json
2025-07-09T01:21:40.217630Z  INFO ping_protocol_validator: Processing module: s500
2025-07-09T01:21:40.229728Z  INFO ping_protocol_validator: ✅ Successfully processed: s500
2025-07-09T01:21:40.230052Z ERROR ping_protocol_validator: ❌ Validation failed: Validation failed with 1 error(s):
surveyor240: No available type: "u64"

@RaulTrombin
Copy link
Member Author

@RaulTrombin RaulTrombin changed the title backup_wip PingProtocolValidator-cli [wip Jul 9, 2025
@RaulTrombin
Copy link
Member Author

➜  ping-rs git:(ping_protocol_validator) ✗ ping-protocol-validator -p ./build/ping-protocol -v
2025-07-09T01:53:49.290499Z  INFO ping_protocol_validator: Starting ping-protocol validation...
2025-07-09T01:53:49.290517Z  INFO ping_protocol_validator: Validating ping-protocol at: ./build/ping-protocol
2025-07-09T01:53:49.290652Z  INFO ping_protocol_validator: Processing definition files...
2025-07-09T01:53:49.290676Z  INFO ping_protocol_validator: Processing module: bluebps
2025-07-09T01:53:49.306416Z  INFO ping_protocol_validator: ✅ Successfully processed: bluebps
2025-07-09T01:53:49.306437Z  INFO ping_protocol_validator: Processing module: omniscan450
2025-07-09T01:53:49.312827Z  INFO ping_protocol_validator: ✅ Successfully processed: omniscan450
2025-07-09T01:53:49.312846Z  INFO ping_protocol_validator: Processing module: ping1d
2025-07-09T01:53:49.334734Z  INFO ping_protocol_validator: ✅ Successfully processed: ping1d
2025-07-09T01:53:49.334754Z  INFO ping_protocol_validator: Processing module: ping1dtsr
2025-07-09T01:53:49.359663Z  INFO ping_protocol_validator: ✅ Successfully processed: ping1dtsr
2025-07-09T01:53:49.359684Z  INFO ping_protocol_validator: Processing module: common
2025-07-09T01:53:49.365423Z  INFO ping_protocol_validator: ✅ Successfully processed: common
2025-07-09T01:53:49.365440Z  INFO ping_protocol_validator: Processing module: ping360
2025-07-09T01:53:49.374906Z  INFO ping_protocol_validator: ✅ Successfully processed: ping360
2025-07-09T01:53:49.374925Z  INFO ping_protocol_validator: Processing module: surveyor240

thread 'main' panicked at src/../../build/parser.rs:55:26:
No available type: "atof_t"
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2025-07-09T01:53:49.375162Z ERROR ping_protocol_validator: ❌ Failed to process surveyor240: No available type: "atof_t"
2025-07-09T01:53:49.375173Z  INFO ping_protocol_validator: Skipping pinghf file: pinghf.json
2025-07-09T01:53:49.375176Z  INFO ping_protocol_validator: Processing module: s500
2025-07-09T01:53:49.386909Z  INFO ping_protocol_validator: ✅ Successfully processed: s500
2025-07-09T01:53:49.387310Z ERROR ping_protocol_validator: ❌ Validation failed: Validation failed with 1 error(s):
surveyor240: No available type: "atof_t"

@ES-Alexander
Copy link

ES-Alexander commented Jul 9, 2025

Nice! Given the open nature of the protocol, it seems valuable to have validation that confirms our libraries are actually able to handle the data-types included in the messages that get introduced.

It may be extra valuable to include this kind of validation as part of adding a message (/set) to the protocol, but it also makes sense for the individual libraries to include it as an additional line of defence :-)

surveyor240: No available type: "atof_t"

This is somewhat frustrating because there's a well-known atof function in the C standard library (for converting ASCII strings to floating-point numbers), but from the spec Cerulean seem to have used the name to refer to a custom (composite) data-type representing angles with corresponding time-of-flight measurements, as values for a point-cloud.

Anyway, they do at least publish its details, if we want to decode it properly (or just pull it through as an array of U128 or something):

struct atof_t {
   float    angle;            // radians, positive to port
   float    tof;              // seconds, time of flight
   u32      reserved[2];
}
// float distance = 0.5 * speed_of_sound * tof_sec;
// float y = distance * sin(angle);
// float z = -distance * cos(angle);

Copy link
Member

@patrickelectric patrickelectric left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we have it as a binary of the project over a standalone binary ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants