1
0
Fork 0
Commit Graph

462 Commits

Author SHA1 Message Date
Kevin Matz 42ca307c4d receiver for OSC messages 2023-04-23 11:35:31 -04:00
Kevin Matz 1cce721179 endpoints for messages 2023-04-23 11:34:35 -04:00
Kevin Matz 877ab3ed4c message and bundle I/O 2023-04-23 11:33:58 -04:00
Kevin Matz d51d3163f9 the various OSC argument types 2023-04-23 11:32:52 -04:00
Kevin Matz abe41404cc remove extraneous brackets 2023-04-23 11:30:26 -04:00
Kevin Matz 4d797f2c1c also set the DMX device class when changing operating mode 2023-04-17 08:17:31 -04:00
Kevin Matz a34ada6da5 an asynchronous open procedure 2023-04-16 21:13:11 -04:00
Kevin Matz c3bc6dc44e read the full length of remaining data 2023-04-16 14:54:01 -04:00
Kevin Matz 63aef39f28 bring awareness of device operating classes to the base universe class 2023-04-16 11:05:04 -04:00
Kevin Matz f1f153f09e bring active slot awareness down to the base universe class 2023-04-16 11:03:53 -04:00
Kevin Matz 18e710dc56 simplify open/close semantics 2023-04-14 10:10:10 -04:00
Kevin Matz 80bfce67b7 setting parameters may optionally set the user data 2023-04-14 10:09:26 -04:00
Kevin Matz a58ffc5c4a remove promises/futures for now 2023-04-14 10:07:58 -04:00
Kevin Matz 0bb177c68e get/set user configuration data 2023-04-14 09:55:10 -04:00
Kevin Matz da32cf4240 feature sets are encoded in the high byte of the firmware version 2023-04-14 09:54:05 -04:00
Kevin Matz 1bf3f23a66 return the calculated value that was actually set 2023-04-14 09:53:30 -04:00
Kevin Matz 5d7f169692 don't change the mode when opening 2023-04-09 20:51:07 -04:00
Kevin Matz 4833b37739 copy dimmer data directly to the data vector 2023-04-09 20:42:05 -04:00
Kevin Matz 244da5c8c1 no need to pass around zero data messages 2023-04-09 19:51:01 -04:00
Kevin Matz c16e999969 use a helper to make the different MessageData specializations 2023-04-09 19:43:54 -04:00
Kevin Matz 3cb89f51d3 mark stream functions as virtual in the derivative classes 2023-04-09 19:34:27 -04:00
Kevin Matz b6e080f7b4 give the No-Op message it's own class 2023-04-09 19:33:03 -04:00
Kevin Matz be4064bb14 declare a storage type for enums 2023-04-09 19:32:35 -04:00
Kevin Matz 6387944c68 the usb mode can be accessible by super classes 2023-04-09 19:31:56 -04:00
Kevin Matz 55317f7513 BCD encode/decode the serial number 2023-04-09 19:26:41 -04:00
Kevin Matz c12044326f accept hello on closed port 2023-04-06 12:39:18 -04:00
Kevin Matz e1e9c9d473 enable label=0 as ping/echo 2023-04-06 12:37:25 -04:00
Kevin Matz 9168f1b98c a (probably incorrect) interpretation of writing firmware 2023-04-06 10:43:42 -04:00
Kevin Matz 0617cc3bf6 only send a reboot message if operating as a USB Host 2023-04-06 10:42:39 -04:00
Kevin Matz 388beecf8d take the promise's future whilst still holding the metadata mutex 2023-04-06 10:11:33 -04:00
Kevin Matz b92f159d02 default into bridge mode on init/connect 2023-04-06 09:53:42 -04:00
Kevin Matz 153786efa4 get the initial parameter values when the device is opened. 2023-04-06 09:45:39 -04:00
Kevin Matz 97ae66e231 Only consider the port to be open if a serial number can be read within 500 milliseconds. 2023-04-06 09:44:54 -04:00
Kevin Matz e316c71a83 messages that expect a reply may optionally block to wait for it. 2023-04-06 09:43:41 -04:00
Kevin Matz a355edd722 use the USB mode to determine connection state 2023-04-06 09:40:00 -04:00
Kevin Matz c2f1dcce07 rename the dimmer data change callback token 2023-04-06 08:34:35 -04:00
Kevin Matz fa2625f77d thread protect metadata with a mutex 2023-04-06 08:33:57 -04:00
Kevin Matz 5a4e827f08 DMX data I/O 2023-04-05 12:41:13 -04:00
Kevin Matz 55c9060ff6 use the same defaults as the Enttec 2023-04-05 12:39:12 -04:00
Kevin Matz 54244d4988 metadata setter functions 2023-04-05 09:19:16 -04:00
Kevin Matz 10ee3c1d22 setting device parameters is a const operation for the host 2023-04-05 08:55:18 -04:00
Kevin Matz b6a81c2bd2 host may tell device to prep for recieving a firmware 2023-04-05 08:54:43 -04:00
Kevin Matz 98e903159c user data length must match the lenght of data sent 2023-04-05 08:43:26 -04:00
Kevin Matz d496e71f8a get/set widget metadata 2023-04-05 08:42:50 -04:00
Kevin Matz 1b272f0d23 rename USB host side methods 2023-04-05 08:10:59 -04:00
Kevin Matz 72a66be0b5 let superclasses decide if they want firmware updates 2023-04-05 06:56:23 -04:00
Kevin Matz 0b7143f809 get/set widget parameters 2023-04-03 20:12:01 -04:00
Kevin Matz a2ec07e16c get/set serial number 2023-04-03 20:11:25 -04:00
Kevin Matz c6c09be86a always fail at writing firmware 2023-04-03 20:09:55 -04:00
Kevin Matz 2cfbf384de get all of the firmware version bits at once 2023-04-03 20:09:06 -04:00
Kevin Matz 9f6968c915 keep widget properties 2023-04-03 16:43:37 -04:00
Kevin Matz 13bb3a39f0 incorporate the label value into the message data struct directly 2023-04-03 16:42:48 -04:00
Kevin Matz 0c36bd34b7 put the widget directly in the ENTTEC namespace 2023-04-03 09:58:26 -04:00
Kevin Matz 12fddd4caa unify project version 2023-04-03 08:57:54 -04:00
Kevin Matz cb2bc6548d stubs for communicating with a widget 2023-04-02 22:47:50 -04:00
Kevin Matz 8f3d704d5a stream IO for the API 2023-04-02 19:42:32 -04:00
Kevin Matz 8e41fc72c2 use the bufferstream library 2023-04-02 13:24:55 -04:00
Kevin Matz 1ea49ebde2 use bufferstreams instead of the ACN::PDU stream 2023-04-02 13:24:26 -04:00
Kevin Matz dcbd735476 personalities get a name 2023-04-02 10:35:07 -04:00
Kevin Matz 3e805960d7 protocol definitions for ENTTEC DMX USB Pro API 1.44 2023-04-02 10:34:49 -04:00
Kevin Matz 7d1c756d89 patch Personalities, not devices. 2023-04-01 15:31:22 -04:00
Kevin Matz 3ee4cbb858 basic operations for managing a patch 2023-04-01 11:17:56 -04:00
Kevin Matz 6486775626 allow devices to be sorted by startaddress 2023-04-01 11:17:29 -04:00
Kevin Matz 55a120dfed namespace stubs for CITP protocol layers 2023-03-31 19:51:42 -04:00
Kevin Matz 189be8baf7 notes on how to access the standards documents 2023-03-31 11:22:56 -04:00
Kevin Matz 88f06738ab add a bibliography file for OSC 2023-03-31 11:22:28 -04:00
Kevin Matz 7b436915d8 initial build framework for CITP 2023-03-31 11:22:01 -04:00
Kevin Matz e1c1c1b579 move OSC to the prococols directory 2023-03-31 10:52:33 -04:00
Kevin Matz 847b6d931d rename platform library with consitant project name 2023-03-31 09:55:02 -04:00
Kevin Matz 396aac84f3 reorder for readability 2023-03-31 01:52:08 -04:00
Kevin Matz aaacd8539b build as a shared library 2023-03-31 01:51:14 -04:00
Kevin Matz 40a3342317 use preferred naming convention for build 2023-03-31 01:49:38 -04:00
Kevin Matz b55a8fdd83 link by module namespace referance 2023-03-31 01:46:35 -04:00
Kevin Matz db81ecefdc add namespace aliases to cmake 2023-03-31 01:42:40 -04:00
Kevin Matz c2ab4d9b22 remove unnecessary cmake directives 2023-03-31 01:37:37 -04:00
Kevin Matz f9efddf583 cleanup comments 2023-03-30 20:15:35 -04:00
Kevin Matz 6cd9a9e6df correctly scale return value, with comment about linearity 2023-03-30 20:14:59 -04:00
Kevin Matz cd884a8593 mark standards parameters as static 2023-03-30 20:13:26 -04:00
Kevin Matz b6e9425083 evaluate non-dim from millivolts 2023-03-30 19:16:54 -04:00
Kevin Matz 8979dd4699 Hysteresis aware method for calculating non-dim switch state 2023-03-30 14:55:12 -04:00
Kevin Matz 9c5654b34d retain low-end resolution 2023-03-30 14:40:29 -04:00
Kevin Matz 2c72607dc3 E1.3 0-10V support 2023-03-30 13:56:14 -04:00
Kevin Matz 3ef5e0498b set default merge mode 2022-12-12 13:43:40 -05:00
Kevin Matz 7dfb0a81d7 universe arbitration is a helper not a subclass 2022-12-12 13:39:10 -05:00
Kevin Matz 64e6ee1c0a add refresh function to consolidate maintenance tasks 2022-12-12 11:32:26 -05:00
Kevin Matz f5d99a03e6 remove unused base class function 2022-12-12 11:31:29 -05:00
Kevin Matz d87fbcf25d unify the callback handlers 2022-12-12 11:29:41 -05:00
Kevin Matz 64140eb757 cache the dominant universe 2022-12-11 21:30:37 -05:00
Kevin Matz e219e64d28 doc updates 2022-12-11 21:30:26 -05:00
Kevin Matz 472b6a1c39 retriever of sources metadata 2022-12-11 21:24:27 -05:00
Kevin Matz a2bd30dbe5 better to just call the callback doer in a lambda 2022-12-11 21:23:34 -05:00
Kevin Matz 74de2c07af don't pay attention to universes that may not be dominant 2022-12-11 21:22:17 -05:00
Kevin Matz 27179b4e00 use a single vector for all callback tokens 2022-12-11 16:53:54 -05:00
Kevin Matz b5f3e63b36 add callbacks for member changes 2022-12-11 16:48:42 -05:00
Kevin Matz 59dbad2264 reorder header 2022-12-11 16:48:06 -05:00
Kevin Matz b84d7bafe9 explicitly call the base class function 2022-12-11 16:46:11 -05:00
Kevin Matz 059c115c15 do data callbacks after synchronization 2022-12-11 16:45:37 -05:00
Kevin Matz ce51e17ddd use the existing metadata 2022-12-11 16:13:10 -05:00
Kevin Matz 6da7001c67 refactor class and file name 2022-12-11 16:04:44 -05:00
Kevin Matz 89716e1af5 make HTP the default merge mode 2022-12-11 15:58:40 -05:00
Kevin Matz 12b34cef6e refactor class and file name 2022-12-11 15:58:28 -05:00
Kevin Matz 7676cd54a2 configurable merge mode for received universes 2022-12-11 14:55:05 -05:00
Kevin Matz a3eb42523e stubs for the OSC library 2022-12-11 09:58:26 -05:00
Kevin Matz 293b2060b8 don't hold the control lock when doing callbacks 2022-12-10 13:34:45 -05:00
Kevin Matz 0b02bc3c14 toggle'able hold-last-look 2022-12-10 13:20:39 -05:00
Kevin Matz 986dc9b89e remove hold-last-look behaviors from receiver to universe 2022-12-10 12:24:17 -05:00
Kevin Matz 849da8cecb take the control lock when running callbacks 2022-12-10 11:30:23 -05:00
Kevin Matz 8ce86353c9 opportunistically perform maintenance tasks 2022-12-10 11:15:02 -05:00
Kevin Matz dbcde09616 more of making thing constant 2022-12-10 11:12:44 -05:00
Kevin Matz 52758cc904 use the volatile global enabled flag 2022-12-10 11:08:18 -05:00
Kevin Matz 37367cb6b4 explicit constructors and virtual destructors 2022-12-10 11:07:13 -05:00
Kevin Matz eb47f6543f correct locking semantics 2022-12-09 23:09:52 -05:00
Kevin Matz 8221c90e24 remove commented code 2022-12-09 23:09:26 -05:00
Kevin Matz 16416ff10f mark as const 2022-12-09 23:09:11 -05:00
Kevin Matz 45cee71b19 become more constant 2022-12-09 21:27:27 -05:00
Kevin Matz c4cf9768ab use scoped mutex locking 2022-12-09 21:08:35 -05:00
Kevin Matz fe8bc039bc rename private variable 2022-12-09 18:17:04 -05:00
Kevin Matz c9dec23ea9 initialize the DMP data segment from the sending thread 2022-12-09 16:08:16 -05:00
Kevin Matz 0c9c85830e use dynamic casts if RTTI is an available feature 2022-12-09 16:04:31 -05:00
Kevin Matz 4975c7e809 rearrange in header order 2022-12-09 15:16:03 -05:00
Kevin Matz 1d1be459c8 rename mutex for consistency 2022-12-09 11:54:52 -05:00
Kevin Matz e6146e9efe standard timing intervals are constant 2022-12-09 11:46:18 -05:00
Kevin Matz 7f8e9ce4ac shared lock for universe access control 2022-12-09 11:18:27 -05:00
Kevin Matz d11e136247 use locking guards 2022-12-09 10:29:01 -05:00
Kevin Matz f1d3fe0256 use a shared mutex to lock the dimmer data 2022-12-09 10:28:02 -05:00
Kevin Matz b7ca5c36f5 reuse the sACN framing layer PDU 2022-12-09 09:26:42 -05:00
Kevin Matz 4fa5a2794a use initializer list to create sender 2022-12-09 09:25:29 -05:00
Kevin Matz 4d7413b949 move all of transmitting to the helper class 2022-12-08 21:22:20 -05:00
Kevin Matz 466efd7477 move tx to a helper class 2022-12-08 19:09:39 -05:00
Kevin Matz d67b3b8f40 adapt to the DMP rx/tx mechanism 2022-12-08 18:05:33 -05:00
Kevin Matz f9896ff5f3 add synchronization reset helper 2022-12-08 18:04:37 -05:00
Kevin Matz 85a7ec4762 strictly enforce recieved sequence numbers 2022-12-08 17:56:02 -05:00
Kevin Matz 8a83107ee7 follow rename in base class 2022-12-08 17:52:24 -05:00
Kevin Matz 0ac22b232d inherit from DMP::Component 2022-12-08 17:50:29 -05:00
Kevin Matz 46938de0f5 refactor for readability 2022-12-08 17:47:37 -05:00
Kevin Matz 6237a9ef37 refactor for naming consistency 2022-12-08 17:41:07 -05:00
Kevin Matz 67e4472751 refactor to less ambigous name 2022-12-08 17:40:15 -05:00
Kevin Matz e34a5acb5c metadata is a more descriptive property name 2022-12-08 10:12:25 -05:00
Kevin Matz 63ee24d334 add a non-standard 0 value failure reason 2022-12-07 21:58:10 -05:00
Kevin Matz 382f2d26fd add some accesses'ors for the range metadata 2022-12-07 21:57:32 -05:00
Kevin Matz 2b5db0febd initialize the address_type members 2022-12-07 21:56:49 -05:00
Kevin Matz ce3e1ebf7c capitalize the Range struct 2022-12-07 21:56:17 -05:00
Kevin Matz 433e91f70c refactor over DMP Component 2022-12-07 21:53:39 -05:00
Kevin Matz 8f42e0bca6 a base class for DMP components 2022-12-07 21:51:15 -05:00
Kevin Matz 26ae455a07 check that the block was created before assigning parents 2022-12-06 18:05:12 -05:00
Kevin Matz 7434ac3d91 fix off-by-one error 2022-12-06 18:04:37 -05:00
Kevin Matz f496b89e44 prefer the block setting code path 2022-12-06 18:04:19 -05:00
Kevin Matz 97ef3d5078 allocate loop control variables before the loop 2022-12-06 15:38:20 -05:00
Kevin Matz b07d505bce only send 3 terminated universe frames 2022-12-06 14:52:06 -05:00
Kevin Matz 8a2e838916 only reset the sequence number for received terminated universes 2022-12-06 14:51:43 -05:00
Kevin Matz 1cad61ffc7 protected convenience calls can be inlined 2022-12-06 14:51:03 -05:00
Kevin Matz 635dc36ada cleanup documentation 2022-12-06 14:50:20 -05:00
Kevin Matz 39a6bcbfbf rearrange header 2022-12-06 14:04:18 -05:00
Kevin Matz f9f0d1298e any optimization of separate handling is overshadowed by duplicating the code 2022-12-06 13:37:40 -05:00
Kevin Matz ed40a3b666 catch the range exception instead of implementing seperate bounds checks 2022-12-06 13:36:27 -05:00
Kevin Matz e7297c42ff use the same callback runner for all callback types 2022-12-06 13:35:18 -05:00
Kevin Matz 5ad7b5505e give all universe callbacks the same signature 2022-12-06 13:30:40 -05:00
Kevin Matz 738ced6964 fix off-by-one in range check 2022-12-06 13:24:09 -05:00
Kevin Matz ca75a9973c the status indicator widget 2022-12-06 00:16:00 -05:00
Kevin Matz 55bcdc8db6 cleanup whitespace 2022-12-04 12:06:16 -05:00
Kevin Matz 3135c0ae6c rename call back registration function for consistancy 2022-12-02 16:35:05 -05:00
Kevin Matz a03ef79d5d add note about the need to collapse the superposition of status 2022-12-02 15:47:51 -05:00
Kevin Matz e0394e4413 don't supply and undefined source_name 2022-12-02 15:35:48 -05:00
Kevin Matz be17ea9bb5 remove redundant local variable 2022-12-02 15:35:08 -05:00
Kevin Matz a443299204 set timeout state based solely on age 2022-12-02 15:33:22 -05:00
Kevin Matz 9548145629 rename function to remove implication of rx use only 2022-12-02 15:32:26 -05:00
Kevin Matz 2cb021b184 reset the sequence number on termination 2022-12-02 13:09:58 -05:00
Kevin Matz 6a977bbf01 prefer the copy_n method for readability 2022-12-02 13:09:18 -05:00
Kevin Matz 11c6013a00 unify formatting and comments 2022-12-02 13:08:08 -05:00
Kevin Matz db7bf1dcb3 add status change callbacks for listeners that want to be notified 2022-12-02 13:06:22 -05:00
Kevin Matz 2491054e1d cleanup universe status setting 2022-12-02 13:04:06 -05:00
Kevin Matz 4745458b87 rename callback list to better indicate the type of callback 2022-12-02 12:57:01 -05:00
Kevin Matz 6a2d1242be rename variable to reflect validity for both rx and tx 2022-12-02 12:52:52 -05:00
Kevin Matz 8e082fb112 mark override functions as virtual 2022-11-30 09:55:18 -05:00
Kevin Matz 874f6482a3 initialize varibles in the constructor 2022-11-30 09:54:24 -05:00
Kevin Matz 41530d86c1 comment cleanup 2022-11-30 09:54:01 -05:00
Kevin Matz d4c0665330 generated IP addresses are static 2022-11-30 09:53:08 -05:00
Kevin Matz 79ed3e5a8b use a propper hash combiner 2022-11-30 09:52:50 -05:00
Kevin Matz 0ba1ecc9ac cleanup the the linking and including hierarchy 2022-11-30 09:52:25 -05:00
Kevin Matz 32557b5c31 the ACN library has become an interface library 2022-11-30 09:49:27 -05:00
Kevin Matz 15281fc3a7 build a library for the PDU 2022-11-30 09:49:00 -05:00
Kevin Matz f17487b30f universes manage their own synchronization 2022-11-29 10:11:47 -05:00
Kevin Matz f12b055aa0 remove intermediate project names 2022-11-28 17:24:38 -05:00
Kevin Matz c9377418fa move OTP to a submodule 2022-11-28 16:41:28 -05:00
Kevin Matz 3e648dc152 move RDM and RDMnet to submodules 2022-11-28 16:37:38 -05:00
Kevin Matz 3e2d22e77e move ACN to a submodule 2022-11-28 15:57:52 -05:00
Kevin Matz a86d968569 move sACN to a subproject 2022-11-28 15:06:48 -05:00
Kevin Matz 9e7b45d38c only declare project name 2022-11-28 14:55:45 -05:00
Kevin Matz 212e1ce0af make artistic a subproject 2022-11-28 14:55:31 -05:00
Kevin Matz 13d1251511 move DMX to submodule 2022-11-28 14:55:05 -05:00
Kevin Matz 375ec153fe build as shared libraries 2022-11-28 14:19:18 -05:00
Kevin Matz 9b49e63cab mark the linking to LCP as private 2022-11-28 14:19:01 -05:00
Kevin Matz 2f1d29ecfa move UUID into a submodule 2022-11-28 14:18:21 -05:00
Kevin Matz a8377b6635 move Art-Net to a subproject 2022-11-28 13:41:57 -05:00
Kevin Matz e2b46c5bbf version bump 2022-11-28 11:37:25 -05:00
Kevin Matz a74bd32598 mark some class headers as public 2022-11-28 11:37:10 -05:00
Kevin Matz a81bc5b1fd accept the front of over-length data 2022-11-28 11:36:01 -05:00
Kevin Matz fdb2980d0e cleanup docs and whitespace 2022-11-28 11:23:13 -05:00
Kevin Matz 71edfaf7e9 consolidate status changes 2022-11-28 11:22:06 -05:00
Kevin Matz 73ee83cd9e scope the age variable to the function 2022-11-28 11:17:35 -05:00