Third-Party Dependencies:
=========================
* Dependency Boost 1.85.0
  licensed under：The Boost Software License 1.0
  
* Dependency boost_atomic-vc143 1.85.0
  licensed under：The Boost Software License 1.0
  
* Dependency boost_chrono-vc143 1.85.0
  licensed under：The Boost Software License 1.0

* Dependency boost_filesystem-vc143 1.85.0
  licensed under：The Boost Software License 1.0

* Dependency boost_log_setup-vc143 1.85.0
  licensed under：The Boost Software License 1.0

* Dependency boost_log-vc143 1.85.0
  licensed under：The Boost Software License 1.0

* Dependency boost_thread-vc143 1.85.0
  licensed under：The Boost Software License 1.0

* Dependency fmt 7.0.1
  licensed under：Unlicense OR MIT

* Dependency Microsoft.Windows.CppWinRT 2.0.240405.15
  licensed under：MIT

* Dependency IPF Extensible Framework (IPF-EF) v2021.05.11
  licensed under：Intel OBL SDK and Tools License
  
* Dependency Intel Graphics Control Library (IGCL) 10.07.21 
  licensed under：Unlicense OR MIT
  
* Dependency JSON for Modern C++ 3.11.2
  licensed under：MIT
  
* Dependency IPF-CoreSDK 1.0.11406
  licensed under：Intel Software Tools License Agreement
  
* Dependency PresentMon 1.10.0
  licensed under：MIT
  
* Dependency DirectX error library
  licensed under：MIT

* Dependency NVAPI interface
  licensed under：Unlicense OR MIT



License Texts:
==============
--------------------------------------------------------------------------------
Package Title: IPF-CoreSDK (1.0.11406.42226)
--------------------------------------------------------------------------------

* Declared Licenses *
Intel Software Tools License Agreement

SOFTWARE TOOLS LICENSE AGREEMENT

DO NOT DOWNLOAD, INSTALL, ACCESS, COPY, OR USE ANY PORTION OF THE MATERIALS (DEFINED BELOW) UNTIL YOU HAVE READ AND ACCEPTED THE TERMS AND CONDITIONS OF THIS AGREEMENT. BY INSTALLING, COPYING, ACCESSING, OR USING THE MATERIALS, YOU AGREE TO BE LEGALLY

BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. If You do not agree to be bound by, or the entity for whose benefit You act has not authorized You to accept, these terms and conditions, do not install, access, copy, or use the Software and destroy all copies of the Software in Your possession.

This DEVELOPMENT TOOLS LICENSE AGREEMENT (this “Agreement”) is entered into between Intel Corporation, a Delaware corporation (“Intel”) and You. “You” refers to you or your employer or other entity for whose benefit you act, as applicable. If you are agreeing to the terms and conditions of this  Agreement on behalf of a company or other legal entity, you represent and warrant that you have the legal authority to bind that legal entity to the Agreement, in which case, "You" or "Your" shall be in reference to such entity. Intel and You are referred to herein individually as a “Party” or, together, as the “Parties”.

The Parties, in consideration of the mutual covenants contained in this Agreement, and for other good and valuable consideration, the receipt and  sufficiency of which they acknowledge, and intending to be legally bound, agree as follows:

1.  DEFINITIONS. The following definitions are used throughout this Agreement:

“Affiliate” means any entity controlling, controlled by or under common control with a Party hereto, where “control” means the direct or indirect ownership of more than fifty percent (50%) of such entity’s capital or equivalent voting rights. An entity will be deemed an “Affiliate” only as long as such control exists during the term of this Agreement.

“Contractor” means a third party consultant or subcontractor who requires access to or use of the Materials to perform work on Your behalf or at Your behest.

“Development Tools” means the development, evaluation, production, or test tool software, and associated documentation or other collateral, identified in the “development_tools.txt” text files, if any, included in the Materials.

“Derivatives” means derivative works as defined in 17 U.S.C § 101 et seq.

“Intel-based Device” means a device designed, manufactured, or configured by You or Your Affiliates to include or operate Intel hardware, software, or services.

"Materials" means the software, documentation, the software product serial number and license key codes (if applicable), Development Tools, Redistributables, and other materials or collateral, including any updates and upgrades thereto, in source code or object code form where applicable, that are provided or otherwise made available by Intel to You under this Agreement. “Materials” do not include Open Source Software or any computer  programming code that is subject to an agreement, obligation or license (whether or not accompanying the Materials) intended to supersede this Agreement.

"Redistributables" means the software, documentation, or other collateral identified in the “redist.txt” text files, if any, included in the Materials.

2.  LIMITED LICENSE.

(A)  Subject to the terms and conditions of this Agreement, Intel grants You and Your Affiliates, a limited, nonexclusive, nontransferable, revocable, worldwide, fully paid-up license during the term of this Agreement, without the right to sublicense, under Intel’s copyrights (subject to any third party licensing requirements), unless expressly stated otherwise, to:

(1)   internally reproduce and install a reasonable number of copies of the Materials for Your internal use solely for the purposes of designing, developing, manufacturing and testing Intel-based Devices;

(2)  internally reproduce the source code of the Development Tools, if provided to You by Intel, and to internally create and reproduce Derivatives of the Development Tools, and to internally reproduce the binary code of the Development Tools, or any Derivatives created by You, in each case solely for the purpose of designing, developing, manufacturing and testing the Intel-based Device, solely as necessary for the integration of any Intel software and the output generated by the Development Tools, with and into Intel-based Devices;

