forked from edgexfoundry/device-sdk-c
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
145 lines (122 loc) · 7.33 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
This is the C SDK for EdgeX. Its API is based largely on the Go SDK.
Changes for 2.0.0 "Ireland":
- v2 API update: reconfigure callback no longer mandatory
- v2 API update: new callbacks for parsing attributes and protocol properties
- Ports for EdgeX microservices are re-assigned, eg device services move from 499xx to 599xx.
- Provision Watchers may include AutoEvents to be added on discovered devices.
- Support event transmission by mqtt or redis streams rather than rest
- Device definitions for upload no longer supported in configuration. Instead files may be read from a specified directory (as for profiles)
- These may be in .json files or the previous .toml format
- Added helper functions for setting up the callback functions structure. This is now the preferred way of doing so.
- REST API moves to v2. v1 interfaces are no longer available.
- v1 C API is no longer supported.
- Add queryparams for PUT operations (Changes signature of put handler function)
- Add MaxRequestSize configuration for limiting inbound http data transfers
- EdgeX resource type names are now CamelCase as per Go services
- Configuration elements which may be updated without restarting the service are found in the "Writable" section of the configuration. The following elements are moved:
- Logging/LogLevel -> Writable/LogLevel
- Device section -> Writable/Device except for EventQLength and ProfilesDir
- Support for logging to file and/or the support-logging service has been removed.
Changes for 1.3.1:
- The device service's AdminState can be used to disable/re-enable a running service.
Changes for 1.3.0 "Hanoi":
- 'minimum' and 'maximum' ValueProperties are effective.
- PUT commands on api/v2/device can read CBOR payloads as an alternative to JSON
- 'mask' valueproperty is passed as part of the command request. Drivers should
atomically perform a read-modify-write operation if this is nonzero. (See README.v2.md)
- v2 API update: Callback added to inform the driver of a configuration update.
- v2 API update: Implementations to supply default values for their configuration.
- This allows use of numerics/boolean types as well as Strings.
- Event transmission is serialized and operates from a queue with configurable
maximum length.
Changes for 1.2.2:
- Add ServerBindAddr configuration option for restricting the REST listener
to a single address.
Changes for 1.2.1:
- Fixes in the compatibility layer for the v1 API.
Changes for 1.2.0 "Geneva":
- --instance flag introduced for suffixing the device service name.
- Environment variable names for config over-rides are all-uppercase.
- Device lastConnected property is managed (configurable and disabled by default)
- Implementations may change the operational state of a device.
- Commandline and environment options aligned with Go microservices.
- Arrays of primitive types supported in Readings.
- Device Readings are populated with datatype information.
- Full dynamic discovery implementation with Provision Watchers.
- New SDK API: see README.v2.md for details.
- the v1 API will be removed in version 2.0.0
- Utility functions added in edgex-base.h for finding Protocol Properties, and
for obtaining numeric values from name-value pair lists.
Changes for 1.1.0 "Fuji":
- ResourceOperation field "object" is renamed to "deviceResource".
- "object" is still recognized for compatibility purposes but is deprecated.
- Implement "defaultValue" and "parameter" fields for write operations.
- Allow query strings to be passed to device GET requests.
- Added /api/version endpoint for obtaining service version strings.
- Commandline argument processing mostly handled within the SDK.
- Added callback API for device addition/update/removal events.
- Configuration can be overridden via environment variables when populating
the registry.
- Subtables are supported in the Driver configuration.
- Device services de-register from the registry on exit.
- Event timestamps are now at nanosecond resolution, and are monotonic.
Changes for 1.0.0 "Edinburgh":
- EnableLogging replaces RemoteURL in the Logging configuration. The location
of the logging service is configured in the [Clients] section.
- Removed ReadMaxLimit configuration option.
- Events containing binary Readings are encoded using CBOR.
- This introduces a dependency on libcbor.
- Data transformations (other than "mask") are applied for device PUT requests.
- When querying for Device Profiles they are returned in a list in the same way
as devices.
- Device service now follows the new/start/stop/free lifecycle pattern.
- Initial support for configuration changes without restarting.
- Support Correlation IDs. This introduces a requirement for libUUID.
- The API for Event generation other than via device GET requests is split out
into a seperate header edgex/eventgen.h
- Added support for Automatic Events.
- The API for managing devices and profiles is split out into a seperate header
edgex/device-mgmt.h
- The device name is passed to the Get and Set handlers. The commandrequest
structure is simplified.
- Example implementation includes setting service name and registry location
from the command line and environment.
- Float data is marshalled as base64 unless specified otherwise in the
floatEncoding field of the device profile.
- Schedules and ScheduleEvents are removed.
- The get and set handlers now take an edgex_protocols object rather than an
edgex_addressable.
- The device endpoint can be used to access either resources or deviceResources.
The commands section of a device profile is not used.
- Endpoints for other EdgeX microservices are obtained from the registry (if
enabled) rather than configuration.
- Metadata for individual devices can be obtained in the device management API.
- The edgex_deviceobject type is renamed to edgex_deviceresource to reflect its
naming in the profile definition.
- The registry service is now identified by a URL, eg "consul://localhost:8500".
- Support for consul as the registry service is built-in, but other
implementations may be added using the API in edgex/registry.h
- Support EdgeX System Management API.
- Initial support for binary data, marshalled as base64 strings.
- Assertions on data readings are implemented.
- Some parts of the edgex model are now held in appropriate types rather
than strings.
- edgex_device_resulttype is renamed to edgex_propertytype, reflecting its
broader usage.
Changes for 0.7.2:
- Device GET commands return Event structures rather than name-value pairs.
Changes for 0.7.1:
- Some verification on Device Profiles is now done at startup. This may result
in failures during startup rather than in "device" command handling.
- The /device/name/{name}/{command} REST endpoint is implemented.
- Metadata callbacks for device creation and deletion are processed.
Changes for 0.7.0 "Delhi":
- Consul is supported for registration and configuration.
- New configuration option Service.CheckInterval controlling how frequently
the registry polls the device service for liveliness.
- Driver init functions get their configuration as a name-value pair list
rather than a TOML table.
- SDK start function now takes parameters for Consul's hostname and port. They
are no longer included in the configuration file.
- "Discovery", "DataTransform" and "ReadMaxLimit" configuration options are now effective.
- "OpenMsg" option replaced by "StartupMsg" for consistency with other services.