From 55a120dfede8423ce0261f497b240f763a73ea79 Mon Sep 17 00:00:00 2001 From: Kevin Matz Date: Fri, 31 Mar 2023 19:51:42 -0400 Subject: [PATCH] namespace stubs for CITP protocol layers --- protocol/citp/CMakeLists.txt | 6 ++++++ protocol/citp/citp.h | 10 +++++++-- protocol/citp/finf.h | 41 ++++++++++++++++++++++++++++++++++++ protocol/citp/fptc.h | 41 ++++++++++++++++++++++++++++++++++++ protocol/citp/fsel.h | 41 ++++++++++++++++++++++++++++++++++++ protocol/citp/msex.h | 39 ++++++++++++++++++++++++++++++++++ protocol/citp/pinf.h | 40 +++++++++++++++++++++++++++++++++++ protocol/citp/sdmx.h | 40 +++++++++++++++++++++++++++++++++++ 8 files changed, 256 insertions(+), 2 deletions(-) create mode 100644 protocol/citp/finf.h create mode 100644 protocol/citp/fptc.h create mode 100644 protocol/citp/fsel.h create mode 100644 protocol/citp/msex.h create mode 100644 protocol/citp/pinf.h create mode 100644 protocol/citp/sdmx.h diff --git a/protocol/citp/CMakeLists.txt b/protocol/citp/CMakeLists.txt index 27adbac..21e10f5 100644 --- a/protocol/citp/CMakeLists.txt +++ b/protocol/citp/CMakeLists.txt @@ -6,6 +6,12 @@ add_library(LCP::CITP ALIAS ${PROJECT_NAME}) target_sources(${PROJECT_NAME} PUBLIC citp.h + finf.h + fptc.h + fsel.h + msex.h + pinf.h + sdmx.h ) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX) diff --git a/protocol/citp/citp.h b/protocol/citp/citp.h index 4f4cb4b..4d9b455 100644 --- a/protocol/citp/citp.h +++ b/protocol/citp/citp.h @@ -25,6 +25,12 @@ #include +/** + * @namespace \cite CITP 3. CITP, base layer + * + * The base layer as such does not define any packages, it merely adds a header that + * encapsulate all messages. + */ namespace CITP { /** @@ -38,8 +44,8 @@ struct CITP_Header uint8_t VersionMajor; ///< Set to 1. uint8_t VersionMinor; ///< Set to 0. union { - uint16_t RequestIndex; - uint16_t InResponseTo; + uint16_t RequestIndex; ///< Senders request index. Set to 0 to "ignore" + uint16_t InResponseTo; ///< Responders copy of the RequestIndex }; uint32_t MessageSize; ///< The size of the entire message, including this header. uint16_t MessagePartCount; ///< Number of message fragments. diff --git a/protocol/citp/finf.h b/protocol/citp/finf.h new file mode 100644 index 0000000..bd4a201 --- /dev/null +++ b/protocol/citp/finf.h @@ -0,0 +1,41 @@ +/* + finf.h + + Copyright (c) 2023 Kevin Matz (kevin.matz@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#pragma once + +#include + +namespace CITP { + +/** + * @namespace \cite CITP 8. CITP/FINF, Fixture Information layer + * + * The Fixture Information layer is used to carry additional fixture information. + */ +namespace FINF { + +} // namespace FINF + +} // namespace CITP + + diff --git a/protocol/citp/fptc.h b/protocol/citp/fptc.h new file mode 100644 index 0000000..ce11e00 --- /dev/null +++ b/protocol/citp/fptc.h @@ -0,0 +1,41 @@ +/* + fptc.h + + Copyright (c) 2023 Kevin Matz (kevin.matz@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#pragma once + +#include + +namespace CITP { + +/** + * @namespace \cite CITP 6. CITP/FPTC, Fixture patch layer + * + * The Fixture Patch layer is used to communicate fixture existence and patch information. + */ +namespace FPTC { + +} // namespace FPTC + +} // namespace CITP + + diff --git a/protocol/citp/fsel.h b/protocol/citp/fsel.h new file mode 100644 index 0000000..7605e3e --- /dev/null +++ b/protocol/citp/fsel.h @@ -0,0 +1,41 @@ +/* + fsel.h + + Copyright (c) 2023 Kevin Matz (kevin.matz@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#pragma once + +#include + +namespace CITP { + +/** + * @namespace \cite CITP 7. CITP/FSEL, Fixture Selection layer + * + * The Fixture Selection layer is used to carry fixture selection information. + */ +namespace FSEL { + +} // namespace FSEL + +} // namespace CITP + + diff --git a/protocol/citp/msex.h b/protocol/citp/msex.h new file mode 100644 index 0000000..d361f4b --- /dev/null +++ b/protocol/citp/msex.h @@ -0,0 +1,39 @@ +/* + msex.h + + Copyright (c) 2023 Kevin Matz (kevin.matz@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#pragma once + +#include + +namespace CITP { + +/** + * @namespace \cite CITP 9. CITP/MSEX, Media Server Extensions layer + * + * The Media Server EXtensions layer is used for communication with Media Servers. + */ +namespace MSEX { + +} // namespace MSEX + +} // namespace CITP diff --git a/protocol/citp/pinf.h b/protocol/citp/pinf.h new file mode 100644 index 0000000..d910447 --- /dev/null +++ b/protocol/citp/pinf.h @@ -0,0 +1,40 @@ +/* + pinf.h + + Copyright (c) 2023 Kevin Matz (kevin.matz@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#pragma once + +#include + +namespace CITP { + +/** + * @namespace \cite CITP 4. CITP/PINF, Peer Information layer + * + * The Peer Information layer is used to exchange peer information, both when + * connected and during discovery. + */ +namespace PINF { + +} // namespace PINF + +} // namespace CITP diff --git a/protocol/citp/sdmx.h b/protocol/citp/sdmx.h new file mode 100644 index 0000000..a0c7265 --- /dev/null +++ b/protocol/citp/sdmx.h @@ -0,0 +1,40 @@ +/* + sdmx.h + + Copyright (c) 2023 Kevin Matz (kevin.matz@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#pragma once + +#include + +namespace CITP { + +/** + * @namespace \cite CITP 5. CITP/SDMX, Send DMX layer + * + * The SDMX layer is used to transmit DMX information. It also supports designating + * an alternative DMX source. + */ +namespace SDMX { + +} // namespace SDMX + +} // namespace CITP