(3)  create Derivatives of the Redistributables, or any portions thereof, provided to You by Intel in source code form solely for the purposes of designing, developing, debugging, modifying, distributing and testing software containing significantly more functionality and features than the Redistributables in the form provided to You by Intel;

(4)  distribute (or otherwise make available) on a royalty-free basis, subject to any other terms and conditions which may appear in the Redistributables text files, the Redistributables, including any Derivatives of the Redistributables pursuant to Section 2(A)(3), or any portions thereof, only as integrated or embedded in software (and not on a stand-alone basis) solely for use on an Intel-based Device; and

(5)  have the tasks set forth in Section 2(A)(1) and (2) above performed by a Contractor on the conditions that You enter into a written confidentiality agreement with any such Contractor, subject to Section 7 (Confidentiality), and You remain fully liable to Intel for the actions and inactions of Your Contractors.

(B) You will be liable for Your Affiliate’s breach of these terms. In addition, You acknowledge that Your Affiliates are beneficiaries of the licenses granted by Intel under Section 2.

(C)   Intel hereby grants You the right to sub-license (without rights to further sublicense) the Development Tools, including any accompanying documentation, to Your manufacturing partners, in the code format provided to You by Intel, solely for designing, developing, manufacturing and testing the Intel-based Devices solely as necessary for the integration of any Intel software and the output generated by the Development Tools, with and into Intel-based Devices. The sublicense is subject to a written sublicensing agreement that contains confidentiality obligations and license restrictions that are no less protective of Intel than those provided in this Agreement. You will be fully responsible and liable towards Intel for Your sub-licensees’ compliance with all such confidentiality obligations and license restrictions. You may grant Your manufacturing partners the right to further distribute Redistributables solely as integrated or embedded in software for Your Intel-based Devices.


3.  LICENSE RESTRICTIONS. All right, title and interest in and to the Materials and associated documentation are and will remain the exclusive property of Intel and its suppliers. Unless expressly permitted under the Agreement, You will not, and will not allow any third party to (i) use, copy, distribute, sell or offer to sell the Materials or associated documentation; (ii) modify, adapt, enhance, disassemble, decompile, reverse engineer, change or create derivative works from the Materials except and only to the extent as specifically required by mandatory applicable laws or any applicable third party license terms accompanying the Materials; (iii) use or make the Materials available for the use or benefit of third parties; or (iv) use the Materials on Your products other than those that include the Intel product(s), platform(s), or software identified in the Materials; or (v) publish or provide any Materials benchmark or  comparison test results.

If You received the Materials solely for evaluation purposes, You have no distribution rights to the Materials or any portion thereof.

Distribution of the Redistributables is also subject to the following conditions: You shall: (i) be solely responsible to Your customers and end users for any update or support obligation or other liability which may arise from the distribution, (ii) not make any statement that Your software is "certified", or that its performance is guaranteed, by Intel, (iii) not use Intel's name or trademarks to promote Your software without prior written permission, (iv) use a license agreement that contains provisions that are at least as restrictive as this Agreement and which prohibits disassembly and reverse engineering of the Materials provided in object code form, and (v) indemnify, hold harmless, and defend Intel, Intel’s Affiliates, and its licensors from and against any claims or lawsuits, including attorney's fees, that arise or result from Your Derivatives or Your distribution of Your software.

The consideration under this Agreement is only for the licenses Intel expressly grants above. Any other rights including, but not limited to, additional patent rights, will require an additional license and additional consideration. Nothing in this Agreement requires or will be treated to require Intel to grant any additional license. You acknowledge that an essential basis of the bargain in this Agreement is that Intel grants You no licenses or other rights including, but not limited to, patent, copyright, trade secret, trademark, trade name, service mark or other intellectual property licenses or rights with respect to the Materials and associated documentation, by implication, estoppel or otherwise, except for the licenses expressly granted above. You acknowledge there are significant uses of the Materials in their original, unmodified and uncombined form. The consideration for the licenses in this Agreement reflects Intel’s continuing right to assert patent claims against any modifications or derivative works (including, without limitation, error corrections and bug fixes) of, or combinations with, the Materials that You, Your Affiliates or third parties make that infringe any Intel patent claim.

4.  LICENSE TO FEEDBACK. This Agreement does not obligate You to provide Intel with materials, information, comments, suggestions, Your Derivatives or other communication regarding the features, functions, performance or use of the Materials (“Feedback”). If any software included in the Materials is provided or otherwise made available by Intel in source code form, to the extent You provide Intel with Feedback in a tangible form, You grant to Intel and its affiliates a non-exclusive, perpetual, sublicenseable, irrevocable, worldwide, royalty-free, fully paid-up and transferable license, to and under all of Your intellectual property rights, whether perfected or not, to publicly perform, publicly display, reproduce, use, make, have made, sell, offer for sale, distribute, import, create derivative works of and otherwise exploit any comments, suggestions, descriptions, ideas, Your Derivatives or other feedback regarding the Materials provided by You or on Your behalf.

