Skip to content

SY-2178: Modbus Driver #1180

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 185 commits into
base: main
Choose a base branch
from
Open

SY-2178: Modbus Driver #1180

wants to merge 185 commits into from

Conversation

emilbon99
Copy link
Contributor

Issue Pull Request

Key Information

Description

Basic Readiness

  • I have performed a self-review of my code.
  • I have added relevant tests to cover the changes to CI.
  • I have added needed QA steps to the release candidate template that cover these changes.
  • I have updated in-code documentation to reflect the changes.
  • I have updated user-facing documentation to reflect the changes.

Backwards Compatibility

Data Structures

I have ensured that previous versions of stored data structures are properly migrated to new formats in the following projects:

  • Server
  • Console

API Changes

The following projects have backwards-compatible APIs:

  • Python Client
  • Server
  • TypeScript Client

Breaking Changes

pjdotson and others added 30 commits February 4, 2025 22:21
* [driver] - built embedded lua

* [computron] remove computron, replace with lua interperter. roughly working but not fully tested

* [computron] fails nested calcs rn

* [driver] - sequences initial commit

* check

* checkpoint

* checkpoint

* rough impl

* space

* checkpoint

* undo state source complexity

* formatting

* checkpoint

* [driver] - improved sequence implementation

* [driver] - fixed lua build

* [driver] - adjusted build

* temp remove installer

* [driver] - fixed initialization order

* [driver] - corrected WORKSPACE to build on windows

* [ni] builds

* [drift] - tuning to BUILD.bazel

* [driver/ni] refactor channel parsing

* [driver/ni] formatting

* [driver/ni] missed public keyword

* [driver/ni] writer tests

* [driver/ni] format test

* [driver/ni] - updated APIs to use function pointers

* [driver] - extracted NI apis into a DLL

* [driver] - adjusted daqmx libs

* [driver] - adjusted ni build flags

* [driver/ni] dig write test

* [driver] - fixed linux build issues

* [driver] - updated version

* [driver] - updated version

* [driver] - adjusted ubuntu version

* [driver] - adjusted ubuntu version

* [driver] - updated version

* [driver] - updated version

* updated linux version

* [driver] -checkpoint

* [driver] -checkpoint

* [driver] - fixed windows build

* [driver] - adjusted sequencing tools

* [driver/ni] task

* [driver] - fixed ubuntu build issues

* [driver/ni] formatting

* [driver] - cleaned up shared library implementations

* [driver] - re-added labjack integration

* [driver] - removed extra log

* [synnax] - added sequence to embedded driver integrations

* [synnax] - removed branch from synnax deploy

* checkpoint

* [driver/ni] fix some issues

* [driver] - fixed synnax build on windows

* [driver] - removed vs comunity from build

* build issues

* rename

* [driver/ni] series

* [driver] - cleaned up various ni implementations

* [driver] - improved channel source and set operator implementations'

* dedup state source

* [driver/ni] - lots of code cleanup and cleanliness refactoring

* [driver] - ubuntu build issues and improvements

* [driver/ni] - fix test case compiling

* [driver/ni] checkpoint

* [driver] - added embedded state checking on bootup

* [driver/ni] still state writing issue

* [driver/ni] update test

* [driver/ni] checkpoint

* [driver/ni] checkpoint

* [driver] - fixed issues with merge

* [hardware] - fixed rack otg definitions

* [synnax] - fixed rack ontology creation

* [console] - allowed user to select control sequence rack

* [checkpoint] working

* [driver/sequence] - added tests for the channel set operator

* [driver] - implemented updated specs for setting control authorities on channels

* [driver/ni] moved writer related interfaces to writer.h

* [driver/sequence] - added correct conversion from numeric to boolean values

* [driver/ni] refactor writer and writer channel config parsing

* [driver/ni] refactor channels code

* [driver/ni] code dedup for sink and tasks

* [driver/ni] white space

* [driver/ni] format

* [driver/ni] comments

* [driver/ni] comment

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* [driver] - added daemon implementation for ni linux rt

* updated gh release info

* [driver] refactor default breaker config

* checkpoint

* checkpoint

* [driver] - cleaned up daemon implementation s

* checkpoint

* [driver] - updated daemon commands

* checkpoint

* [driver] - added log tracking commands

* [driver] - checkpoint

* [driver] - cleaned up main program file

* [synnax] - added modal prompting to name sequence

