Merge remote-tracking branch 'weave/master' into 'weave/aosp-master'

This merge includes the following commits:

dcc0dca libweave: Convert the blacklist trait into a standard one
5fe0ac0 examples: refactor README file
3127cb3 Tweak the README.md with respect to the repo subdirectories.
38a2aef libweave: Remove release() calls on scoped_ptr
bf79a9e libweave: Port base/ changes from Chromium project
b9bbdc6 libweave: Fix compile errors on Chrome OS
5c2870f libevhtp: build checked out copy
3e4d883 add integrated cross-compile & qemu support
7fb7903 examples/daemon/ledflasher: switch to onOff
0011064 readme: add more tips/links
d70a965 gtest/gmock: build checked out copy
8bf4757 Fail setup/start if device already registered
cd7a3a2 Add HTTPS port into TXT record
5ddd991 Return 'component' in command JSON
00180aa Avoid Revocation list overflow
b506696 Bound j2000 timestamps into [0, <int32_t>::max()] interval
e733c38 Take into account scope from /privet/v3/auth call
8b897af examples/daemon: fix ledflasher param names
978e712 Implement local_discovery_enabled setting
e4b8ccf Remove ObserverList from cloud delegate
1c6837f Remove CloudDelegate::Observer::OnDeviceInfoChanged
63feef5 Fixed issues configuring devices with date before 2000.
86e8f63 Update READMEs to reflect cloud_id name in Cloud Services for deviceId Added git add <files> in README for Making Changes
80c65d2 VERISON: Initial commit on master - 1.4.1
98af48b Update macaroon lib
fafbc5d Insert the description of the change.
5e94dc8 Applied clang-format
b741d64 Fix crash when device in access point mode
0d3062e Implement minimalRole for state definitions
c7fab18 Update _accessRevocationList trait
b18bead Fixes to event_http_server for examples
a07bbc7 Add provider::Wifi::GetConnectedSsid
c96ee4e examples/lock: fix lock trait
f7bfb6a examples/speaker: fix volume trait
2419a2a Update local auth info if server side information does not match
b7e0996 Simplify few comparison helpers
497559b Moved previous comment to README file

Change-Id: Ibd3ca55fb07b816b60489e458f5e905d260c683f
tree: 5329c96cd2853d914b3f37a059a359eb3bba525c
  1. examples/
  2. include/
  3. src/
  4. third_party/
  5. .clang-format
  6. .gitignore
  7. Android.mk
  8. AUTHORS
  9. CONTRIBUTORS
  10. cross.mk
  11. file_lists.mk
  12. libweave-test.pc.in
  13. libweave.pc.in
  14. LICENSE
  15. Makefile
  16. README.md
  17. tests.mk
  18. VERSION
README.md

Overview

libWeave is the library with device side implementation of Weave protocol.

Sources

Sources are located in git repository at https://weave.googlesource.com/weave/libweave/

Install Repo

Make sure you have a bin/ directory in your home directory and that it is included in your path:

mkdir ~/bin
PATH=~/bin:$PATH

Download the Repo tool and ensure that it is executable:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Checkout code

mkdir ~/weave
cd ~/weave
repo init -u https://weave.googlesource.com/weave/manifest
repo sync

This checks out libweave and its dependencies into the ~/weave directory.

libweave Directory structure

PathDescription
include/Includes to be used by device code
src/Implementation sources
examples/Example of device code
third_party/Dependencies
Makefile, *.mk filesBuild files

Quick start on Debian/Ubuntu

Install prerequisites

sudo apt-get update
sudo apt-get install \
  autoconf \
  automake \
  binutils \
  g++ \
  hostapd \
  libavahi-client-dev \
  libcurl4-openssl-dev \
  libevent-dev \
  libexpat1-dev \
  libnl-3-dev \
  libnl-route-3-dev \
  libssl-dev \
  libtool

Prerequisites

Common

  • autoconf
  • automake
  • binutils
  • libtool
  • libexpat1-dev

For tests

  • cmake
  • gtest (included; see third_party/googletest/googletest/)
  • gmock (included; see third_party/googletest/googlemock/)

For examples

  • cmake
  • hostapd
  • libavahi-client-dev
  • libcurl4-openssl-dev
  • libevhtp (included; see third_party/libevhtp/)
  • libevent-dev

Compiling

From the libweave directory:

The make --jobs/-j flag is encouraged, to speed up build time. For example

make -j

which happens to be the same as

make all -j

Build library

make out/Debug/libweave.so

Build examples

make all-examples

See the examples README for details.

Cross-compiling

The build supports transparently downloading & using a few cross-compilers. Just add cross-<arch> to the command line in addition to the target you want to actually build.

This will cross-compile for an armv7 (hard float) target:

make cross-arm all-libs

This will cross-compile for a mips (little endian) target:

make cross-mipsel all-libs

Testing

Run tests

make test
make export-test

or

make testall

Cross-testing

The build supports using qemu to run non-native tests.

This will run armv7 tests through qemu:

make cross-arm testall

Making changes

The Android Developing site has a lot of good tips for working with git and repo in general. The tips below are meant as a quick cheat sheet rather than diving deep into relevant topics.

Configure git

Make sure to have correct user in local or global config e.g.:

git config --local user.name "User Name"
git config --local user.email user.name@example.com

Start local branch

repo start <branch name> .

Edit code and commit locally e.g.

git commit -a -v

Upload CL

repo upload .

Request code review

Go to the url from the output of repo upload and add reviewers.