5.  OPEN SOURCE STATEMENT. The Materials may include Open Source Software (OSS) licensed pursuant to OSS license agreement(s) identified in the OSS comments in the applicable source code file(s) and/or file header(s) provided with or otherwise associated with the Materials. Neither You nor any Original Equipment Manufacturer (OEM), Original Device Manufacturer (ODM), customer, or distributor may subject any proprietary portion of the Materials to any OSS license obligations including, without limitation, combining or distributing the Materials with OSS in a manner that subjects Intel, the Materials or any portion thereof to any OSS license obligation. Nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable OSS license.

6.  THIRD PARTY SOFTWARE. Certain third party software provided with or within the Materials may only be used (a) upon securing a license directly from the owner of the software or (b) in combination with hardware components purchased from such third party and (c) subject to further license limitations  by the software owner. A listing of any such third party limitations is in one or more text files accompanying the Materials. You acknowledge Intel is not providing You with a license to such third party software and further that it is Your responsibility to obtain appropriate licenses from such third parties directly.

7.  CONFIDENTIALITY. The terms and conditions of this Agreement, exchanged confidential information, as well as the Materials are subject to the terms and conditions of the Non-Disclosure Agreement(s) or Intel Pre-Release Loan Agreement(s) (referred to herein collectively or individually as “NDA”) entered into by and in force between Intel and You, and in any case no less confidentiality protection than You apply to Your information of similar sensitivity. If You would like to have a Contractor perform work on Your behalf that requires any access to or use of Materials You must obtain a written confidentiality agreement from the Contractor which contains terms and conditions with respect to access to or use of Materials no less restrictive than those set forth in this Agreement, excluding any distribution rights and use for any other purpose, and You will remain fully liable to Intel for the actions and inactions of those Contractors. You may not use Intel's name in any publications, advertisements, or other announcements without Intel's prior written consent.

8.  NO OBLIGATION; NO AGENCY. Intel may make changes to the Software, or items referenced therein, at any time without notice. Intel is not obligated to support, update, provide training for, or develop any further version of the Software or to grant any license thereto. No agency, franchise, partnership, joint- venture, or employee-employer relationship is intended or created by this  Agreement.

9.  EXCLUSION OF WARRANTIES. THE MATERIALS ARE PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE. Intel does not warrant or assume responsibility   for the accuracy or completeness of any information, text, graphics, links or other items within the Materials.

10.  LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL OR ITS AFFILIATES, LICENSORS OR SUPPLIERS (INCLUDING THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES, AND AGENTS) BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION, OR LOST DATA) ARISING OUT OF OR IN RELATION TO THIS AGREEMENT, INCLUDING THE USE OF OR INABILITY TO USE THE MATERIALS, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL DAMAGES, SO THE ABOVE LIMITATION MAY IN PART NOT APPLY TO YOU. YOU MAY ALSO HAVE OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION. THE MATERIALS LICENSED HEREUNDER ARE NOT DESIGNED    OR INTENDED FOR USE IN ANY MEDICAL, LIFE SAVING OR LIFE SUSTAINING SYSTEMS, TRANSPORTATION SYSTEMS, NUCLEAR SYSTEMS, OR FOR ANY OTHER MISSION CRITICAL APPLICATION IN WHICH THE FAILURE OF THE DEVELOPMENT TOOLS COULD LEAD TO PERSONAL INJURY OR DEATH. YOU WILL INDEMNIFY AND HOLD INTEL AND ITS AFFILIATES, LICENSORS AND SUPPLIERS (INCLUDING THEIR RESPECTIVE DIRECTORS, OFFICERS,  EMPLOYEES,  AND  AGENTS)  HARMLESS  AGAINST  ALL  CLAIMS, LIABILITIES,  LOSSES,  COSTS,  DAMAGES,  AND  EXPENSES  (INCLUDING REASONABLE

ATTORNEY FEES), ARISING OUT OF, DIRECTLY OR INDIRECTLY, THE DISTRIBUTION OF THE MATERIALS AND ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY OR DEATH ASSOCIATED WITH ANY UNINTENDED USE, EVEN IF SUCH CLAIM ALLEGES THAT INTEL OR AN INTEL AFFILIATE, LICENSOR OR SUPPLIER WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE MATERIALS. THE LIMITED REMEDIES, WARRANTY DISCLAIMER AND LIMITED LIABILITY ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN INTEL AND YOU AND INTEL WOULD NOT BE ABLE TO PROVIDE THE MATERIALS WITHOUT SUCH  LIMITATIONS.

11.  TERMINATION AND SURVIVAL. Intel may terminate this Agreement for any reason with thirty (30) days’ notice and immediately if You or someone acting on Your behalf or at Your behest violates any of its terms or conditions. Upon termination You will immediately destroy and ensure the destruction of the Materials (including providing certification of such destruction or return back to Intel). Upon termination of this Agreement, all licenses granted to You hereunder terminate immediately. All Sections of this Agreement, except Section 2, will survive termination. In the event of termination of this Agreement, the license grant to any Redistributables, including Your Derivatives of the Redistributables, distributed by You prior to the effective date of such termination and in accordance with the terms and conditions of this Agreement shall survive any such termination of this Agreement.