* [driver] - resolved build issues with linking systemd

* [driver] - improved log tailing functionality

* [driver] - added better file system checks

* [driver] - updated persisted state location

* [driver] - updated persisted state storage path

* [driver] - improved install and uninstall logic

* [driver] - checkpoint

* [driver/ni] update naming of devices

* [driver/ni] missed a couple breaker configs

* [driver] - updated daemon

* [driver/ni] refactor some of the read code

* [synnax/pkg/hardware] - improved rack documentation and APIs

* [driver] - removed unneeded sys config property

* [driver] - checkpoint

* [driver] - fixed ni sys cfg prod implementation

* [driver] - adjusted chassis filter properties

* [driver] - fixed ni sys cfg prod implementation

* [driver] - fixed ni sys cfg prod implementation

* [driver] - checkpoint

* [driver] - fixed filter property in sys cfg

* [driver] - checkpoint

* [driver] - checkpoint

* checkpoint

* checkpoint

* [driver] pr touchups

* [driver/ni] format

* [driver/ni] todo

* [driver] - fixed windows build and improved sequence state communication

* [driver] missed some merge conflicts

* [synnax/pkg/hardware] - added tests for embedded rack migrations

* [synnax] - implemented tests for moving devices between racks

* [driver] - finished refactoring sequence operators

* [driver] merge conflict touchups

* [driver] fix scanner.cpp

* [driver] remove unnecessary logs

* [driver] fix digital writes

* [driver] - cleaned up sequencing code and test

* [driver] - cleaned up pipeline tests

* [sequence] - added channel receive tests

* [driver/pipeline] - refactored pipeline headers for better test mocking

* [client/cpp/telem/series] - cleaned up implementations

* [ops/cpp] - fixed issues with test cases

* [driver] - added version command

* [driver] - fixed GLOG import

* [driver] - fixed binary installation issues

* [driver] - cached open62541 build

* [client/py] - fixed task tests

* [console] - fixed lint issues

* [ops] - pr adjustments

* [synnax] - fixed bazel genrul

* [ops] - adjusted embedded driver build

* [ops] - tuned github workflow

* [ops] - tuned github workflow

* [ops] - synnax. added nilinuxrt build

* [ops] - synnax. added nilinuxrt build

* [ops] - fixed build caching

* [ops] - fixed synnax deploy script

* [driver] pr touchups

* [ops] - addressed PR comments

* [console] - refactored task configure modal

* [driver] - updated cpp statuses

* [ops] - removed .bazelversion file

* [ops] - bumped platform version

* [driver] - added colorful output to init script logging

* [driver] - checkpoint

* PR Touchups

* [ops] - added driver install script to deployment

* [driver] - added colorful output to init script logging

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* [driver] - updated daemon to create pidfile if missing

* [driver] - adjusted persisted state reading

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* [driver/opc] - adjusted reinterpret cast

* [driver/opc] - fixed SAN value

---------

Co-authored-by: emilbon99 <[email protected]>
Co-authored-by: Emiliano Bonilla <[email protected]>
Co-authored-by: pjdotson <[email protected]>
* [driver] - fixed index based series work

* [client/cpp] - fixed formatting

* [driver] - removed copt ignore

* [client/cpp] - fixed series test

* [driver] - fixed cpp type tests

* [driver] - reverted config changes
* Change barrel exporting format

