Skip to content

Commit

Permalink
Initial Public Release of Atonomi Embedded Device SDK.
Browse files Browse the repository at this point in the history
  • Loading branch information
areading committed May 16, 2018
1 parent dee7a51 commit d7ee29e
Show file tree
Hide file tree
Showing 22 changed files with 1,839 additions and 1 deletion.
133 changes: 133 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
Atonomi SDK License Agreement

Last Updated: May 15, 2018

This Atonomi SDK License Agreement (“Agreement”) between you and the
company or entity that you represent (“You” or “Your”) and Atonomi,
LLC, and its affiliates, (collectively, “Atonomi”) governs Your access and
use, in whole or in part, of the Atonomi software development and any related
documentation, as may be updated by Atonomi from time to time
(“Documentation”), software code (including sample code), tools, and APIs,
including any upgrades, modified versions, updates, additions, and copies of
the foregoing licensed to You by Atonomi (collectively, “SDK”). By
downloading, accessing or using the SDK, You hereby agree to the terms of this
Agreement. If You are using the SDK on behalf of an entity, You represent and
warrant that You have full legal authority to bind that entity to this
Agreement, and by accepting the Agreement or downloading, accessing or using
the SDK, You are doing so on behalf of that entity, and all references to You
or Your in the Agreement refer to that entity. If You do not agree to all the
terms of this Agreement, do not download, access, or use the SDK.

1. License. Subject to Your compliance with this Agreement, Atonomi hereby
grants You a limited, worldwide, personal, non-sublicensable, non-transferable,
royalty-free, non-exclusive license to use the SDK solely for developing
applications that are compatible with the Atonomi protocol (“Applications”).

2. Restrictions. Except as expressly permitted by Atonomi, You shall not
directly or indirectly (or assist or allow a third party to) (a) distribute,
sell, sublicense, rent, loan, lease, or transfer the SDK to any third party,
(b) use the SDK to create or facilitate the creation of any product or service
that is competitive with the Atonomi protocol, or (c) combine the SDK with
other software such that You restrict, impede, circumvent, compromise, impact
the functionality of or charge for access to the SDK. Further, if Atonomi makes
available and You use the SDK in compiled form, You shall not copy (except for
backup purposes), decompile, disassemble, translate, reverse engineer, modify,
adapt, or create derivative works of the SDK (including the runtime components
and any other portions thereof).

3. Trademarks. Atonomi grants to You a worldwide, non-exclusive,
non-transferable, personal right to use the Atonomi’s logo, as set forth in
its trademark usage guidelines (“Trademark”), pursuant to the terms of this
License Agreement. The Trademark may be used in Your Application, on Your
website, and in printed and electronic communications to indicate that Your
Application is compatible with the Atonomi protocol.

4. Ownership. As between the parties, title, ownership, and all
intellectual property rights in and to the SDK, and any copies or portions
thereof, shall remain with Atonomi and its suppliers or licensors. You may not
assign or transfer Your rights or obligations granted under this Agreement to
any third party without the prior written consent of Atonomi. Atonomi may
collect and use comments, feedback, suggestions, and other information provided
by You, if any, related to the SDK, and Atonomi may use this information to
improve, develop, and otherwise provide applications, services and technologies
without any obligation to You. Atonomi may modify or discontinue offering the
SDK at any time. The SDK is protected by the copyright laws of the United
States and international copyright treaties.

5. Updates and Support. If Atonomi makes available any upgrades, patches,
enhancements, or fixes for the SDK (“Updates”), such Updates will become
part of the SDK and subject to this Agreement. Atonomi shall have no obligation
to provide any Updates or any other support to You for the SDK. Atonomi may
make such support services available to You under a separate agreement and for
a fee. Atonomi may permanently or temporarily stop providing the SDK, features
within the SDK, or support for the SDK at Atonomi’s sole discretion, without
prior notice.

6. Warranty and Disclaimer; Indemnity. Atonomi provides the SDK “as is”
and without warranty of any kind, and Atonomi hereby disclaims all express or
implied warranties, including warranties of merchantability, fitness for a
particular purpose, performance, accuracy, reliability, availability,
compatibility, and non-infringement. Your use of the SDK and any material
downloaded or otherwise obtained through the use of the SDK is at Your own
discretion and risk and You are solely responsible for any damage to Your
computer system or other device or loss of data, lost profits or revenue that
directly or indirectly results from such use. You agree to indemnify and hold
harmless Atonomi from any and all claims, demands, damages, losses,
liabilities, costs, and expenses (including attorney’s fees) arising from
Your use of the SDK.

7. Limitation of Liability. Under no circumstances (and under no legal
theory, tort, contract, strict liability, or otherwise) shall Atonomi, its
affiliates, licensors or suppliers be liable to You or any other person for any
direct, indirect, special, incidental, or consequential damages of any
character, even if foreseeable, including cost of substitute technology,
damages for lost profits, loss of goodwill, work stoppage, accuracy of results,
loss of data, computer failure or malfunction. Nothing in this Agreement will
exclude or limit either party’s liability in respect of: (a) death or
personal injury caused by the negligence of that party; (b) fraud (including
fraudulent misrepresentation); or (c) any liability which may not otherwise be
lawfully excluded or limited.

8. Indemnification. You agree to indemnify, hold harmless, and defend
Atonomi from and against any claims or lawsuits, including attorneys’ fees,
that arise or result from the use and distribution of your Applications that
contain or is based upon any portion of the SDK, provided that Atonomi gives
You prompt written notice of any such claim, tenders to You the defense or
settlement of such a claim at Your expense and cooperates with You, at Your
expense, in defending or settling such claim.