12.  GOVERNING LAW AND JURISDICTION. This Agreement and any dispute arising out of or relating to it will be governed by the laws of the U.S.A. and Delaware, without regard to conflict of laws principles. The Parties exclude the application of the United Nations Convention on Contracts for the International Sale of Goods (1980). The state and federal courts sitting in Delaware, U.S.A. will have exclusive jurisdiction over any dispute arising out of or relating to this Agreement. The Parties consent to personal jurisdiction and venue in those courts. A Party that obtains a judgment against the other Party in the courts identified in this section may enforce that judgment in any court that has jurisdiction over the Parties.

13.  EXPORT REGULATIONS/EXPORT CONTROL. You agree that neither You nor Your subsidiaries or Affiliates will export/re-export the Materials, directly  or indirectly, to any country for which the U.S. Department of Commerce or any other agency or department of the U.S. Government or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining any such required license or approval. In the event the Materials are exported from the U.S.A. or re-exported from a foreign destination by You, Your subsidiaries, or Your Affiliates, You will ensure that the distribution and export/re-export or import of the Materials complies with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government.

14.  GOVERNMENT RESTRICTED RIGHTS. The Materials are a commercial item (as defined in 48 C.F.R. 2.101) consisting of commercial computer software and commercial computer software documentation (as those terms are used in 48 C.F.R. 12.212). Consistent with 48 C.F.R. 12.212 and 48 C.F.R 227.7202- 1 through 227.7202-4, You will not provide the Materials to the U.S. Government. Contractor or Manufacturer is Intel Corporation, 2200 Mission College Blvd., Santa Clara, CA 95054.

15.   TRADEMARKS. Third party trademarks, trade names, product names and logos (the “Trademarks”) contained in or used by the Materials are the trademarks or registered trademarks of their respective owners, and the use of such Trademarks shall inure to the benefit of the trademark owner. The reference to such Trademarks (if any) by Intel in any of the Materials does not constitute: (i) an affiliation by Intel and its licensors with such company, or (ii) an endorsement or approval of such company of Intel and its licensors and its products or services.

16.  ASSIGNMENT. You may not delegate, assign or transfer this Agreement, the license(s) granted or any of Your rights or duties hereunder, expressly, by implication, by operation of law, or otherwise and any attempt to do so, without Intel’s express prior written consent, will be null and void. Intel may assign, delegate and transfer this Agreement, and its rights and obligations hereunder, in its sole discretion.

17.  ENTIRE AGREEMENT; SEVERABILITY. The terms and conditions of this Agreement and any NDA with Intel constitute the entire agreement between the Parties with respect to the subject matter hereof, and merge and supersede all prior or contemporaneous agreements, understandings, negotiations and discussions. Neither Party will be bound by any terms, conditions, definitions, warranties, understandings, or representations with respect to the subject matter hereof other than as expressly provided herein. In the event any provision of this Agreement is unenforceable or invalid under any applicable law  or applicable court decision, such unenforceability or invalidity will not render this Agreement unenforceable or invalid as a whole, instead such provision will be changed and interpreted so as to best accomplish the objectives of such provision within legal limits.

18.  WAIVER. The failure of a Party to require performance by the other Party of any provision hereof will not affect the full right to require such performance at any time thereafter; nor will waiver by a Party of a breach of any provision hereof constitute a waiver of the provision itself.

19.  PRIVACY. YOUR PRIVACY RIGHTS ARE SET FORTH IN INTEL’S PRIVACY NOTICE, WHICH FORMS A PART OF THIS AGREEMENT. PLEASE REVIEW THE PRIVACY NOTICE AT HTTP://WWW.INTEL.COM/PRIVACY TO LEARN HOW INTEL COLLECTS, USES AND SHARES INFORMATION ABOUT YOU.

* Package Info *

Authors: Intel

Project URL: https://www.intel.com/content/www/us/en/secure/design/confidential/software-kits/kit-details.html?kitId=820672
  
  
  
--------------------------------------------------------------------------------
Package Title: PresentMon (1.10.0)
--------------------------------------------------------------------------------

* Declared Licenses *
MIT

Copyright (C) 2017-2023 Intel Corporation

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.

* Other Licenses *

The license for PresentMon is provided in LICENSE.txt.

PresentMon uses third-party sources, and we've copied their copyright and licenses here for
clarity.

Project URL: https://github.com/GameTechDev/PresentMon



DirectX error library
---------------------

The MIT License (MIT)

Copyright (c) 2004-2022 Microsoft Corp

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.



Notice from NVAPI interface
---------------------------------------------------

Copyright (c) 2019-2022, NVIDIA CORPORATION. All rights reserved.

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.



Boost Software License 1.0
-------------------------------
https://github.com/sergey-shandar/getboost/blob/master/LICENSE

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.



fmt License
-------------------------------
https://github.com/fmtlib/fmt/blob/master/LICENSE
Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors

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.

--- Optional exception to the license ---

As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into a machine-executable object form of such
source code, you may redistribute such embedded portions in such object form
without including the above copyright and permission notices.



Microsoft.Windows.CppWinRT
-------------------------------
https://spdx.org/licenses/MIT.html

MIT License
SPDX identifier
MIT
License text
MIT License

Copyright (c) <year> <copyright holders>

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 (including the next paragraph) 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.

SPDX web page
https://spdx.org/licenses/MIT.html
Notice
This license content is provided by the SPDX project. For more information about licenses.nuget.org, see our documentation.

Data pulled from spdx/license-list-data on November 6, 2024.