* Remove unique `Chan` type, rename `Chan` to `Channel

* checkpoint

* more refactoring

* client and ontology changes

* rearrange hardware folders

* checkpoint

* change zod unions to zod enums

* update opc configure layout

* commit

* checkpoint

* Checkpoint

* Analog Write Task Checkpoint

* PR updates

* Add support for automatically filling in device when a task is created from the ontology

* checkpoint

* Updated `useDesiredState.ts`

* type assertions

* Fix vitest

* Changes

* More touchups

* Add Copy Buttons

* Correct casing

* Remove console.log

* remove unneeded ts expect error

* Rename ...props to ...rest

* Add back fix

* Apply task migrations for analog read

* update analog read task schema

* touchups

* intermediate opc tasks

* Edits and working opc tasks

* Fix build issues

* Update form files

* collapse spacing

* more touchups

* cut lines in enriched.json

* More touchups

* touchups

* updates

* edit enable / disable button

* checkpoint

* More touchups

* touchups

* NI digital items

* touch up digital types

* more touchups

* fixes

* Remove setAltKey logic

* Add rack creation logic

* More touchups

* Rename Configure.tsx to Sequence.tsx

* Rename Ontology.BASE_SERVICE to Ontology.NOOP_SERVICE

* Rename ontology.RootID to ontology.ROOT_ID

* Add type hinting for devices

* Rename noneSelectedElement to noneSelectedContent

* Add parseWithoutKeyConversion utility function

* Rename task generic type names to be more verbose

* Change loading symbols to h4

* Add emptyContent checker to list component

* Fix pluto build issue

* Rename `generateEmpty` to `createEmptyService`

* Add types for client ontology types

* Add error handling for placing snapshots from range overview

* Less verbose naming

* Proper key for useCreate

* Used component instead of render prop

* Add common NULL_CLIENT_ERROR for error handling

* Add copyright header

* Fix typo

* Keep a prop in the `rest` syntax

* move COLUMNS to a constant

* Naming issues

* Add Issue ID to comment

* Simplify getOpenPort

* Rename `zeroProperties` to `initialProperties`

* Use shorthands for analog / digital input / output

* [console] - improved null client error'

* [console] - css tuning of read tasks

* [console] - fixed channel removal behavior

* [console] - cleaned up task type definitions

---------

Co-authored-by: pjdotson <[email protected]>
* Change barrel exporting format

* Remove unique `Chan` type, rename `Chan` to `Channel

* checkpoint

* more refactoring

* client and ontology changes

* rearrange hardware folders

* checkpoint

* change zod unions to zod enums

* update opc configure layout

* commit

* checkpoint

* Checkpoint

* Analog Write Task Checkpoint

* PR updates

* Add support for automatically filling in device when a task is created from the ontology

* checkpoint

* Updated `useDesiredState.ts`

* type assertions

* Fix vitest

* Changes

* More touchups

* Add Copy Buttons

* Correct casing

* Remove console.log

* remove unneeded ts expect error

* Rename ...props to ...rest

* Add back fix

* Apply task migrations for analog read

* update analog read task schema

* touchups

* intermediate opc tasks

* Edits and working opc tasks

* Fix build issues

* Update form files

* collapse spacing

* more touchups

* cut lines in enriched.json

* More touchups

* touchups

* updates

* edit enable / disable button

* checkpoint

* More touchups

* touchups

* NI digital items

* touch up digital types

* more touchups

* fixes

* Remove setAltKey logic

* Add rack creation logic

* More touchups

* Rename Configure.tsx to Sequence.tsx

* Rename Ontology.BASE_SERVICE to Ontology.NOOP_SERVICE

* Rename ontology.RootID to ontology.ROOT_ID

* Add type hinting for devices

* Rename noneSelectedElement to noneSelectedContent

* Add parseWithoutKeyConversion utility function

* Rename task generic type names to be more verbose

* Change loading symbols to h4

* Add emptyContent checker to list component

* Fix pluto build issue

* Rename `generateEmpty` to `createEmptyService`

* Add types for client ontology types

* Add error handling for placing snapshots from range overview

* Less verbose naming

* Proper key for useCreate

* Used component instead of render prop

* Add common NULL_CLIENT_ERROR for error handling

* Add copyright header

* Fix typo

* Keep a prop in the `rest` syntax

* move COLUMNS to a constant

* Naming issues

* Add Issue ID to comment

* Simplify getOpenPort

* Rename `zeroProperties` to `initialProperties`

* Use shorthands for analog / digital input / output

* [console] - improved null client error'

* [console] - css tuning of read tasks

* [console] - fixed channel removal behavior

* [console] - cleaned up task type definitions

* [ontology/tree] - fixed tree item location

* [synnax] - added validation checks for racks with devices still attached

* [synnax] - added rack deletion validation checks

* [driver] - added transient channel checking to fgrpc

* [driver] - checkpoint

* [driver] - major refactor for code quality

* [driver] - cleaned up config parsing

* [driver] - improved task manager implementation

* [ops/cpp] - removed usage of float_t

* [driver] - fixed linux build issues

* [driver] - corrected bazel build rule

* [driver] - added cluster key validation

* [driver] - fixed cluster identity change checks

* [driver] - resolved merge conflicts with RC

* [x/cpp] - fixed OS headers

* [driver] - fixed embedded build

* [driver] - fixed windows build

* [driver] - added missing labjack deps

* [driver] - fixed labjack windows build

