Dawn Framework 1.0
Universal data acquisition framework for embedded systems
serial.hxx
1// dawn/include/dawn/proto/nxscope/serial.hxx
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#pragma once
7
8#include "dawn/porting/config.hxx"
9#include "dawn/proto/nxscope/nxscope.hxx"
10
11namespace dawn
12{
21{
22public:
23 enum
24 {
25 PROTO_NXSCOPE_SERIAL_CFG_FIRST = 0,
30 PROTO_NXSCOPE_SERIAL_CFG_LAST = 31
31 };
32
33 explicit CProtoNxscopeSerial(CDescObject &desc)
34 : CProtoNxscope(desc)
35 , baud(CONFIG_DAWN_PROTO_NXSCOPE_SERIAL_BAUD)
36 , path(CONFIG_DAWN_PROTO_NXSCOPE_SERIAL_PATH)
37 , serInit(false)
38 {
39 }
40
41 ~CProtoNxscopeSerial() override;
42
43#ifdef CONFIG_DAWN_OBJECT_HAS_NAME
44 const char *getClassNameStr() const override
45 {
46 return "nxscope";
47 }
48#endif
49
50 int initPriv() override;
51 int deinitPriv() override;
52 int startPriv() override;
53 int stopPriv() override;
54
55 constexpr static SObjectId::ObjectId objectId(uint16_t id)
56 {
60 0,
61 id);
62 }
63
64 constexpr static SObjectCfg::ObjectCfgId cfgId(bool rw, uint8_t dtype, uint8_t size, uint8_t id)
65 {
68 }
69
70 constexpr static SObjectCfg::ObjectCfgId cfgIdIOBind(uint16_t size)
71 {
72 return CProtoNxscopeSerial::cfgId(
74 }
75
76 constexpr static SObjectCfg::ObjectCfgId cfgIdIOBind2(uint16_t count)
77 {
78 return CProtoNxscopeSerial::cfgId(false,
80 (count * (sizeof(CProtoNxscope::SProtoNxscopeIOBind2) / 4)),
82 }
83
84 constexpr static SObjectCfg::ObjectCfgId cfgIdPath(uint16_t size)
85 {
86 return CProtoNxscopeSerial::cfgId(
88 }
89
90 constexpr static SObjectCfg::ObjectCfgId cfgIdBaud()
91 {
92 return CProtoNxscopeSerial::cfgId(
94 }
95
96private:
97 uint32_t baud;
98 const char *path;
99 struct nxscope_ser_cfg_s nxsSerCfg;
100 bool serInit;
101
102 int configureDesc(const CDescObject &desc);
103 int confgureNxscopePriv();
104};
105} // namespace dawn
Descriptor wrapper for individual object configuration.
@ PROTO_CLASS_NXSCOPE_SERIAL
NxScope real-time visualization (serial interface).
Definition common.hxx:47
NXScope over serial port transport.
Definition serial.hxx:21
@ PROTO_NXSCOPE_SERIAL_CFG_BAUD
Baud rate.
Definition serial.hxx:29
@ PROTO_NXSCOPE_SERIAL_CFG_IOBIND2
I/O bindings with names.
Definition serial.hxx:27
@ PROTO_NXSCOPE_SERIAL_CFG_IOBIND
I/O bindings.
Definition serial.hxx:26
@ PROTO_NXSCOPE_SERIAL_CFG_PATH
Serial device path.
Definition serial.hxx:28
Real-time data visualization protocol (base class).
Definition nxscope.hxx:37
static ObjectCfgId objectCfg(uint8_t type, uint16_t cls, uint8_t dtype, bool rw, uint16_t size, uint8_t id)
Construct 32-bit ConfigID from component fields.
uint32_t ObjectCfgId
ConfigID type - single 32-bit value.
Definition objectcfg.hxx:60
Out-of-tree user-extension hooks for Dawn.
Definition bindable.hxx:13
@ OBJTYPE_PROTO
Protocol object type.
Definition objectid.hxx:193
@ DTYPE_ANY
Wildcard data type (matches any actual type).
Definition objectid.hxx:68
@ DTYPE_CHAR
Character/string type (null-terminated, 4-byte aligned).
Definition objectid.hxx:144
@ DTYPE_UINT32
Unsigned 32-bit integer (0 to 4294967295).
Definition objectid.hxx:96
uint32_t ObjectId
ObjectID type - single 32-bit value.
Definition objectid.hxx:44
static ObjectId objectId(uint8_t type, uint16_t cls, uint8_t dtype, uint8_t flags, uint16_t priv)
Construct 32-bit ObjectID from component fields.
Definition objectid.hxx:290