(DEAD) development moved to libiota; library with device side implementation of Weave protocol

Clone this repo:
  1. 17f710e libweave: Update libchrome APIs to r405848 by Luis Hector Chavez · 9 years ago main master
  2. 637be79 libweave: Update libchrome APIs to r395517 by Luis Hector Chavez · 9 years ago
  3. d1f98a0 examples: remove samples with private traits by Johan Euphrosine · 9 years ago
  4. 369d2f0 correcting volume property maximum value in if condition checking of volume trait of test_schema device. by Surender Kodam · 9 years ago
  5. eed2446 Add volume trait to the test_schema device. by Surender Kodam · 9 years ago

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 \ cmake \ g++ \ hostapd \ libavahi-client-dev \ libcurl4-openssl-dev \ libevent-dev \ libexpat1-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

libweave users

In order to cross-compile, all you need to configure is CC/CXX/AR.

make CC=your-cc CXX=your-cxx AR=your-ar 

So if you have a toolchain in a path like /opt/vendor/bin/arm-linux-gcc, do:

make \ CC=/opt/vendor/bin/arm-linux-gcc \ CXX=/opt/vendor/bin/arm-linux-g++ \ AR=/opt/vendor/bin/arm-linux-ar 

libweave developers

Note: This is only for developers who are hacking on libweave itself.

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.