9. Termination. You may terminate this Agreement and the license granted
herein at any time by ceasing Your use of the SDK and destroying or removing
from all hard drives, networks, and other storage media all copies of the SDK.
Atonomi may terminate this Agreement and the license granted herein and
immediately disable Your use of and access to the Atonomi protocol if You
breach any provision of this Agreement. Sections 4, 6, 7, 8 shall survive
termination of this Agreement.

10. Export Controls. You shall not distribute or export the SDK outside the
United States in a manner that is prohibited by applicable export laws,
restrictions, and regulations. You represent and warrant that You (a) are not
located in, under the control of, or a national or resident of any country to
which the United States has embargoed goods or services; (b) are not identified
as a “Specially Designated National;” by the Office of Foreign Assets
Control; (c) are not placed on the U.S. Commerce Department’s Denied Persons
List; and (d) will not access or use the SDK if any applicable laws in Your
country prohibit You from doing so in accordance with this Agreement.

11. Miscellaneous. Atonomi may modify the terms of this Agreement or any
additional terms that apply to the SDK and the Applications at any time and it
is Your responsibility to look at the Agreement regularly for updates. You
shall not assign or transfer any part of this Agreement to any third party.
This Agreement represents the complete agreement concerning this license
between the parties and supersedes all prior agreements and representations
between them. If any provision of this Agreement is to be held unenforceable
for any reason, such provision shall be reformed only to the extent necessary
to make it enforceable. If there is conflicting language between this Agreement
and any other agreement governing Your use of the SDK, the terms of this
Agreement will control. This Agreement shall be governed by, and construed in
accordance with, the laws of the State of Washington, without reference to
conflicts of laws principles. The parties agree that the federal and state
courts in King County, Washington will have exclusive jurisdiction and venue
under this Agreement, and the parties hereby agree to submit to such
jurisdiction exclusively.

61 changes: 60 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,60 @@
# device-sdk
Atonomi Device SDK
================================================================================
Atonomi's Embedded Device SDK is a software library providing mechanisms to
communicate with the Atonomi network. Atonomi provides a network solution which
tackles the question of how to establish identity, trust, and reputation of IoT
devices. The blockchain-based approach allows companies to securely exchange
services and data to, from, and involving these devices.

The Embedded Device SDK provides a small-footprint code implementation of
messaging routines for communications between an IoT device and the Atonomi
Identity Registration Network (IRN). Aimed at embedded systems, this library
is intended to be easy to use, integrate, and deploy, and provides support
for vast numbers of SoCs and operating environments, especially those which
leverage ARM Cortex-M or Cortex-A IP cores.


### Getting the Code
The SDK is made available via a GitHub-hosted git repository
[here](https://github.com/atonomi/device-sdk), where it can easily be cloned
or otherwise downloaded for use.

```bash
git clone git@github.com:atonomi/device-sdk atonomi-device-sdk
```


### Project Layout
The SDK is currently distributed as a pre-compiled static library for
various architectures, along with a header file providing a C language
API for use by developers to construct packetized messages for
the Atonomi network.

All libraries are located within the _lib/_ subdirectory, and all include
files are located within the _include/_ subdirectory.

A usage example of pack and unpack routines for an endpoint is present within
the _example/_ subdirectory. Alongside this is a shell script which
uses the _curl_ utility to demonstrate a successful HTTP transaction
with Atonomi servers and the receipt of a response to the submitted request.


### Implementation Requirements
In order to be used properly, this SDK has two primary requirements:

- Developers are required to implement a callback to obtain random data from
a Hardware Random Number Generator.
- The SDK functions use up to four kilobytes (4096 bytes) of stack space.
Developers are responsible for ensuring this space is available
in order to prevent a stack overflow or stack-heap collision.
- errno-compatible declarations must be available. Developers may either
include errno.h from a platform's libc, or instead use the provided
atmi_errno.h file. The SDK is careful to restrict itself to those
values which are consistent across all major UNIX platforms (Linux, BSD,
Solaris, AIX, IRIX, etc.), so the source of errno declarations that is
most convenient should be preferred.


### Further Documentation
For more details, see the PDF document located within the _doc/_ subdirectory.

39 changes: 39 additions & 0 deletions doc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# vim: set ts=8 sw=8 sts=0 noet:
#
# Copyright (c) 2018 Atonomi
##
.SUFFIXES:
.DEFAULT_GOAL=all
.DELETE_ON_ERROR:
MAKEFLAGS+=--warn-undefined-variables

# pdflatex flags
PDFLTXFLAGS := -file-line-error -interaction=nonstopmode

# Primary TeX source.
TEX_SRC_PRI := atmisdk.tex
# TeX sources.
TEX_SRCS := $(filter-out $(TEX_SRC_PRI),$(wildcard *.tex))
# Output for PDF targets.
OUT_PDF := atmisdk.pdf


.PHONY: all
all: $(OUT_PDF)


# Clean all except output pdf
.PHONY: clean
clean:
latexmk -c


# Clean all outputs
.PHONY: distclean
distclean:
latexmk -CA


$(OUT_PDF): $(TEX_SRC_PRI) $(TEX_SRCS)
latexmk -pdf -pdflatex='pdflatex $(PDFLTXFLAGS)' -use-make $<

Loading

0 comments on commit d7ee29e

Please sign in to comment.