* [ops] - fixed formatting and linting issues

* [driver] - added tests for x package

* [cpp] - fixed freighter and x tests

* [x/cpp] - improved flaky loop tests

* [driver] - documented config package

---------

Co-authored-by: pjdotson <[email protected]>
* [console] - cleaned up console channel name styles

* [console] - increased element color contrast

* [console] - re-commented CSS file

* [console] - fixed accell sensitivity units field style

* [console] - fixed task toolbar outlines

* [console] - cleaned up overflow styles

* [console] - fixed linting issues
* [console] - cleaned up task details view

* [console] - cleaned up channel list
* [console] - cleaned up console channel name styles

* [console] - increased element color contrast

* [console] - re-commented CSS file

* [console] - fixed accell sensitivity units field style

* [console] - fixed task toolbar outlines

* [console] - cleaned up overflow styles

* [synnax] - persist tast state

* [synnax] - implemented persisted tracking for task state

* [console] - removed unused import

* [cesium] - made control tests more robust

* [x/go] - improved PluralName and added specs

* SY-1990 Task Manager Refactor, Fix Moving Cards Between Racks (#1102)

* [driver] - added skipping of foreign racks

* Fix Adding Channels to LabJack tasks, Improve Read Task Forms, Add More Zod Warnings (#1100)

* Auto Update JSON File

* [driver] - supplemented task manager tests

* Replace useContext with use and <Context.Provider> with <Context>

* [driver] - refactored task manager to the point where it's more sustainable

* [driver] - added shutdown checking package

* [driver] - implemented tests for task manager

* [driver] - added heartbeat

* [driver] - cleaned up heartbeat

* [driver] - added tests to CI workflow

* [driver] - added driver tests to CI

* [driver] - fixed tests in CI

* [driver] - removed labjack tests

* Refactor status aggregator to use two different contexes

* Fix effect key

* Move schema definition outside of wrapped component

* Better describe Form state

* Revert commits that should not have gotten pushed

* Auto Update JSON File

* [driver] - fixed win32 winsock include issues

* [driver] - cleaned up rack implementation

* [driver] - cleaned up rack implementation

* [driver] - switch fatal log to error log

* [driver] - improved xshutdown handling

* [x] - fixed linking issues with xshutdown package

* [x/cpp] - cleaned up shutdown code

* [driver] - improved startup logging

* [ops/cpp] - fixed driver testing

* [x] - fixed windows shutdown build and added maxium retry interval to breaker

* [driver] - cleaned up code

* [driver] - updated OPC UA ci builds

* [driver] - uncommented OPC tests

* [client/cpp] - cleaned up code and fixed out of memory bounds bug

* [freighter] - cleaned up implementations

* [x] - cleaned up breaker implementation

* [driver] - cleaned up config tests

* [driver] - cleand up config tests

* [driver] - dropped base sequence control authority

* [client/cpp] - fixed formattting issues

---------

Co-authored-by: Patrick Dotson <[email protected]>
Co-authored-by: pjdotson <[email protected]>
Co-authored-by: pjdotson <[email protected]>
Co-authored-by: Elham Islam <[email protected]>

* [x/cpp] - fixed breaker tests

* [freighter] - fixed tests

* [client/cpp] - fixed framer test cases

* [tracker] - fixed test timeout

---------

Co-authored-by: Patrick Dotson <[email protected]>
Co-authored-by: pjdotson <[email protected]>
Co-authored-by: pjdotson <[email protected]>
Co-authored-by: Elham Islam <[email protected]>
…uence Creation Options (#1107)

* Auto Update JSON File

* Rename error overlay module

* Allow passing optional keys into layouts

* Refactor channel layouts

* Refactor cluster layouts

* Refactor docs layout

* Refactor label layouts

* Update device layouts

* Update task layouts

* Update hardware layouts

* Refactor visualization layouts

* Refactor layouts in Layouts module

* Update modal layouts

* Update permissions layouts

* Update user layouts

* Update workspace layouts

* Refactor range layouts

* Update version layout

* Add Visualization selector layout and refactor selectors

* Add options for creating sequences from rack and from the command palette

* Add setting alt keys to tasks

* Minor touchups

* Change Selector order

* Naming changes

* [console] - fixed typos

---------

Co-authored-by: Emiliano Bonilla <[email protected]>
Base automatically changed from rc to main April 1, 2025 04:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants