nuttx-apps/logging/nxscope
raiden00pl 8726e530d5 logging/nxscope: add an option to disable lock in channels put interfaces
With this option enabled the user can speed up adding a large amount of data to the stream buffer
by minimizing the usage of the nxscope lock interface:

  nxscope_lock(&nxs->nxs);
  nxscope_put_vfloat(&nxs, 0, data0, 1);
  nxscope_put_vfloat(&nxs, 1, data1, 1);
  nxscope_put_vfloat(&nxs, 2, data2, 1);
  nxscope_put_vfloat(&nxs, 3, data3, 1);
  nxscope_unlock(&nxs->nxs);
2023-05-15 13:17:47 -03:00
..
Kconfig logging/nxscope: add an option to disable lock in channels put interfaces 2023-05-15 13:17:47 -03:00
Make.defs add the NxScope library - a real-time data logging tool 2022-12-28 01:40:24 +08:00
Makefile add the NxScope library - a real-time data logging tool 2022-12-28 01:40:24 +08:00
nxscope_chan.c logging/nxscope: add an option to disable lock in channels put interfaces 2023-05-15 13:17:47 -03:00
nxscope_idummy.c add the NxScope library - a real-time data logging tool 2022-12-28 01:40:24 +08:00
nxscope_internals.c add the NxScope library - a real-time data logging tool 2022-12-28 01:40:24 +08:00
nxscope_internals.h add the NxScope library - a real-time data logging tool 2022-12-28 01:40:24 +08:00
nxscope_iser.c apps: Remove the check of CONFIG_SERIAL_TERMIOS 2023-03-19 14:53:44 -06:00
nxscope_pser.c add the NxScope library - a real-time data logging tool 2022-12-28 01:40:24 +08:00
nxscope.c logging/nxscope: fix invalid zalloc size for rxbuf 2023-05-15 13:17:47 -03:00
README.md logging/nxscope: add a mention of available client tools for NxScope 2023-02-27 16:04:46 +08: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.

External tools

  • Nxslib - a Python (3.10+) client library for NxScope devices,
  • Nxscli - a Python (3.10+) command-line interface for NxScope, supporting data capture and visualization