2022-12-07 15:51:53 +01:00
|
|
|
# `NxScope Library`
|
|
|
|
|
|
|
|
This library provides real-time data logging functionality for NuttX.
|
|
|
|
|
|
|
|
The principle of action is to accumulate data gathered in virtual channels
|
|
|
|
and periodically send buffered data through a dedicated interface packed
|
|
|
|
with a custom protocol.
|
|
|
|
|
|
|
|
Supported features:
|
|
|
|
- up to 255 channels possible
|
|
|
|
- support for standard data types and user-specific data (`enum nxscope_sample_dtype_e`)
|
|
|
|
- support for vector data or point data
|
|
|
|
- support for character-based channels (text messages)
|
|
|
|
- support for channel metadata - can be used to enumerate samples or timestamp
|
|
|
|
- stream buffer overflow detection (`NXSCOPE_STREAM_FLAGS_OVERFLOW`)
|
|
|
|
- remote control with commands (`enum nxscope_hdr_id_e`)
|
|
|
|
- protocol and interface implementation can be different for control commands and stream data
|
|
|
|
- (optional) support for user-specific commands (`NXSCOPE_HDRID_USER` and `struct nxscope_callbacks_s`)
|
|
|
|
- (optional) support for samples divider (`CONFIG_LOGGING_NXSCOPE_DIVIDER`)
|
|
|
|
- (optional) support for ACK frames (`CONFIG_LOGGING_NXSCOPE_ACKFRAMES`)
|
|
|
|
- (optional) support for user-defined types (`CONFIG_LOGGING_NXSCOPE_USERTYPES`)
|
|
|
|
- (optional) support for non-buffered critical channels (`CONFIG_LOGGING_NXSCOPE_CRICHANNELS`)
|
|
|
|
|
|
|
|
A custom interface and a custom protocol can be implemented with
|
|
|
|
`struct nxscope_intf_s` and `struct nxscope_proto_s` structures.
|
|
|
|
|
|
|
|
Supported interfaces:
|
|
|
|
1. a serial port: `logging/nxscope/nxscope_iser.c`
|
|
|
|
2. a dummy interface for debug purposes: `logging/nxscope/nxscope_idummy.c`
|
|
|
|
|
|
|
|
A default serial protocol is implemented in `apps/logging/nxscope/nxscope_pser.c`
|
|
|
|
It just packs NxScope data into simple frames with a CRC-16 checksum.
|
2023-02-22 21:10:15 +01:00
|
|
|
|
|
|
|
## External tools
|
|
|
|
|
|
|
|
- [Nxslib](https://github.com/railab/nxslib) - a Python (3.10+) client library for NxScope devices,
|
|
|
|
- [Nxscli](https://github.com/railab/nxscli) - a Python (3.10+) command-line interface for NxScope,
|
|
|
|
supporting data capture and visualization
|