Commit Graph

161 Commits

Author SHA1 Message Date
Shu Chen 129c419107 [timer] multiple microseconds timer support (#1962)
* [timer] multiple microseconds timer support

* Remove TimerSchedulerLocator, Timer inherit from Ip6Locator instead to get TimerScheduler.

* Add separate UsecTimer and UsecTimerScheduler for multiple microseconds timer support.

* [timer] refine Timer names

* Rename alarm header files to alarm-milli.h and alarm-micro.h

* Rename alarm APIs to start with otPlatAlarmMilli and otPlatAlarmMicro

* Rename Timer classes to TimerMilli/TimerMilliScheduler and TimerMicro/TimerMicroScheduler

* [Timer] Refactor Timer code structure

* Create TimerBase and TimerSchedulerBase class for common functions;

* Use TimerMilli/TimerMicro and TimerMilliScheduler/TimerMicroScheduler for different functions;

* Define AlarmApi, so then TimerMilliScheduler/TimerMicroScheduler could use different AlarmApi.
2017-07-10 16:01:27 -07:00
Abtin Keshavarzian bbab3074ed [instance] single OpenThread instance optimizations (#1926)
This commit new configuration option `enable-multiple-instances` and
its corresponding option `OPENTHREAD_ENABLE_MULTIPLE_INSTANCES`. When
enabled OpenThread supports handling of multiple instances. By default
this is disabled.

This commit also adds two optimizations for single instance case to
simplify the code and also help reduce memory/RAM usage:

(1) OpenThread objects/classes typically keep a reference to a higher
level object (e.g., many classes keep track of owning `ThreadNetif`)
to be able to access other objects/methods within OpenThread class
hierarchy. In single instance mode, the reference member variables are
removed and instead global functions are used to access the singleton
objects from one class to the other. To implement this, a group of
`<Object>Locator` classes are defined (e.g., `ThreadNetifLocator`,
etc.) which are then used as base class of other OpenThread classes.

(2) OpenThread objects which provide a callback/handler (e.g.,
`Timer`, `Tasklet`, etc.) have `void *mContext` member variable which
is used to keep track of the owner of the object. In single instance
mode the `mConext` member variables are removed since the owner is
expected to be a singleton and can be uniquely determined from the
callback function.

To implement this, two changes are made: First the handler methods are
modified to provide a reference to the object (e.g., `Timer` handler
will provide a `Timer &aTimer` as a parameter of its handler
callback). Second, a new base class `Context` is introduced which
hides the implementation providing an arbitrary context information. A
new static method `GetOwner(aContext)` is added to classes which own a
callback providing objects. This method help convert a `Context` to
the reference of the owner class object.
2017-06-30 11:48:26 -07:00
Abtin Keshavarzian 8924a545c0 Use OT_UNUSED_VARIABLE(variable) to replace (void)variable (#1934) 2017-06-26 22:22:37 -07:00
Łukasz Duda 70775bdb9a Add ping stop command. (#1925) 2017-06-22 00:04:24 -07:00
Shu Chen 844482a52b cli: Add parent priority set cli (#1923) 2017-06-22 00:03:26 -07:00
Mike 8dc31d6e27 Enable defines (#1877)
* Add dhcp6 client define, and update openthred-config include scheme

* #1663 - update include to use quotes instead of angle brackets

* #1663 - update file to use underscore instead of dash

* #1663 - remove extra space

* #1663 - update location of new header file and update files to point to it

* #1663 - update location of new header file and update files to point to it

* #1663 update makefile.am to include new header

* update for make pretty changes

* more pretty fixes

* cleanup, and remove automatic mbedtls change

* remove debugging change

* #1663 - Remove extra space, and change include to use angle brackets instead of quotes.

* rename the enable defines file to openthred_config

* #1663 clean up for code review

* #1663 - clean up last nits

* #1663 - missed merge conflicts - file openthread-config.h -> openthread/openthread_config.h
2017-06-12 13:26:44 -07:00
Jonathan Hui 2304e4d5ac Clean up state changed names. (#1887) 2017-06-08 08:50:00 -07:00
Shu Chen 473b83b02f Add --enable-border-router configure option (#1834)
* Use `OPENTHREAD_ENABLE_BORDER_ROUTER` feature flag to wrap Border Router related features

* MTD devices could also act as a Border Router
2017-06-02 21:49:07 -07:00
Shu Chen 86d740dcf1 Separate Link Quality name from LQI (#1867) 2017-06-02 18:18:07 -07:00
Shu Chen 4460fb1815 Don't return parent info if the device is not a child (#1868)
* Fix the issue that the previous parent information could be retrieved
  even after the device is not a child

* Print more parent information in CLI
2017-06-02 09:03:48 -07:00
Jonathan Hui 8872e292eb Clean up CoAP CLI. (#1864)
- Change static methods into class methods.
- Remove client/server distinction.
- Fix callback method types and remove unnecessary type casts.
- Update README.md to reflect changes.
2017-06-02 08:56:47 -07:00
Jonathan Hui 3c408bac8e Clean up CLI member names. (#1855) 2017-05-31 18:24:59 -07:00
Jonathan Hui 48a9a63252 Clean up radio names. (#1837) 2017-05-27 21:27:06 -07:00
Jonathan Hui 427ef53900 Cleanup device role names. (#1820) 2017-05-25 15:36:43 -07:00
Jonathan Hui ded892f8c6 Clean up ICMP names. (#1825) 2017-05-25 14:43:27 -07:00
Jonathan Hui 344a78f39f Cleanup MLE attach names. (#1816) 2017-05-24 08:41:38 -07:00
Jonathan Hui fce2d83927 Clean up route preference names. (#1810) 2017-05-24 08:34:49 -07:00
Jonathan Hui 48b9299544 Clean up error names. (#1764) 2017-05-23 09:34:35 -07:00
Shu Chen 8899793e61 Add txpowermax CLI (#1775) 2017-05-16 09:10:26 -07:00
Jonathan Hui 39b1162b1e Combine CoAP Client and Server into a single CoAP agent. (#1745) 2017-05-12 11:51:19 -07:00
Jonathan Hui fbfd76a990 Apply #include code style. (#1723) 2017-05-05 11:28:29 -07:00
Jonathan Hui da7ba8ba19 Require Thread Master Key to be 16 bytes. (#1724)
- Update code to use `otMasterKey` type.
2017-05-05 09:21:43 -07:00
Vaas Krishnamurthy 8d5a701adb Set steering data and enable MLE discovery response filtering. (#1685)
Enable OPENTHREAD_CONFIG_ENABLE_STEERING_DATA_SET_OOB to be able to set
steering data out of band on FFDs.

On joining device, enable filtering MLE discovery responses based on Factory assigned EUI64.
2017-05-03 13:24:02 -07:00
Buke Po 9a35b0de05 Make Network Diagnostic optional for MTD. (#1686)
* make network diagnostic optional for mtd
2017-05-01 20:07:39 -07:00
Shu Chen 90d62a4e22 Remove some Leader/Router related features from MTD build (#1680)
* Unify the location of "#if OPENTHREAD_FTD" which include/exclude the whole file

Also correct some comments in xxx_api.cpp

* Remove Address Resolver related features from MTD build

* Remove some Leader/Router related features from MTD build

* Remove Leader/Router related APIs from MTD build

* Remove Leader/Router related functions from MTD build
2017-04-30 20:46:22 -07:00
Jonathan Hui 1eabda6a08 Change top-level namespace from 'Thread' to 'ot'. (#1664) 2017-04-27 22:29:05 -07:00
Buke Po 024c44de5c Add PSKc API (#1635)
* add pskc api

* add pskc cli

* add NCP api of PSKc

* apply PSKc from network

* implement PSKC api for windows

* add name for pskc property

* clear active and pending dataset when settings pskc
2017-04-27 16:32:34 -07:00
DuaneEllis-TI d65418c12f Add support for wrap_string.h and others (#1642) 2017-04-27 10:17:09 -07:00
Abtin Keshavarzian f392421d2c Update otThreadDiscover() to include input argument for setting Joiner flag. (#1658) 2017-04-26 11:10:51 -07:00
Shu Chen 0a830ecefe Reduce MTD code size by removing some unused MeshCoP features (#1361)
* Seperate FTD-only dataset APIs;

* Remove some unused MeshCoP functions from MTD build;

* Remove some unused CLI functions from MTD build.
2017-04-25 11:51:12 -07:00
rongli 030efbaf45 return the right error information for some cli commands (#1644) 2017-04-22 08:25:06 -07:00
DuaneEllis-TI 358ca8ee77 Support #1619 - MTD vrs FTD builds, and Makefile.am If/Else/Endif issues (#1620)
* Convert FTD/MTD methods and remove if/else/endif from Makefiles
2017-04-20 20:55:40 -07:00
Ciaran Woodward 0c5850e7ba Fix CLI implementation of the child command (#1626)
* CLI fix for printing child list

In the previous implementation, if a child was not available at a
certain index, all children at greater indexes would not be
printed for a child list or child table command, despite still being
connected to the node.

This change modifies the logic so that if a child does not exist at
a given index, only that index is disgarded, and future indexes are
checked correctly.

* Made pretty

* Add ExitNow statement at end of table printing.

This prevents printing an error at the end of the table.
2017-04-19 09:02:51 -07:00
Buke Po d819521e10 print error message on cli failure (#1610) 2017-04-18 05:31:53 -07:00
Michael Morscher 6a520dd63c [CoAP] Adding CLI commands (#1539)
* [CoAP] Adding CLI commands

Adds CLI commands for a simple CoAP client and server with one resource
2017-04-11 09:02:42 -07:00
rongli 2ba9933882 not configure discovery scan duration (#1502) 2017-04-06 09:56:31 -07:00
Jonathan Hui 49ac7fbc2c Make VerifyOrExit() action argument optional. (#1554) 2017-04-05 09:44:22 -07:00
pvanhorn 02400eecb2 Create and use an enum for Route Config mPreference. (#1525) 2017-03-29 08:49:48 -07:00
Hubert Miś 68de8f669a [CoAP Server] Message deduplication (#1500)
* Message deduplication in CoAP server.

* Limit number of responses in CoAP server deduplication queue.
2017-03-23 02:01:58 -07:00
Łukasz Duda 3316daa43c Add initial implementation of DNS Client (#1460)
* [DNS] Initial DNS Client implementation.
2017-03-17 14:43:08 -07:00
Robert Lubos 746a40a340 Automatic Joiners removal in Commissioner (#1421)
* Implement automatic Joiner removal feature.

* Save some RAM in JoinerRouter class.

* Specify timeout for each Joiner separately.

* Update Windows API files.
2017-03-08 05:19:12 -08:00
Jonathan Hui 31b389fb4e Change otMessage type to not hide pointer. (#1416) 2017-03-02 12:43:59 -08:00
Jonathan Hui b490f2ef3e Icmp6 cleanup. 2017-03-02 10:24:55 -08:00
Jonathan Hui a6dac9270c Diag API cleanup. 2017-03-02 10:24:55 -08:00
Jonathan Hui e919576978 Move include/platform to include/openthread/platform. 2017-03-02 10:24:55 -08:00
Jonathan Hui d0c687505b Move openthread.h to openthread/openthread.h. 2017-03-02 10:24:55 -08:00
Jonathan Hui 7f680552eb Thread API cleanup. 2017-03-02 10:24:55 -08:00
Jonathan Hui 52497fa45c Instance API cleanup. 2017-03-02 10:24:55 -08:00
Jonathan Hui da9b2978ad Operational Dataset API cleanup. 2017-03-02 10:24:55 -08:00
Jonathan Hui 421878f468 Network Data API cleanup. 2017-03-02 10:24:55 -08:00