IPF Extensible Framework (IPF-EF)
-------------------------------
The IPF-EF SDK is licensed under the "Intel OBL SDK and Tools License [v2021.05.11]" as specified below:

This LIMITED TOOLS LICENSE AGREEMENT (“Agreement”) is a contract between You and Intel Corporation and its affiliates (“Intel”). It governs Your use of the Materials. If You are accepting this Agreement on behalf of or in conjunction with Your work for Your employer, You represent and warrant that You have the authority to bind your employer to this Agreement. By downloading, installing, or using the Materials, You agree to these terms. If You do not agree, do not use the Materials and destroy all copies.


1. DEFINITIONS.

  1.1 “Including” means including but not limited to, whether or not capitalized.

  1.2 “Intel Components” means a hardware component or product designed, developed, sold, or distributed by Intel or its affiliates.

  1.3 “Materials” means software or other collateral Intel delivers to You under this Agreement.

  1.4 “Redistributables” refers to (a) component(s) identified in any “redist.txt” text file included in the Materials, or (b) output generated from operation of the Materials.

  1.5 “You” or “Your” means you or you and your employer and its affiliates, whether or not capitalized.

  1.6 “Your Products” means products developed or to be developed by or for You that include an Intel Component executing the Materials.

2. LICENSES.

  2.1 License. Subject to the terms of this Agreement, Intel grants You, for the Term, a personal, limited, nonexclusive, nontransferable, revocable, worldwide, fully paid-up license under Intel’s intellectual property rights in the Materials, without the right to sublicense, to use the Materials in the development of Your Products, including the right to modify Materials delivered as source code and to distribute an object code version of the Redistributables embedded in or for execution on Your Products. You may disclose the Materials to Your subcontractor for its work on Your Products under an agreement preventing the subcontractor from disclosing the Materials to others.

  2.2 Restrictions. Except as authorized above, You will not: (a) use or modify the Materials in any other way; (b) reverse engineer, decompile, or disassemble the Materials provided in object form (except and only as specifically required under Section 2.5), or (c) use the Materials to violate or aid in the violation of any international human right. You will be liable for your subcontractor’s acts or omissions including breach of confidentiality.

  2.3 No Implied License. Except for the express license in Section 2.1, Intel does not grant any express or implied licenses to you under any legal theory. Intel does not license You to make, have made, use, sell, or import any Intel technology or third-party products, or perform any patented process, even if referenced in the Materials. Any other licenses from Intel require additional consideration. Nothing in this Agreement requires Intel to grant any additional license.

  2.4 Feedback. If you give Intel comments or suggestions related to the Materials, Intel confidential information provided in connection with this Agreement, or Intel Components, Intel can use them in any way and disclose them to anyone, without payment or other obligations to you.

  2.5 Open Source Licenses. The Materials may include software subject to an open source license, including licenses recognized by the Open Source Initiative (http://www.opensource.org). Nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable open source software license.

  2.6 Third-Party Software. Your use of any third-party software is subject to Your compliance with the license You obtain directly from that third-party. A listing of any such third-party software may be in a text file accompanying the Materials.

3. CONFIDENTIALITY. This Agreement and the Materials are Intel confidential information and subject to Your valid corporate non-disclosure agreement with Intel (CNDA). Except as authorized in Section 2.1, you must not disclose this information to anyone, including the U.S. government. This Agreement will not become effective, or will automatically terminate, in the absence of a CNDA.

4. OWNERSHIP. Ownership of the Materials and related intellectual property rights is unchanged. You must maintain all copyright or other proprietary notices in the Materials.

5. NO WARRANTY. The Materials are provided “as is,” without any express or implied warranty of any kind including warranties of merchantability, non-infringement, title, or fitness for a particular purpose. The Materials may include pre-release software or algorithms and may not be fully functional. Intel is not required to maintain, update, or support the Materials.

6. LIMIT ON LIABILITY. Intel is providing the Materials for free and Your use of them is at Your own risk. Intel will not be liable to You under any legal theory for any losses or damages in connection with the Materials, including consequential damages, even if the possibility of damages was foreseeable or known. If any liability is found, Intel’s total, cumulative liability to You will not exceed $100.00 U.S. for all claims arising from or related to this Agreement. These liability limitations are a fundamental basis of our bargain and Intel would not have entered into this Agreement without them.

7. INDEMNITY. You will indemnify, defend, and hold Intel harmless from any allegation against Intel arising in connection with Your use of the Materials and You will pay all of Intel’s losses, liabilities, and costs (including attorneys’ fees) arising from the allegation.

8. PRIVACY; DATA COLLECTION

  8.1 Privacy. Intel respects Your privacy. For information about why and how Intel may collect and use information from Your use of the Materials, see http://www.intel.com/privacy.

  8.2 Data Collection. Some downloaded software included in the Materials may generate and collect information about the software and usage and transmit it to Intel to help improve Intel’s products and services. This collected information may include product name, product version, time of event collection, license type, support type, installation status, hardware and software performance, and use.

9. GENERAL.

  9.1 Assignment. You may not assign Your rights or obligations under this Agreement without Intel’s prior written consent. No third party will have any rights under this Agreement.

  9.2 Dispute Resolution. If we have a dispute regarding this Agreement (other than a dispute over misappropriation of trade secrets or breaches of confidentiality obligations) neither of us can file a lawsuit or other regulatory proceeding unless the complaining party provides the other party a detailed notice of the dispute and our senior managers attempt to resolve the dispute. If we can’t resolve the dispute in 30 days, either of us may demand mediation and will then try to resolve the dispute with an impartial mediator. If we don’t resolve the dispute within 60 days after the mediation demand, either of us may begin litigation.

  9.3 Governing Law; Jurisdiction. This Agreement is governed by USA and Delaware law without regard to conflict of laws principles. The United Nations Convention on Contracts for the International Sale of Goods does not apply. Except for claims for misappropriation of trade secrets or breach of confidentiality obligations, all disputes and actions arising out of or related to this Agreement are subject to the exclusive jurisdiction of the state and federal courts in Wilmington, Delaware and you consent to personal jurisdiction in those courts.

  9.4 Compliance with Laws. The Materials are subject to export controls under applicable government laws and regulations, including in the U.S. You must comply with applicable laws and regulations, including U.S. and worldwide export regulations. You must not export, import, or transfer the Materials to any prohibited or sanctioned country, person, or entity. You must not use the Materials for the development, design, manufacture, or production of nuclear, missile, chemical, or biological weapons.

  9.5 Severability. If a court holds a provision of this Agreement unenforceable, the court will modify that part to the minimum extent necessary to make that part enforceable or, if necessary, to sever that part. The rest of the provision remains fully enforceable.

  9.6 Waiver. No waiver of any provision of this Agreement will be valid unless in a writing signed by an authorized representative of the waiving party that specifies the waived provision. That signed waiver will not constitute a waiver of any other provision. A party’s failure or delay in enforcing any provision will not operate as a waiver.

  9.7 Entire Agreement. Except for any non-disclosure agreement between you and Intel, this Agreement constitutes the entire agreement, and supersedes all prior agreements, between Intel and You concerning its subject matter.

10. TERM; TERMINATION; SURVIVAL.

  10.1 Term. This Agreement begins upon Your acceptance of its terms and continues until terminated under Sections 3 or 10.2.

  10.2 Termination. Either party may terminate this Agreement, with 30 days written notice, at any time for any reason. This Agreement will automatically terminate upon (ai) Your breach of the Agreement, (b) an allegation that you do not have authority to bind your employer to these terms, or (c) Your assertion that an Intel Component, the Materials, or any product based on any Intel Components or the Materials infringes Your patents.

  10.3 Effect of Termination. Upon termination of the Agreement, the licenses to You will immediately terminate and You must cease using the Materials and destroy all copies in your possession and direct Your subcontractors to do the same. Termination of this Agreement will not terminate the CNDA.

  10.4 Survival. All sections except Section 2.1 survive termination of this Agreement.


============================================================================

The JSON for Modern C++ library is distributed under the MIT license.
https://github.com/nlohmann/json
MIT License 

Copyright (c) 2013-2021 Niels Lohmann

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.


==============================================================================

Modern C++ JSON schema validator is licensed under the MIT License
<http://opensource.org/licenses/MIT>:

Copyright (c) 2016 Patrick Boettcher

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.


=================================================================================

The Newtonsoft JSON.net library is licensed under the MIT license.

The MIT License (MIT)

Copyright (c) 2007 James Newton-King

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.

=================================================================================

Python bindings are generated using pybind11 under the following license.

Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Please also refer to the file .github/CONTRIBUTING.md, which clarifies licensing of
external contributions to this project including patches, pull requests, etc.

```
*******************************************************************************
** INTEL CONFIDENTIAL
**
** Copyright (c) 2020-2024 Intel Corporation All Rights Reserved
**
** This software and the related documents are Intel copyrighted materials,
** and your use of them is governed by the express license under which they
** were provided to you ("License"). Unless the License provides otherwise,
** you may not use, modify, copy, publish, distribute, disclose or transmit
** this software or the related documents without Intel's prior written
** permission.
**
** The source code contained or described herein and all documents related to
** the source code ("Material") are owned by Intel Corporation or its suppliers
** or licensors.
**
** This software and the related documents are provided as is,
** with no express or implied warranties, other than those that are expressly
** stated in the License.
**
*******************************************************************************
```

# IPF Extensible Framework (IPF-EF) SDK

The Innovation Platform Framework enables applications to easily access platform information using a node-based API.

### Hardware Dependencies
Requires Intel's Alder Lake and newer platforms.

### Software Dependencies
1. Microsoft Windows 10 (Version 20H2 and higher) operating system.
2. .NET Framework 4.7.2
3. CMake build system is used for compilation and installation. The required minimum version is 3.15, which may be downloaded from https://cmake.org/download/
4. For development, Visual Studio 2019 and Visual C++ 2019 are required. Install the C# compiler VS2019 for C# client applications. Also from the Visual Studio Installer include the latest "Spectre-mitigated libs".
5. Install the Windows Driver Kit (WDK) component of Visual Studio. It is used for self-signing of DLLs.
6. Run [VC_Redist.x64.exe](https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) from Microsoft to ensure Visual Studio Runtime is Version 2019 or later.
7. Install Python 3.10.6 version(https://www.python.org/downloads/release/python-3106/) and add the path to environmental variables.

## Getting Started
Steps to install framework and execute of samples in the SDK.

### Install Framework
Using either of the methods below.

#### Manually from Windows Explorer
1. From the ipf-[version]-windows-setup package,
2. Right clicking & instal all .inf files. Listed below
 * drivers/x64/ipf_acpi.inf
 * drivers/x64/ipf_cpu.inf

#### From Command Line with Pnputil
1. Open administrator command prompt.
2. Navigate to the ipf-[version]-windows-setup/drivers/x64/
3. Run `pnputil /add_driver *inf /install`.

### Uninstall Framework
1. Run command prompt as administrator. 
2. Find the published names with `pnputil /enum-drivers` command. 
3. Uninstall each inf using `pnputil /delete-driver [name].inf /uninstall`.
  * pnputil /delete-driver ipf_acpi.inf /uninstall
  * pnputil /delete-driver ipf_cpu.inf /uninstall

### One Time Signing Setup
All Provider DLL's, including Local and Debug versions, must be Digitally Signed.
1. Unzip the SDK package contents, ipf-ef-[version]-windows-sdk
2. From tools folder, right-click "certgen.cmd" and select "Run as Administrator". You will be prompted to create an optional certificate password.
3. It is recommended to remove and store ipftest.pvk in a safe place.

Below is an example output, refer to provider guide for further details on signing and certificate distribution.
``` 
Succeeded
Root "Trusted Root Certification Authorities"
CertUtil: -delstore command completed successfully.
Root "Trusted Root Certification Authorities"
Signature matches Public Key
Certificate "IPF Test Certificate" added to store.
CertUtil: -addstore command completed successfully.
***
*** Test Certificate Successfully Generated and Installed
***

```

### Build Sample Providers and Run Client Applications
1. Unzip SDK package contents, ipf-ef-[version]-windows-sdk.zip
2. Launch a Developer Command Prompt for Visual Studio 2019. Run `cmake -S . -B build` from unzipped folder.
3. Run`cmake --build build --config <configuration>` where configuration is `Debug` or `Release`
4. Execute the sample applications
  - `cd build\<configuration>`
  - `SampleClientAppCpp.exe` to run the C++ sample application
  - `BasicClientAppCpp.exe` to run the C++ sample application that accesses the core
  - `SampleClientAppC.exe` to run the C sample application
  - `BasicClientAppC.exe` to run the C sample application that accesses the core
  - `python SampleClientApp.py` to run the Python sample application

See the section "C# Client Development with .NET 6.0" for instructions to build and run the C# sample application.
   
# Getting Started with Client Application Development

The IPF framework supports C, C++, C# and Python client applications. Sample client applications for these languages are included in `samples\client`. The sample client applications load the sample camera and battery provider as local providers. This means that those shared libraries will be required in the folder where the sample application is run.

Refer to Client Guide for details on Client facing APIs. 

## C# client development with .NET 6.0

This SDK includes a nuget package that allows developers to use the IPF client API from C# .NET applications.  The example project targets net6.0, net48, and net472 frameworks and must be built with the .NET 6.0 SDK.  

To get started, first download and install the .NET 6.0 SDK from Microsoft
https://dotnet.microsoft.com/en-us/download/dotnet/6.0

It is possible to build applications using older frameworks by using the "PackageReference" style of specifying project dependencies.  This method is outside the scope of this README.

### Using the package

The library is included as a NuGet packages in the lib\Debug and lib\Release folders.  To make the NuGet package available to your application:

1. Add the directory containing the NuGet package as a NuGet package source. There are many ways to do this (Visual Studio NuGet options, etc). The easiest is using the dotnet CLI.
  - `dotnet nuget add source c:\<path-to-nupkg-directory> -n intel.ipf.extensibleframework`
2. Add the package to your project.
  - `dotnet add package Intel.Ipf.ExtensibleFramework`
3. Run a build or a restore.
  - `dotnet build`

### Build and run the C# sample application

An example project is included in the samples\client\csharp\SampleClientApp folder.   

Steps to build the sample application:

1. Add the nuget package source
   - `dotnet nuget add source c:\<path-to-nupkg-directory> -n intel.ipf.extensibleframework`
2. List the NuGet sources and verify that the intel.ipf.extensibleframework source is present and is set to the correct folder.
   - `dotnet nuget list source`
3. Change directory to the sample project directory.  
   - `cd <path-to-ipf-sdk>\samples\client\csharp\SampleClientApp`
4. Add the Intel.Ipf.ExtensibleFramework package to the project
   - `dotnet add package Intel.Ipf.ExtensibleFramework`
5. Build the project
   - `dotnet build`

The example application loads the SampleCameraProvider and SampleBatteryProvider as local providers. Make sure you have already built the providers using the instructions in the section "Build Sample Providers and Run Client Applications."  

In the following instructions, `<path-to-ipf-sdk>` is the full path to the root of the IPF sdk folder. `<configuration>` may be `Debug` or `Release` and `<target-framework>` may be `net6.0`, `net48`, or `net472`.

1. Copy the provider DLLs to the build output folder.   
  - `cp <path-to-ipf-sdk>\build\<configuraton>\SampleCameraProvider.dll <path-to-ipf-sdk>\samples\client\csharp\SampleClientApp\bin\<configuration>\<target-framework>/win-x64`
   - `cp <path-to-ipf-sdk>\build\<configuration>\SampleBatteryProvider.dll <path-to-ipf-sdk>\samples\client\csharp\SampleClientApp\bin\<configuration>\<target-framework>/win-x64`
2. Change directory to the output directory and run the sample application
   - `cd <path-to-ipf-sdk>\samples\client\csharp\SampleClientApp\bin\<configration>\<target-framework>/win-x64`
   - `SampleClientApp.exe`

# Getting Started with Provider Development

There are a few sample providers included inside the SDK package at `samples\provider`. Provider developers need to create three files to integrate with IPF.
* [ProviderName]Api.cpp – The framework requires provider developers to define a manifest and declare a factory entry to create provider.
* [ProviderName]Provider.h - [ProviderName]Provider class is inherited from ProviderDelegate. 
* [ProviderName]Provider.cpp – Provider developers implement exposed methods to integrate IPF framework with their own software stacks.

Providers can be installed with INF or tool based methods. Framework also supports local providers for easy development. Refer to Provider Guide for details on provider installation methods and APIs. 


# Troubleshooting Guide
1. Error MSB8040: Spectre-mitigated libraries are required for this project 

    Install latest "Libs for Spectre" from the Visual Studio installer (Individual components tab) for both visual stuido and build tools.

2. Got IpfException when accessing the namespace: Error Locating Framework Directory

   Does software components in device manager have `Intel(R) Innovation Platform Framework Extensible Framework`?

   If it doesn't then re-install framework.

3. Exception when accessing the namespace: Failed to load library: ClientApiProxy.dll : 14 : Incompatible Version
   
   This indicates mismatch between framework and SDK versions. Try installing framework and SDK from same IPF release to fix this.

4. Error(42): Invalid Digital Signature

   Try generating new security certs and signing DLLs again. 

   1. Unzip contents of SDK package, ipf-ef-[version]-windows-sdk
   2. From tools folder, right-click "certgen.cmd" and select "Run as Administrator".
   3. From ipf-ef-[version]-windows-sdk folder, execute `cmake --build build --config Debug` OR `cmake --build build --config Release`

5. Failed to run certgen.cmd

    Run certgen.cmd from Visual Studio 2019 powershell.
    1. Open Developer Powershell or Developer Command Prompt for Visual Studio 2019 as Administrator
    2. Navigate to ipf-ef-[version]-windows-sdk/tools
    3. Run certgen.cmd

6. System Error of either VCRuntime140.dll not found or MSCVP140.dll was not found

   This indicates the VC_redist is not installed. Please run [VC_Redist.x64.exe](https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) install VC2019 or later. 
   
   
   
   Intel Software License Agreement
10.07.21 

Use and Redistribution. You may use and redistribute Intel’s Control API software and the header files for the Intel® Graphics Control Library (collectively, the “Software”), solely for use on Intel platforms, provided the following conditions are met:
* Redistributions must reproduce the above copyright notice and the following terms of use in the Software and in the documentation and/or other materials provided with the distribution.
* Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from this Software without specific prior written permission.
* No reverse engineering, decompilation, or disassembly of Software provided to you in binary form is permitted.

Third Party Software. The Software may contain Third Party Software. “Third Party Software” is third party software, open source software or other Intel software listed in the “third-party-software.txt” or other similarly named text file that is included with the Software. Third Party Software, even if included with the distribution of the Software, may be governed by separate license terms, including without limitation, third party license terms, open source software notices and terms, and/or other Intel software license terms. These separate license terms solely govern your use of the Third Party Software.

Ownership. Title to the Software and all copies remain with Intel or its suppliers. 

DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND ATTORNEYS’ FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE.

LIMITATION OF LIABILITY; INDEMNITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU AGREE TO INDEMNIFY, DEFEND, AND HOLD INTEL HARMLESS AGAINST ANY CLAIMS, DAMAGES, AND EXPENSES RESULTING FROM YOUR USE OR UNAUTHORIZED USE OF THE SOFTWARE.

No support. Intel may make changes to the Software, at any time without notice, and is not obligated to support, update or provide training for the Software.

Termination. Your right to use the Software is terminated immediately in the event of your breach of this agreement.

Feedback. Should you provide Intel with comments, modifications, corrections, enhancements or other input (“Feedback”) related to the Software Intel will be free to use, disclose, reproduce, license or otherwise distribute or exploit the Feedback in its sole discretion without any obligations or restrictions of any kind, including without limitation, intellectual property rights or licensing obligations.

Compliance with laws. You agree to comply with all applicable laws and regulations governing your use, transfer, import or export (or prohibition thereof) of the Software.

Governing law. All disputes will be governed by the laws of the United States of America and the State of Delaware without reference to conflict of law principles and subject to the exclusive jurisdiction of the state or federal courts sitting in the State of Delaware, and each party agrees that it submits to the personal jurisdiction and venue of those courts and waives any objections. The United Nations Convention on Contracts for the International Sale of Goods (1980) is specifically excluded and will not apply to the Software.

Severability. The parties intend that if a court holds that any provision of this agreement is invalid or unenforceable under applicable law, the court will modify the provision to the minimum extent necessary to make it valid and enforceable or sever and delete the provision from this agreement. Any change to or deletion of a provision of this agreement under this Section will not affect the validity or enforceability of the remainder of this agreement, which will continue in full force and effect.

