Updated to use the latest TI 15.4-Stack v2.1.0 from the SimpleLink CC13x0 SDK v1.30.
authorBrock Allen <a0227110@ti.com>
Thu, 6 Apr 2017 18:40:12 +0000 (11:40 -0700)
committerBrock Allen <a0227110@ti.com>
Wed, 3 May 2017 23:36:33 +0000 (16:36 -0700)
178 files changed:
build_all.sh
components/api/Makefile
components/api/inc/api_mac.h
components/api/inc/api_mac_linux.h
components/api/inc/mt_msg.h
components/api/inc/mt_msg_dbg.h
components/api/src/api_mac.c
components/api/src/mt_msg.c
components/api/src/mt_msg_dbg_core.c
components/api/src/mt_msg_dbg_load.c
components/api/src/mt_msg_ini.c
components/common/Makefile
components/common/inc/bitsnbits.h
components/common/inc/compiler.h
components/common/inc/compiler_gcc.h
components/common/inc/debug_helpers.h
components/common/inc/fatal.h
components/common/inc/fifo.h
components/common/inc/hexline.h
components/common/inc/hlos_specific.h
components/common/inc/ini_file.h
components/common/inc/log.h
components/common/inc/mutex.h
components/common/inc/rand_data.h
components/common/inc/stream.h
components/common/inc/stream_private.h
components/common/inc/stream_socket.h
components/common/inc/stream_uart.h
components/common/inc/threads.h
components/common/inc/ti_semaphore.h
components/common/inc/timer.h
components/common/inc/unix_fdrw.h
components/common/inc/void_ptr.h
components/common/linux/linux_specific.c
components/common/linux/linux_uart.c
components/common/src/debug_helpers.c
components/common/src/fatal.c
components/common/src/fifo.c
components/common/src/hexline.c
components/common/src/ini_file.c
components/common/src/log.c
components/common/src/log_ini.c
components/common/src/mutex.c
components/common/src/rand_data.c
components/common/src/stream_common.c
components/common/src/stream_file.c
components/common/src/stream_mem.c
components/common/src/stream_socket_client.c
components/common/src/stream_socket_ini.c
components/common/src/stream_socket_private.c
components/common/src/stream_socket_private.h
components/common/src/stream_socket_server.c
components/common/src/stream_uart_ini.c
components/common/src/threads.c
components/common/src/ti_semaphore.c
components/common/src/timer.c
components/common/src/timer_cb.c
components/common/src/unix_fdrw.c
components/nv/Makefile
components/nv/inc/nv_linux.h
components/nv/inc/nvintf.h
components/nv/linux/nv_linux.c
devicetree-zImage-am335x-boneblack-wifi-cape-e14.dtb [new file with mode: 0644]
example/collector/Makefile
example/collector/api_mac.proto
example/collector/api_mac_proto.c
example/collector/api_mac_proto.h
example/collector/appsrv.c
example/collector/appsrv.h
example/collector/appsrv.proto
example/collector/appsrv_proto.c
example/collector/appsrv_proto.h
example/collector/cllc.c
example/collector/cllc.h
example/collector/cllc.proto
example/collector/collector.c
example/collector/collector.cfg
example/collector/collector.h
example/collector/config.h
example/collector/csf.h
example/collector/csf.proto
example/collector/csf_linux.c
example/collector/csf_linux.h
example/collector/csf_linux.proto
example/collector/csf_proto.c
example/collector/csf_proto.h
example/collector/linux_main.c
example/collector/llc.h
example/collector/llc.proto
example/collector/llc_proto.c
example/collector/llc_proto.h
example/collector/run_collector.sh
example/collector/smsgs.h
example/collector/smsgs.pb-c.c
example/collector/smsgs.pb-c.h
example/collector/smsgs.proto
example/collector/smsgs_proto.c
example/collector/smsgs_proto.h
example/collector/timac_features.h [new file with mode: 0644]
example/collector/util.c
example/collector/util.h
example/iot-gateway/appClient/devices/device.js
example/iot-gateway/appClient/protofiles/appsrv.proto
firmware/CC1310_LaunchXL/868MHz/sensor_cc13x0lp_868MHz.hex [deleted file]
firmware/CC1310_LaunchXL/coprocessor_cc1310_lp.hex [deleted file]
firmware/CC1310_LaunchXL/sensor_cc13x0lp.hex [deleted file]
firmware/CC1350_LaunchXL/868MHz/sensor_cc13x0lp_868MHz.hex [deleted file]
firmware/CC1350_LaunchXL/coprocessor_cc1310_lp.hex [deleted file]
firmware/CC1350_LaunchXL/sensor_cc13x0lp.hex [deleted file]
firmware/CC1350_SensorTag/868MHz/sensor_cc13x0stk_868Mhz.hex [deleted file]
firmware/CC1350_SensorTag/sensor_cc1350stk_433mhz.hex [new file with mode: 0755]
firmware/CC1350_SensorTag/sensor_cc1350stk_863mhz.hex [new file with mode: 0755]
firmware/CC1350_SensorTag/sensor_cc1350stk_915mhz.hex [new file with mode: 0755]
firmware/CC1350_SensorTag/sensor_cc13x0stk.hex [deleted file]
firmware/CC13x0_LaunchPad/coprocessor_cc13xx_lp.hex [new file with mode: 0644]
firmware/CC13x0_LaunchPad/sensor_default_433MHz.hex [new file with mode: 0644]
firmware/CC13x0_LaunchPad/sensor_default_868MHz.hex [new file with mode: 0644]
firmware/CC13x0_LaunchPad/sensor_default_915MHz.hex [new file with mode: 0644]
prebuilt/bin/bbb_collector
prebuilt/bin/collector.cfg
prebuilt/bin/host_collector
prebuilt/iot-gateway/appClient/appclient.js [changed mode: 0644->0755]
prebuilt/iot-gateway/appClient/devices/device.js [changed mode: 0644->0755]
prebuilt/iot-gateway/appClient/nwkinfo/nwkinfo.js [changed mode: 0644->0755]
prebuilt/iot-gateway/appClient/protofiles/appsrv.proto
prebuilt/iot-gateway/iot-gateway.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/acorn [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/brfs [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/escodegen [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/esgenerate [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/esparse [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/esvalidate [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/mime [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/.bin/quote-stream [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/bin/acorn [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/bin/prepublish.sh [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/bin/update_authors.sh [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/bin/without_eval [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/src/expression.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/src/location.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/src/lval.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/acorn/src/node.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/.bin/mqtt [changed from file to symlink]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/.bin/mqtt_pub [changed from file to symlink]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/.bin/mqtt_sub [changed from file to symlink]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/mqtt/benchmarks/bombing.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/mqtt/benchmarks/throughputCounter.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/mqtt/bin/pub.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/mqtt/bin/sub.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/mqtt/mqtt.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/mqtt/node_modules/commist/node_modules/.bin/leven [changed from file to symlink]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/node_modules/mqtt/node_modules/commist/node_modules/leven/cli.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/aws-iot-device-sdk/scripts/browserize.sh [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/benchmark/test/run-test.sh [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/brfs/bin/cmd.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/duplexer2/example.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/engine.io-client/lib/transports/index.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/engine.io-client/lib/transports/polling-xhr.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/escodegen/bin/escodegen.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/escodegen/bin/esgenerate.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/esprima/bin/esparse.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/esprima/bin/esvalidate.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/falafel/test/bin/run.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/mime/cli.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/quote-stream/bin/cmd.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/source-map/test/run-tests.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/.bin/escodegen [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/.bin/esgenerate [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/.bin/esparse [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/.bin/esvalidate [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/escodegen/bin/escodegen.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/escodegen/bin/esgenerate.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/esprima/bin/esparse.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-eval/node_modules/esprima/bin/esvalidate.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/static-module/node_modules/quote-stream/bin/cmd.js [changed mode: 0644->0755]
prebuilt/iot-gateway/node_modules/utf8/tests/generate-test-data.py [changed mode: 0644->0755]
prebuilt/iot-gateway/run_gateway.sh [changed mode: 0644->0755]
scripts/front_matter.mak

index a9cbd9b46f16124ac47e5522985485813a0ac807..330f6bb7071b693f0a94c1b445340e8d216c6d49 100755 (executable)
@@ -116,7 +116,7 @@ script -e -f -c "cd example/npi_server2 && make $target" $target.npi_server2.log
 
 script -e -f -c "cd example/collector && make $target" $target.collector.log
 
-script -e -f -c "cd example/cc13xx-sbl/app/linux && make $target" $target.bootloader.log
+script -e -f -c "cd example/cc13xx-sbl/app/linux && make $target" $target.bootloader.log
 
 #  ========================================
 #  Texas Instruments Micro Controller Style
index 95a65cf7a598f9e54f26d8489ece8cf2e4d1f332..4faae5f6382c23b818dcd775120a289624838555 100644 (file)
@@ -39,8 +39,8 @@
 #   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 #   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #############################################################
-# $Release Name: TI-15.4Stack Linux x64 SDK$
-# $Release Date: July 14, 2016 (2.00.00.30)$
+# $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+# $Release Date: Mar 08, 2017 (2.01.00.10)$
 #############################################################
 
 # By default, we make the library file
index 8d3759f3db75c23e6a09c1d9ecc494e8b9fa5397..8e121c699ca9a1fd05c80c2377c5c7bf9b88e754 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef API_MAC_H
 #define API_MAC_H
@@ -236,17 +236,25 @@ extern "C"
 /*! Maximum number of Standard PHY descriptor entries */
 #define APIMAC_STANDARD_PHY_DESCRIPTOR_ENTRIES  3
 /*! Maximum number of Generic PHY descriptor entries */
-#define APIMAC_GENERIC_PHY_DESCRIPTOR_ENTRIES   3
-
-/*! PHY IDs - 915MHz US Frequency band operating mode # 1 */
-#define APIMAC_STD_US_915_PHY_1 1
-/*! 863MHz ETSI Frequency band operating mode #1 */
-#define APIMAC_STD_ETSI_863_PHY_3 3
+#define APIMAC_GENERIC_PHY_DESCRIPTOR_ENTRIES   6
+
+ /*! PHY IDs - 915MHz US Frequency band operating mode # 1 */
+ #define APIMAC_STD_US_915_PHY_1                 1
+ /*! 863MHz ETSI Frequency band operating mode #1 */
+ #define APIMAC_STD_ETSI_863_PHY_3               3
+  /*! 433MHz China Frequency band operating mode #1 */
+ #define APIMAC_GENERIC_CHINA_433_PHY_128        128
+  /*! PHY IDs - 915MHz LRM US Frequency band operating mode # 1 */
+ #define APIMAC_GENERIC_US_LRM_915_PHY_129       129
+  /*! 433MHz China LRM Frequency band operating mode #1 */
+ #define APIMAC_GENERIC_CHINA_LRM_433_PHY_130    130
+  /*! 863MHz ETSI LRM Frequency band operating mode #1 */
+ #define APIMAC_GENERIC_ETSI_LRM_863_PHY_131     131
 
 /*! PHY IDs - MRFSK Generic Phy ID start */
-#define APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN 128
+#define APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN APIMAC_GENERIC_CHINA_433_PHY_128
 /*! PHY IDs - MRFSK Generic Phy ID end */
-#define APIMAC_MRFSK_GENERIC_PHY_ID_END 143
+#define APIMAC_MRFSK_GENERIC_PHY_ID_END ( APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN + APIMAC_GENERIC_PHY_DESCRIPTOR_ENTRIES - 1 )
 
 /*! PHY IDs - MRFSK Standard Phy ID start */
 #define APIMAC_MRFSK_STD_PHY_ID_BEGIN APIMAC_STD_US_915_PHY_1
@@ -256,6 +264,11 @@ extern "C"
 /*! PHY descriptor table entry */
 #define APIMAC_PHY_DESCRIPTOR 0x01
 
+/*! Range Extender Mode */
+#define APIMAC_NO_EXTENDER      0x00
+#define APIMAC_HIGH_GAIN_MODE   0x01
+#define APIMAC_LOW_GAIN_MODE    0x02
+
 /*!
  Special address value - Short address value indicating extended address
  is used
@@ -731,6 +744,14 @@ typedef enum
      descriptor table
      */
     ApiMac_attribute_phyCurrentDescriptorId = 0xE8,
+    /*!
+     RSSI threshold for CCA, expressed as a signed int with range -127 to 127
+     */
+    ApiMac_attribute_rssiThreshold = 0xF4,
+    /*!
+     Range Extender Mode from 0 to 2
+     */
+    ApiMac_attribute_rangeExtender = 0xF5,
 } ApiMac_attribute_uint8_t;
 
 /*! Standard PIB Get and Set Attributes - size uint16_t */
@@ -941,6 +962,13 @@ typedef enum
     ApiMac_FHAttribute_eapolReady = 0x2011,
     /*! Wi-SUN FAN version - uint8_t */
     ApiMac_FHAttribute_fanTPSVersion = 0x2012,
+    /*! Additional base wait time to sense target channel */
+    ApiMac_FHAttribute_CsmaBaseBacoff = 0x201A,
+    /*! Number of non-sleepy device - uint8_t */
+    ApiMac_FHAttribute_numNonSleepDevice = 0x201b,
+    /*! Number of sleepy device - uint8_t */
+    ApiMac_FHAttribute_numSleepDevice = 0x201c,
+
 } ApiMac_FHAttribute_uint8_t;
 
 /*! Frequency Hopping PIB Get and Set Attributes - size uint16_t */
@@ -1863,6 +1891,8 @@ typedef struct _apimac_mlmesyncreq
 /*! MLME WiSUN Async request type */
 typedef struct _apimac_mlmewsasyncreq
 {
+    /*! The security parameters for this message */
+    ApiMac_sec_t sec;
     /*! Start or Stop Async operation */
     ApiMac_wisunAsycnOperation_t operation;
     /*! Async frame type */
@@ -1872,8 +1902,6 @@ typedef struct _apimac_mlmewsasyncreq
      start operation
      */
     uint8_t channels[APIMAC_154G_CHANNEL_BITMAP_SIZ];
-    /*! The security parameters for this message */
-    ApiMac_sec_t sec;
 } ApiMac_mlmeWSAsyncReq_t;
 
 /*! Structure to pass information to the ApiMac_secAddDevice(). */
@@ -3297,17 +3325,3 @@ extern ApiMac_status_t ApiMac_secAddKeyInitFrameCounter(
 
 #endif /* API_MAC_H */
 
-/*
- *  ========================================
- *  Texas Instruments Micro Controller Style
- *  ========================================
- *  Local Variables:
- *  mode: c
- *  c-file-style: "bsd"
- *  tab-width: 4
- *  c-basic-offset: 4
- *  indent-tabs-mode: nil
- *  End:
- *  vim:set  filetype=c tabstop=4 shiftwidth=4 expandtab=true
- */
-
index 0d9ec03255c0fe7445d9fac1a19dab9d96c0eeba..e9f51df5fea9a60b40dd0af3de64507f73c3c162 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(API_MAC_LINUX_H)
index c1ecfda4dd15d0610cba904bca4fb96214b70e3f..ec69cc6c8bf1e30b3d5e6f20d86cb481cd013724 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /*!
index 0c9b9dd47bf2f4d14bc49167eb468c96105b0469..59ede70b32bd10e80444ab04eed49a2b529ecade 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined( MT_MSG_DBG_H )
index 92e048bb819345b13aa331a039fa2a86e00a2aeb..fa535615026cab41238e5c149929de4a33769e71 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /******************************************************************************
index f9ece6f25acd9b163b068d3c63e9344cc46f35a8..c95ec536913e94e20e655586a1195d9a813b3cf0 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /******************************************************************************
index 2c425a0cdee58a6ed8ef7d7965d0be5047e2c59c..ab07b45d94019ebb7ffd875253bfce9c4ca345c9 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 21cf43327ef9149747ebddb1cda2e6bc83871715..82eb425277059fdc759bee598bf362f95a0a4e02 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 71c0ab62d2f964b62d5baee94ad28ee29d6e02f5..1d68608b0e65ca682b87016e2c2b6d000167dba1 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /******************************************************************************
index 0b21580a0993f708bd0ce8f5df3126511f74c507..d599d8cee850bf9e2374c8acee5b5025a826b944 100644 (file)
@@ -39,8 +39,8 @@
 #   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 #   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #############################################################
-# $Release Name: TI-15.4Stack Linux x64 SDK$
-# $Release Date: July 14, 2016 (2.00.00.30)$
+# $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+# $Release Date: Mar 08, 2017 (2.01.00.10)$
 #############################################################
 
 # By default, we make the library file
index 6ca6bbdd2c7d5357b79e522bee1e0927e3faa54e..81821fae60f5336cd694a0cc930a9d02a82da302 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(bitsnbits_h)
index 55834535ce84f5dfdf897747861c959606ab664f..6d47230ebc084851c5ef78b99232d7453bbd5769 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if defined(__linux__)
index 26a4d53ae07da9b1b5621d2fb30927a8eecd2076..6bf1a4a86435c4a0cb550696651a22d8ed1798e1 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /*
index 98b9bcb0271f31ba1c1df4784216a3bd9dfb4c0b..0310aeed7a12b2b086b1974214a160911e2371d9 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #if !defined(DEBUG_THREAD_H)
 #define DEBUG_THREAD_H
index 265544dd236226d1c667322613a290fe5fb9cd20..0df10747c0b32a9590fa4dab7d4a8fe43f7a91a9 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(FATAL_H)
index 60b77f02df9c58d6421866f2e44850c37238415b..befc409e290c07ca0ba41d71180a5761a3d9bc1a 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(FIFO_H)
index fa1e0080478c6167866484619be9dc554f1bf089..3a6ab20762dd0224767f9fc752d82380dfc63389 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(HEXLINE_H)
index f1b0348a9588d2052f270eb028bb9285c0072f7f..9a719d1d629a345d30e3f12d567de652a4edef33 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(HLOS_SPECIFIC_H)
index e5bc9d8551635da85a0f4b70fab9df2364eb4c4e..5e336e1a0fa0728c730ed057cc3c7b8405477b4f 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include <stdint.h>
index 9828ce24f0fb9a3e7000ad15c5c4773fad9a16b4..f196f6a97042d7f1d4641a548dcda1bcb30239df 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(LOG_H)
index d41d6b58580a9f0a8bb2d118b882e70136e4238e..be1cd60eb45314030404233610b259350f2f175f 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(MUTEX_H)
index 006b52e766d2cb12c986185fd23a3761b909be0d..54f1c822ae82dc1e1207c7186238f75a6565f895 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(RAND_DATA_H)
index 3ea3bca77db82d3fefa05a99cc775d75f9b39c5d..b3a4ccd4b46914bcf3a3434bd361e348e4fd1180 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(STREAM_H)
index cdca5d008afa9101af953ce5226a79c079305b76..1bf46fe752bd6ce8014097409e0c4431d2b88917 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /*
index 76f211b6639f0d5d09c581c72769918bda6f142e..bbc8e40e1ac8337034756fab5e9736b5a4e9bdbe 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(STREAM_SOCKET_H)
index 1c5396ff4f9215e7604172399bfe8bd30d3a4701..fb2abdd3a65e7d3416de21487f81387419028414 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(STREAM_UART_H)
index f8d285ac8bba7a669c0faee5fcbf5bdcba4a9d61..96075e08fc0e8d8b005086c03b0e3e226c5b45b0 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(THREADS_H)
index 2d98913f5db18a88afb7ae328e9bf831fa17cc93..ba17238ed5253ef624c3b1c1a6d2dd089fb857be 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /*
index bd6580c283b8125326471c48b23a8796bfb01487..f437595e8c3a005ebfd38cda8c3d89a35cf1dcce 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(TIMER_H)
index 7823a5e65e35f03ab95de56327ff9697c53d1b1c..11be75c3da5e3104a8eb7af7e82bb0afb221c2dc 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(UNIX_FDRW_H)
index e139de04b2908f756364ecd154a560efd6e624e8..ec8f524636efdb8f2bf4de84d0af588334a6024b 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(VOID_PTR_H)
index ea614e12e3c0ddd38c3f029016ebe3a38bea1bbf..e065804ba5f87760ab9308eeceaa9d3c1b82288e 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 
index 91ed278c34d1ceb9dcc5aeb4ff606d6fa2255f5d..e2c31535f6770bb48151cba299fd380ba589f296 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "stream.h"
index dec29dc71694a5c265f86409c486b7a4442f3da0..d2a2f102b3180f6dd1bc0c65ea215e4fa011a652 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 17bf9143922ccfeb1bae1b885ed53bf0426ea5c1..d084fe50b771ae22248aee0bf681cd6e5e175b8f 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include <compiler.h>
index e22826860abf9631942f30a71f70f1bf27e2b0c1..8db88a6b6a31062282e66b4955f9c8783df56701 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 708ea21bee20e27b68ff28185cb6a317853929d2..1575a752b7a75b08cb95e9e9757563c077053449 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 2a0d10a7d59258b42f1be761ca7b4c2f480b1d04..bbd4f4799fb133db4e5b6a6136f938520374847d 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 99fc3faf3f83471c550c5a12c5cece9fc8245e4a..b41a7ee4112c96e3c38e8d431cd9464486dfe939 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index cbe4294065ac133f19a6614d7c17ef452888b5a8..3d8a2d60d3b64d5bfe72694ba36fe47596dd8bd3 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 6ebf83bb24f27c94fce3c1554dc87c835c603af6..e27e681815fe6db08dffa0a609dd7574f889f579 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 49e1e3c1997c268821dc1ac97840ec86cb08d593..160403eddacf0033271b178b647cd48ea31e8257 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 5aa1086647fa09a59f37a2e3b938bb60b5885bf4..6342c364c00a01fb103655c073c72e1c967bee27 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 0b66acdccaf8e24641b2c0beb40e21c9d9456008..541c871d4d522eee466a256a51d0b9a32d09ab5b 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index a77d41110856685a752359ae2a3d9be0602d61b1..01146b33b3f7cae9e17b04d65506fa97aa265dc6 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 4f40fabfa75ad6475aabb3d9f3c35b061b2e77e0..2ea1c21559f4020d1538e681b51c83be496c3800 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index c982cc2cfcdfb341b582e1b9adafc749611292f8..1e8f4737e5733e709696746a90fd1eb5b8727fe9 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index c3de08280a10e7198583be3138ac12b84eeaea56..b2ea20c7cbef0264f6685cbb92ad67c081ebdb17 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index da74a2480195ce7f410138d84ff06f4444a0e056..8deb61770aecb3e607be77de21170bf79d2de601 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(STEAM_SOCKET_PRIVATE_H)
index ae8e65882026094ad71420cb4777c653bd215794..9f2c4acaf8f37eb2b9bcbf9e9bf3dd3a065b8158 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index bdff694ff4fa3ea1320278b3b832141fc2d68fab..f5e95db8ac6795bca3d17541fc9b72fded21d8a5 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 721c3b819ad3b535cd31c1bc45fa7d8b16118b56..67be16e347237ad11c5c3b53087e1b901cb142f4 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index c3ebc028f4a716f6cf706d7149c6f55197e90b9b..5015c51cf904f8901a98f28d7b93f76ebc5ec3c3 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 53a22b85c06d07b5008013507b43bbcfda90408c..d554c0c9dc73342b1d5fa1fe3a8d23d3bf0c74a2 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 5ae18a3a1dc23205571b698c8eaf45933fa0d17f..7c7d2bc51e70c65369e228847a9ea66b1301e99c 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index 6b9828249e495ad1a22acce27c513bc3e00ab05c..b13056d8b9c5d5916ac3c7b6745bbd8e8aa0afea 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
index d65e1d1bf8fb0e84b976d87e863ebef4a239dd3f..2c984e6093c0970dd44fcdb44d1a7dc4936099fc 100755 (executable)
@@ -39,8 +39,8 @@
 #   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 #   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #############################################################
-# $Release Name: TI-15.4Stack Linux x64 SDK$
-# $Release Date: July 14, 2016 (2.00.00.30)$
+# $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+# $Release Date: Mar 08, 2017 (2.01.00.10)$
 #############################################################
 
 # By default, we make the library file
index 3ee93169dc9bdbbceb5916478e3a9ec2c60c21c9..1e07c4631f807713ea9af8f2cdfb9c702ef40360 100755 (executable)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(NV_LINUX_H)
index 6f3e93767fbaf232761ca8bb6f0411789695e573..236909a9a4d6491043ce5492c5b2e2dc475fafdc 100755 (executable)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
 *****************************************************************************/
 
 #ifndef NVINTF_H
index 1823f5954a860c509ea958175d28c8d6b39cf309..e61334d5d1078202bdd854491b1c6fa62b2b60d3 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
 *****************************************************************************/
 
 /******************************************************************************
diff --git a/devicetree-zImage-am335x-boneblack-wifi-cape-e14.dtb b/devicetree-zImage-am335x-boneblack-wifi-cape-e14.dtb
new file mode 100644 (file)
index 0000000..ad7df9e
Binary files /dev/null and b/devicetree-zImage-am335x-boneblack-wifi-cape-e14.dtb differ
index aa54e55a0629e504ac720d12a83448728170a452..679028327b2e5cba8e52ed44e3d222cb500e681e 100644 (file)
@@ -39,8 +39,8 @@
 #   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 #   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #############################################################
-# $Release Name: TI-15.4Stack Linux x64 SDK$
-# $Release Date: July 14, 2016 (2.00.00.30)$
+# $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+# $Release Date: Mar 08, 2017 (2.01.00.10)$
 #############################################################
 
 _default: _app
@@ -49,14 +49,16 @@ PROTOC_INSTALL_DIR=../google/install
 
 COMPONENTS_HOME=../../components
 
-CFLAGS+= -DAUTO_START
+HERE=$(shell pwd)
+CFLAGS += -include ${HERE}/timac_features.h
+CFLAGS += -DAUTO_START
 CFLAGS += -DNV_RESTORE
 CFLAGS += -I.
 CFLAGS += -I./protobuf-c
 CFLAGS += -I${COMPONENTS_HOME}/common/inc
 CFLAGS += -I${COMPONENTS_HOME}/nv/inc
 CFLAGS += -I${COMPONENTS_HOME}/api/inc
-CFLAGS += -DSENSOR_TAG_SUPPORT
+
 #----------------------------------------
 # NOTE: to use the Protobuf-C package that is built
 # locally to the  "../google/"  directory you must do 4 things:
index c129d0da4f148d45cfa5b160726e1c6d75ce60af..f7bc73dd68a269855b3b0ddc5fad0c1335889ca3 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 syntax = "proto2";
index 3261625c9f7901dd3e6b2abe5423f10e30658c31..474f68044618f5403ee6b0bff1d27583f5820d01 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "log.h"
index 4cd1c550dc7571e52dc45721e6ca7fb630f959b6..e1ee8a031cbac1169db9b5a4ce35bb2cddf92fb9 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(API_MAC_PROTO_H)
index 72e5babb9bf59cc0e04201a91f521c560e4a6192..7fcc7f63bd2b7e1a9e4a7a26a3240926be845074 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
 *****************************************************************************/
 
 /******************************************************************************
@@ -1267,14 +1267,14 @@ void APP_main(void)
     LOG_printf( LOG_ALWAYS, "    Minor: %d\n", MT_DEVICE_version_info.minor     );
     LOG_printf( LOG_ALWAYS, "    Maint: %d\n", MT_DEVICE_version_info.maint     );
 
-    fprintf( stderr, "Found Mac Co-Processor Version info is:\n");
-    fprintf( stderr, "Transport: %d\n", MT_DEVICE_version_info.transport );
-    fprintf( stderr, "  Product: %d\n", MT_DEVICE_version_info.product   );
-    fprintf( stderr, "    Major: %d\n", MT_DEVICE_version_info.major     );
-    fprintf( stderr, "    Minor: %d\n", MT_DEVICE_version_info.minor     );
-    fprintf( stderr, "    Maint: %d\n", MT_DEVICE_version_info.maint     );
-    fprintf( stderr, "----------------------------------------\n");
-    fprintf( stderr, "Start the gateway application\n");
+    fprintf( stdout, "Found Mac Co-Processor Version info is:\n");
+    fprintf( stdout, "Transport: %d\n", MT_DEVICE_version_info.transport );
+    fprintf( stdout, "  Product: %d\n", MT_DEVICE_version_info.product   );
+    fprintf( stdout, "    Major: %d\n", MT_DEVICE_version_info.major     );
+    fprintf( stdout, "    Minor: %d\n", MT_DEVICE_version_info.minor     );
+    fprintf( stdout, "    Maint: %d\n", MT_DEVICE_version_info.maint     );
+    fprintf( stdout, "----------------------------------------\n");
+    fprintf( stdout, "Start the gateway application\n");
 
     server_thread_id = THREAD_create("server-thread",
                                      appsrv_server_thread, 0,
index 502123cb3e24498a3412871bef9c0d05830416cd..ea5946809b26dfd09085092bb401e54ae90d0026 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
  #ifndef APPINTERFACE_H
  #define APPINTERFACE_H
index dc90c1b707a03811cfb26f61f9bf5ea6033e7a58..a52963babee00e99a6ae921404131ff2ba86b731 100644 (file)
@@ -42,8 +42,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 syntax = "proto2";
index d86e38447c8c21f03d4c1f05283d06770c5d43e1..c0ecdc5ec8f215d30435e369ee9e0993923b6eee 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
 *****************************************************************************/
 
 #include "malloc.h"
index 49b091bbf2b361b60451c302149fb8f0a6132860..02a709b0ba8d9d076adf676e47dca328cc5c1bf9 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(APPSRV2_PROTO_H)
index 1075ba556b110c95583d4a17b2e0719e89cc5cb5..44dfcc04c1260d3df216f646922d507af9cc7ab4 100644 (file)
@@ -42,8 +42,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /******************************************************************************
@@ -69,6 +69,7 @@
 #define CLLC_JOIN_PERMIT_ON      0xFFFFFFFF
 #define CLLC_MAX_ENERGY          255
 #define CLLC_PAN_NOT_FOUND       0x0000
+#define CLLC_SET_CHANNEL(a,b) (a)[(b)>>3] |= (1 << ((b) & 7))
 
 /*! MPM Constants for start request */
 #define CLLC_OFFSET_TIMESLOT     0
 /*! value for ApiMac_FHAttribute_gtk3Hash PIB */
 #define CLLC_FH_GTK3HASH                {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03}
 #define CLLC_FH_PANVERSION              0x0000
+#ifndef CERTIFICATION_TEST_MODE
 #define CLLC_FH_MAX_TRICKLE             CONFIG_TRICKLE_MAX_CLK_DURATION
 #define CLLC_FH_MIN_TRICKLE             CONFIG_TRICKLE_MIN_CLK_DURATION
+#else
+#if ((CONFIG_PHY_ID >= APIMAC_MRFSK_STD_PHY_ID_BEGIN) && (CONFIG_PHY_ID <= APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN))
+#define CLLC_FH_MAX_TRICKLE             6000
+#define CLLC_FH_MIN_TRICKLE             6000
+#else
+#define CLLC_FH_MAX_TRICKLE             30000
+#define CLLC_FH_MIN_TRICKLE             30000
+#endif 
+#endif
+#define PA_HOP_NEIGHBOR_FOUND_MASK      0x1
+#define PA_FIXED_NEIGHBOR_FOUND_MASK    0x2
+#define PC_HOP_NEIGHBOR_FOUND_MASK      0x4
+#define PC_FIXED_NEIGHBOR_FOUND_MASK    0x8
+
+#define USIE_FIXED_CHANNEL_OFFSET_CP0   6
+#define USIE_FIXED_CHANNEL_OFFSET_CP1   10
 
 /*!
  Variable to start the assignment of short addresses by the coordinator
@@ -150,13 +168,20 @@ Cllc_statistics_t Cllc_statistics;
  * to each the device that associates to it
  */
 uint16_t Cllc_devShortAddr = 0x0001;
-uint8_t Cllc_keySource[] = CLLC_DEFAULT_KEY_SOURCE;
+uint8_t CONST Cllc_keySource[] = CLLC_DEFAULT_KEY_SOURCE;
 
 /******************************************************************************
  Local variables
  *****************************************************************************/
 /* Default variables structure for coordinator */
-STATIC coordInformation_t coordInfoBlock;
+STATIC coordInformation_t coordInfoBlock =
+                {
+                 CLLC_CHAN_LOWEST,
+                 0x0001,
+                 0, /* During INIT this is set to: CONFIG_COORD_SHORT_ADDR, */
+                 Cllc_states_initWaiting,
+                 Cllc_coordStates_initialized
+                };                             
 /* default channel mask */
 STATIC uint8_t chanMask[APIMAC_154G_CHANNEL_BITMAP_SIZ];
 /* Linked list to store incoming PAN descriptors */
@@ -175,12 +200,18 @@ STATIC uint8_t fhGtkHash2[] = CLLC_FH_GTK2HASH;
 STATIC uint8_t fhGtkHash3[] = CLLC_FH_GTK3HASH;
 STATIC uint32_t fhPAtrickleTime; /* linux: these come from the configuration file at startup */
 STATIC uint32_t fhPCtrickleTime;
+STATIC uint8_t optPAChMask[APIMAC_154G_CHANNEL_BITMAP_SIZ];
+/* set of channels on which target nodes are expected to listen */
+STATIC uint8_t optPCChMask[APIMAC_154G_CHANNEL_BITMAP_SIZ];
+/* Flag to specify whether set of expected target channel is known */
+STATIC uint8_t optAsyncFlag = false;
 
+#ifdef FEATURE_MAC_SECURITY
 /******************************************************************************
  Local security variables
  *****************************************************************************/
 
-static const ApiMac_keyIdLookupDescriptor_t keyIdLookupList[] =
+STATIC CONST ApiMac_keyIdLookupDescriptor_t keyIdLookupList[] =
     {
       {
         /* Key identity data */
@@ -190,7 +221,7 @@ static const ApiMac_keyIdLookupDescriptor_t keyIdLookupList[] =
     };
 
 /* Key device list can be modified at run time */
-static ApiMac_keyDeviceDescriptor_t keyDeviceList[] =
+STATIC CONST ApiMac_keyDeviceDescriptor_t keyDeviceList[] =
     {
       { 0x00, false, false },
       { 0x00, false, false },
@@ -202,12 +233,12 @@ static ApiMac_keyDeviceDescriptor_t keyDeviceList[] =
       { 0x00, false, false }
     };
 
-static const ApiMac_keyUsageDescriptor_t keyUsageList[] =
+STATIC CONST ApiMac_keyUsageDescriptor_t keyUsageList[] =
     {
       { MAC_FRAME_TYPE_DATA, MAC_DATA_REQ_FRAME }
     };
 
-STATIC ApiMac_keyDescriptor_t keyTable[] =
+STATIC CONST ApiMac_keyDescriptor_t keyTable[] =
     {
       {
         (ApiMac_keyIdLookupDescriptor_t *)keyIdLookupList,
@@ -221,19 +252,21 @@ STATIC ApiMac_keyDescriptor_t keyTable[] =
       }
     };
 
-STATIC const ApiMac_securityPibSecurityLevelEntry_t securityLevelEntry =
+STATIC CONST ApiMac_securityPibSecurityLevelEntry_t securityLevelEntry =
     {
       0,
       { MAC_FRAME_TYPE_DATA, MAC_DATA_REQ_FRAME, 0, false }
     };
 
-STATIC ApiMac_secLevel_t secLevel = ApiMac_secLevel_encMic32;
+STATIC CONST ApiMac_secLevel_t secLevel = ApiMac_secLevel_encMic32;
+
+STATIC CONST ApiMac_keyIdMode_t secKeyIdMode = ApiMac_keyIdMode_8;
+STATIC CONST uint8_t secKeyIndex = 3; /* cant be zero for implicit key identifier */
 
-STATIC ApiMac_keyIdMode_t secKeyIdMode = ApiMac_keyIdMode_8;
-STATIC uint8_t secKeyIndex = 3; /* cant be zero for implicit key identifier */
+//STATIC bool macSecurity = CONFIG_SECURE;
+#define macSecurity CONFIG_SECURE /* linux, we use the config variable */
 
-// STATIC bool macSecurity
-#define macSecurity  CONFIG_SECURE
+#endif /* FEATURE_MAC_SECURITY */
 
 /******************************************************************************
  Local Function Prototypes
@@ -272,6 +305,9 @@ static void sendAsyncReq(uint8_t frameType);
 static void joinPermitExpired(void);
 static void sendStartReq(bool startFH);
 static void sendScanReq(ApiMac_scantype_t type);
+static void setTrickleTime(uint32_t *pTrickleTime, uint8_t frameType);
+static void processIncomingFHframe(uint8_t frameType);
+static void processIncomingAsyncUSIE(uint8_t frameType, uint8_t* pIEContent);
 
 /******************************************************************************
  Public Functions
@@ -284,26 +320,29 @@ static void sendScanReq(ApiMac_scantype_t type);
 void Cllc_init(ApiMac_callbacks_t *pMacCbs, Cllc_callbacks_t *pCllcCbs)
 {
     uint16_t panId = CONFIG_PAN_ID;
-    /* Linux: initialize these at startup */
-    memcpy( chanMask         , linux_CONFIG_CHANNEL_MASK, sizeof(chanMask));
+
+    /* Initialize PA/LNA if enabled */
+    ApiMac_mlmeSetReqUint8(ApiMac_attribute_rangeExtender,
+                           (uint8_t)CONFIG_RANGE_EXT_MODE);
+
+    /* linux specific init */
+    if(CONFIG_FH_ENABLE)
+    {
+        memcpy( chanMask, linux_FH_ASYNC_CHANNEL_MASK, sizeof( chanMask ));
+    }
+    else 
+    {
+        memcpy( chanMask, linux_CONFIG_CHANNEL_MASK, sizeof(chanMask));
+    }
+    coordInfoBlock.shortAddr = CONFIG_COORD_SHORT_ADDR;
     fhPAtrickleTime = CLLC_FH_MIN_TRICKLE;
     fhPCtrickleTime = CLLC_FH_MIN_TRICKLE;
 
-    /* Initialize coordinator information variables */
+    /* Initialize coordinator PAN ID if a valid value is defined in config */
     if((panId != 0x0000) && (panId != CLLC_INVALID_PAN))
     {
         coordInfoBlock.panID = panId;
     }
-    else
-    {
-        /* PAN ID in the config file is invalid so we assign a random value */
-        coordInfoBlock.panID = 0x0001;
-    }
-
-    coordInfoBlock.channel = CLLC_CHAN_LOWEST;
-    coordInfoBlock.shortAddr = CONFIG_COORD_SHORT_ADDR;
-    coordInfoBlock.currentCllcState = Cllc_states_initWaiting;
-    coordInfoBlock.currentCoordState = Cllc_coordStates_initialized;
 
     /* Save MAC API callback */
     memcpy(&macCallbacksCopy, pMacCbs, sizeof(ApiMac_callbacks_t));
@@ -311,26 +350,33 @@ void Cllc_init(ApiMac_callbacks_t *pMacCbs, Cllc_callbacks_t *pCllcCbs)
 
     /* overwrite callbacks with llc callbacks */
     pMacCbs->pAssocIndCb = assocIndCb;
-    pMacCbs->pBeaconNotifyIndCb = beaconNotifyIndCb;
-    pMacCbs->pScanCnfCb = scanCnfCb;
     pMacCbs->pStartCnfCb = startCnfCb;
     pMacCbs->pDisassociateIndCb = disassocIndCb;
-    pMacCbs->pWsAsyncIndCb = wsAsyncIndCb;
     pMacCbs->pDataIndCb = dataIndCb;
-    pMacCbs->pOrphanIndCb = orphanIndCb;
-
+    
+       if(!CONFIG_FH_ENABLE)
+    {
+           pMacCbs->pBeaconNotifyIndCb = beaconNotifyIndCb;
+        pMacCbs->pScanCnfCb = scanCnfCb;
+           pMacCbs->pOrphanIndCb = orphanIndCb;
+    }
+       else
+       {
+        pMacCbs->pWsAsyncIndCb = wsAsyncIndCb;
+    }
+               
     /* initialize association table */
     memset(Cllc_associatedDevList, 0xFF,
            (sizeof(Cllc_associated_devices_t) * CONFIG_MAX_DEVICES));
 
     ApiMac_mlmeSetReqBool(ApiMac_attribute_RxOnWhenIdle,true);
 
-    if(!CONFIG_FH_ENABLE)
-    {
-        /* set PIB items */
-        /* setup short address */
-        ApiMac_mlmeSetReqUint16(ApiMac_attribute_shortAddress,
+    /* set PIB items */
+    /* setup short address */
+    ApiMac_mlmeSetReqUint16(ApiMac_attribute_shortAddress,
                                 coordInfoBlock.shortAddr);
+       if(!CONFIG_FH_ENABLE)
+    {
         /* initialize join permit timer clock */
         Csf_initializeJoinPermitClock();
     }
@@ -354,6 +400,16 @@ void Cllc_init(ApiMac_callbacks_t *pMacCbs, Cllc_callbacks_t *pCllcCbs)
         ApiMac_mlmeSetFhReqUint8(ApiMac_FHAttribute_broadcastDwellInterval,
                                  CONFIG_DWELL_TIME);
 
+        /*
+         * set up the number of NON-sleep and sleep device
+         * the order is important. Need to set up the number of non-sleep first
+         */
+
+        ApiMac_mlmeSetFhReqUint8(ApiMac_FHAttribute_numNonSleepDevice,
+                                  FH_NUM_NON_SLEEPY_NEIGHBORS);
+        ApiMac_mlmeSetFhReqUint8(ApiMac_FHAttribute_numSleepDevice,
+                                  FH_NUM_SLEEPY_NEIGHBORS);
+
         /* set Exclude Channels */
         sizeOfChannelMask = sizeof(configChannelMask)/sizeof(uint8_t);
         if(sizeOfChannelMask > APIMAC_154G_CHANNEL_BITMAP_SIZ)
@@ -382,26 +438,11 @@ void Cllc_process(void)
     /* The LLC has an event */
     if(Cllc_events & CLLC_PA_EVT)
     {
-        if(CONFIG_DOUBLE_TRICKLE_TIMER)
-        {
-            if((2 * fhPAtrickleTime) < CLLC_FH_MAX_TRICKLE)
-            {
-                fhPAtrickleTime = 2 * fhPAtrickleTime;
-            }
-            else if(((2 * fhPAtrickleTime) == CLLC_FH_MAX_TRICKLE)
-                  || ((2 * fhPAtrickleTime) > CLLC_FH_MAX_TRICKLE))
-            {
-                fhPAtrickleTime = CLLC_FH_MAX_TRICKLE;
-            }
-            /* Reset trickle timer */
-            Csf_setTrickleClock(fhPAtrickleTime, ApiMac_wisunAsyncFrame_advertisement);
-        }
-        else
+        if(CONFIG_FH_ENABLE)
         {
-            fhPAtrickleTime = 0;
+            setTrickleTime(&fhPAtrickleTime,
+                           ApiMac_wisunAsyncFrame_advertisement);
         }
-        /* Process LLC Event */
-        sendAsyncReq(ApiMac_wisunAsyncFrame_advertisement);
 
         /* Clear the event */
         Util_clearEvent(&Cllc_events, CLLC_PA_EVT);
@@ -410,27 +451,10 @@ void Cllc_process(void)
     /* The LLC has an PC event */
     if(Cllc_events & CLLC_PC_EVT)
     {
-        if(CONFIG_DOUBLE_TRICKLE_TIMER)
-        {
-            if(2 * fhPCtrickleTime < CLLC_FH_MAX_TRICKLE)
-            {
-                fhPCtrickleTime = 2 * fhPCtrickleTime;
-            }
-            else if(((2 * fhPCtrickleTime) == CLLC_FH_MAX_TRICKLE)
-                  || ((2 * fhPCtrickleTime) > CLLC_FH_MAX_TRICKLE))
-            {
-                fhPCtrickleTime = CLLC_FH_MAX_TRICKLE;
-            }
-            /* Reset trickle timer */
-            Csf_setTrickleClock(fhPCtrickleTime,
-                                ApiMac_wisunAsyncFrame_config);
-        }
-        else
+        if(CONFIG_FH_ENABLE)
         {
-            fhPCtrickleTime = 0;
+            setTrickleTime(&fhPCtrickleTime, ApiMac_wisunAsyncFrame_config);
         }
-        /* Process LLC Event */
-        sendAsyncReq(ApiMac_wisunAsyncFrame_config);
 
         /* Clear the event */
         Util_clearEvent(&Cllc_events, CLLC_PC_EVT);
@@ -476,8 +500,17 @@ void Cllc_startNetwork(void)
     }
     else
     {
-        /* start energy scan to determine channel for start req */
-        switchState(Cllc_coordStates_scanActiveCnf);
+        uint8_t startChan = 0;
+        for(startChan = 0; startChan < APIMAC_154G_MAX_NUM_CHANNEL; startChan++)
+        {
+            if(CLLC_IS_CHANNEL_MASK_SET(chanMask, startChan))
+            {
+                coordInfoBlock.channel = startChan;
+                break;
+            }
+        }
+        /* start req */
+        switchState(Cllc_coordStates_scanEdCnf);
     }
 }
 
@@ -487,7 +520,7 @@ void Cllc_startNetwork(void)
  Public function defined in cllc.h
  */
 void Cllc_restoreNetwork(Llc_netInfo_t *pNetworkInfo, uint8_t numDevices,
-                         Llc_deviceListItem_t *pDevList)
+               Llc_deviceListItem_t *pDevList)
 {
     uint8_t i = 0;
 
@@ -500,9 +533,9 @@ void Cllc_restoreNetwork(Llc_netInfo_t *pNetworkInfo, uint8_t numDevices,
     if(pNetworkInfo->fh == true)
     {
         ApiMac_mlmeSetReqArray(ApiMac_attribute_extendedAddress,
-                               (uint8_t*)(pNetworkInfo->devInfo.extAddress));
+                       (uint8_t*)(pNetworkInfo->devInfo.extAddress));
        ApiMac_mlmeSetReqUint16(ApiMac_attribute_shortAddress,
-                                pNetworkInfo->devInfo.shortAddress);
+                                  pNetworkInfo->devInfo.shortAddress);
     }
     else
     {
@@ -565,21 +598,15 @@ void Cllc_removeDevice(ApiMac_sAddrExt_t *pExtAddr)
 
     if(shortAddr != CSF_INVALID_SHORT_ADDR)
     {
-        Cllc_associated_devices_t *pItem;
-
-        pItem = findDevice(shortAddr);
-        if(pItem)
+        for(i = 0; i < CONFIG_MAX_DEVICES; i++)
         {
-            for(i = 0; i < CONFIG_MAX_DEVICES; i++)
+            if(Cllc_associatedDevList[i].shortAddr == shortAddr)
             {
-                if(Cllc_associatedDevList[i].shortAddr == pItem->shortAddr)
-                {
-                    /* Clear the entry - delete */
-                    memset(&Cllc_associatedDevList[i], 0xFF,
-                           sizeof(Cllc_associated_devices_t));
-                    /* remove from NV */
-                    Csf_removeDeviceListItem(pExtAddr);
-                }
+                /* Clear the entry - delete */
+                memset(&Cllc_associatedDevList[i], 0xFF,
+                       sizeof(Cllc_associated_devices_t));
+                /* remove from NV */
+                Csf_removeDeviceListItem(pExtAddr);
             }
         }
     }
@@ -602,6 +629,7 @@ void Cllc_sendDisassociationRequest(void)
     ApiMac_mlmeDisassociateReq(&disassocReq);
 }
 
+#ifdef FEATURE_MAC_SECURITY
 /*!
  Initialize the MAC Security
 
@@ -613,8 +641,6 @@ void Cllc_securityInit(uint32_t frameCounter)
     {
         ApiMac_secAddKeyInitFrameCounter_t secInfo;
 
-        memset(&secInfo, 0, sizeof(ApiMac_secAddKeyInitFrameCounter_t));
-
         memcpy(secInfo.key, keyTable[0].key, APIMAC_KEY_MAX_LEN);
         secInfo.frameCounter = frameCounter;
         secInfo.replaceKeyIndex = 0;
@@ -649,8 +675,6 @@ void Cllc_securityFill(ApiMac_sec_t *pSec)
 {
     if(pSec)
     {
-        memset(pSec, 0, sizeof(ApiMac_sec_t));
-
         if(macSecurity == true)
         {
             memcpy(pSec->keySource, keyIdLookupList[0].lookupData,
@@ -703,13 +727,10 @@ ApiMac_status_t Cllc_addSecDevice(uint16_t panID, uint16_t shortAddr,
         ApiMac_secAddDevice_t device;
         uint8_t keyIndex = 0;
 
-        memset(&device, 0, sizeof(ApiMac_secAddDevice_t));
-
         device.panID = panID;
         device.shortAddr = shortAddr;
         memcpy(device.extAddr, pExtAddr, sizeof(ApiMac_sAddrExt_t));
         device.frameCounter = frameCounter;
-
         device.exempt = false;
 
         /* get the key lookup information from the initial loaded key */
@@ -727,7 +748,7 @@ ApiMac_status_t Cllc_addSecDevice(uint16_t panID, uint16_t shortAddr,
         return(ApiMac_status_success);
     }
 }
-
+#endif /* FEATURE_MAC_SECURITY */
 
 /******************************************************************************
  Local Functions
@@ -755,14 +776,20 @@ static void processState(Cllc_coord_states_t state)
     switch(state)
     {
         case Cllc_coordStates_scanActive:
+                   if(!CONFIG_FH_ENABLE)
+            {
             /* Active scan */
             sendScanReq(ApiMac_scantype_active);
-            break;
+            }
+                       break;
 
         case Cllc_coordStates_scanActiveCnf:
+                   if(!CONFIG_FH_ENABLE)
+            {
             /* Energy detect scan */
             sendScanReq(ApiMac_scantype_energyDetect);
-            break;
+            }
+                       break;
 
         case Cllc_coordStates_scanEdCnf:
 
@@ -788,8 +815,6 @@ static void processState(Cllc_coord_states_t state)
              */
             clearPANList();
 
-            memset(&networkInfo, 0, sizeof(Llc_netInfo_t));
-
             networkInfo.fh = CONFIG_FH_ENABLE;
             /* Setup basics */
             ApiMac_mlmeGetReqUint8(ApiMac_attribute_logicalChannel,
@@ -811,11 +836,6 @@ static void processState(Cllc_coord_states_t state)
                 Csf_setTrickleClock(CLLC_FH_MIN_TRICKLE + (CLLC_FH_MIN_TRICKLE/2),
                                     ApiMac_wisunAsyncFrame_config);
             }
-            else
-            {
-                ApiMac_mlmeGetReqUint8(ApiMac_attribute_logicalChannel,
-                                        &networkInfo.channel);
-            }
 
             /* Inform the application of a start */
             if(pCllcCallbacksCopy && pCllcCallbacksCopy->pStartedCb)
@@ -888,7 +908,7 @@ static void configureStartParam(uint8_t channel)
 static void scanCnfCb(ApiMac_mlmeScanCnf_t *pData)
 {
     if((pData->status == ApiMac_status_success) || (pData->status
-                                                    == ApiMac_status_noBeacon))
+                      == ApiMac_status_noBeacon))
     {
         if(pData->scanType == ApiMac_scantype_active)
         {
@@ -896,15 +916,9 @@ static void scanCnfCb(ApiMac_mlmeScanCnf_t *pData)
         }
         else if(pData->scanType == ApiMac_scantype_energyDetect)
         {
-            uint8_t *pEnergyRes = Csf_malloc(pData->resultListSize);
-            if(pEnergyRes)
-            {
-                memcpy(pEnergyRes, pData->result.pEnergyDetect,
-                       pData->resultListSize);
-                coordInfoBlock.channel = findBestChannel(pEnergyRes);
-                switchState(Cllc_coordStates_scanEdCnf);
-                Csf_free(pEnergyRes);
-            }
+            coordInfoBlock.channel
+                  = findBestChannel(pData->result.pEnergyDetect);
+            switchState(Cllc_coordStates_scanEdCnf);
         }
     }
     else
@@ -1089,11 +1103,18 @@ static void assocIndCb(ApiMac_mlmeAssociateInd_t *pData)
     ApiMac_mlmeAssociateRsp_t assocRsp;
 
     /* Setup the device information structure */
-    memcpy(&devInfo.extAddress, &pData->deviceAddress, (APIMAC_SADDR_EXT_LEN));
+    Util_copyExtAddr(&devInfo.extAddress, &pData->deviceAddress);
     devInfo.panID = coordInfoBlock.panID;
 
+#ifndef NV_RESTORE
+    /* If NV_RESTORE is disabled device gets a new short address every time it
+       joins i.e there may be duplicate entries in the Association table
+     */
+    devInfo.shortAddress = CSF_INVALID_SHORT_ADDR;
+#else
     /* Check to see if the device exists */
     devInfo.shortAddress = Csf_getDeviceShort(&pData->deviceAddress);
+#endif
     if(devInfo.shortAddress == CSF_INVALID_SHORT_ADDR)
     {
         /* New device, make a new short address */
@@ -1107,7 +1128,12 @@ static void assocIndCb(ApiMac_mlmeAssociateInd_t *pData)
             assocRsp.status = pCllcCallbacksCopy->pDeviceJoiningCb(&devInfo,
                                                  &pData->capabilityInformation);
         }
-
+#ifndef NV_RESTORE
+        if(Cllc_numOfDevices == CONFIG_MAX_DEVICES)
+        {
+            assocRsp.status = ApiMac_assocStatus_panAtCapacity;
+        }
+#endif
         if(assocRsp.status == ApiMac_assocStatus_success)
         {
             /* add to association table */
@@ -1123,8 +1149,7 @@ static void assocIndCb(ApiMac_mlmeAssociateInd_t *pData)
 
     /* Fill assoc rsp fields */
     memset(&assocRsp.sec, 0, sizeof(ApiMac_sec_t));
-    memcpy(&assocRsp.deviceAddress, &devInfo.extAddress,
-           (APIMAC_SADDR_EXT_LEN));
+    Util_copyExtAddr(&assocRsp.deviceAddress, &devInfo.extAddress);
     assocRsp.assocShortAddress = devInfo.shortAddress;
 
     /* Send response back to the device */
@@ -1174,38 +1199,26 @@ static void maintainAssocTable(ApiMac_deviceDescriptor_t *pDevInfo,
 {
     if(mode == false)
     {
+        Cllc_associated_devices_t *pItem;
         /* table is not filled yet */
         if(Cllc_numOfDevices < CONFIG_MAX_DEVICES)
         {
-            memset(&Cllc_associatedDevList[Cllc_numOfDevices], 0x00,
-                   sizeof(Cllc_associated_devices_t));
-            Cllc_associatedDevList[Cllc_numOfDevices].shortAddr = pDevInfo
-                            ->shortAddress;
-            memcpy(&Cllc_associatedDevList[Cllc_numOfDevices].capInfo, pCapInfo,
-                   sizeof(ApiMac_capabilityInfo_t));
-            Cllc_associatedDevList[Cllc_numOfDevices].rssi = rssi;
-            Cllc_associatedDevList[Cllc_numOfDevices].status |= status;
+            pItem = &Cllc_associatedDevList[Cllc_numOfDevices];
             Cllc_numOfDevices++;
         }
         else
         {
-            /* find a blank spot from a removed device in the table */
-            Cllc_associated_devices_t *pItem;
-
             /* look for an empty slot */
             pItem = findDevice(CSF_INVALID_SHORT_ADDR);
+        }
 
-            if(pItem != NULL)
-            {
-                memset(pItem, 0, sizeof(Cllc_associated_devices_t));
-
-                /* insert one of the blank spaces in the table */
-                pItem->shortAddr = pDevInfo->shortAddress;
-                memcpy(&pItem->capInfo, pCapInfo,
-                       sizeof(ApiMac_capabilityInfo_t));
-                pItem->rssi = rssi;
-                pItem->status |= status;
-            }
+        if(pItem != NULL)
+        {
+            /* insert one of the blank spaces in the table */
+            pItem->shortAddr = pDevInfo->shortAddress;
+            memcpy(&pItem->capInfo, pCapInfo, sizeof(ApiMac_capabilityInfo_t));
+            pItem->rssi = rssi;
+            pItem->status = status;
         }
     }
     else if(mode == true)
@@ -1219,7 +1232,7 @@ static void maintainAssocTable(ApiMac_deviceDescriptor_t *pDevInfo,
             if(pItem != NULL)
             {
                 pItem->rssi = rssi;
-                pItem->status |= status;
+                pItem->status = status;
             }
         }
     }
@@ -1237,67 +1250,76 @@ static void wsAsyncIndCb(ApiMac_mlmeWsAsyncInd_t *pData)
     uint8_t netname[32];
     bool netNameIEFound = false;
 
-        /* Parse group IEs */
-        status = ApiMac_parsePayloadGroupIEs(pData->pPayloadIE, pData->payloadIeLen,
-                                             &pPayloadGroupRec);
+    /* Parse group IEs */
+    status = ApiMac_parsePayloadGroupIEs(pData->pPayloadIE, pData->payloadIeLen,
+                                         &pPayloadGroupRec);
 
-        if((status == ApiMac_status_success) && (pPayloadGroupRec != NULL))
-        {
-            ApiMac_payloadIeRec_t *pGroup = pPayloadGroupRec;
+    if((status == ApiMac_status_success) && (pPayloadGroupRec != NULL))
+    {
+        ApiMac_payloadIeRec_t *pGroup = pPayloadGroupRec;
 
-            while(pGroup != NULL)
+        while(pGroup != NULL)
+        {
+            if(pGroup->item.ieId == ApiMac_payloadIEGroup_WiSUN)
             {
-                if(pGroup->item.ieId == ApiMac_payloadIEGroup_WiSUN)
+                ApiMac_payloadIeRec_t *pPayloadSubRec = NULL;
+
+                status = ApiMac_parsePayloadSubIEs(pGroup->item.pIEContent,
+                                                   pGroup->item.ieContentLen,
+                                                   &pPayloadSubRec);
+                if((status == ApiMac_status_success) &&
+                                (pPayloadSubRec!= NULL))
                 {
-                    ApiMac_payloadIeRec_t *pPayloadSubRec = NULL;
+                    ApiMac_payloadIeRec_t *pSubGroup = pPayloadSubRec;
 
-                    status = ApiMac_parsePayloadSubIEs(pGroup->item.pIEContent,
-                                                       pGroup->item.ieContentLen,
-                                                       &pPayloadSubRec);
-                    if((status == ApiMac_status_success) && (pPayloadSubRec!= NULL))
+                    while(pSubGroup != NULL)
                     {
-                        ApiMac_payloadIeRec_t *pSubGroup = pPayloadSubRec;
+                        uint8_t *pIEContent = pSubGroup->item.pIEContent;
 
-                        while(pSubGroup != NULL)
+                        switch(pSubGroup->item.ieId)
                         {
-                            uint8_t *pIEContent = pSubGroup->item.pIEContent;
-
-                            switch(pSubGroup->item.ieId)
-                            {
-                                case ApiMac_wisunSubIE_netNameIE:
-                                    if(pSubGroup->item.ieContentLen <=
-                                        APIMAC_FH_NET_NAME_SIZE_MAX)
-                                    {
-                                        memset(&netname, 0, APIMAC_FH_NET_NAME_SIZE_MAX);
-                                        memcpy(&netname, pIEContent, pSubGroup->item.ieContentLen);
-                                        netNameIEFound = true;
-                                    }
-                                    break;
-                                default:
-                                    break;
-                            }
-
-                            if(netNameIEFound)
-                            {
+                            case ApiMac_wisunSubIE_netNameIE:
+                                if(pSubGroup->item.ieContentLen <=
+                                    APIMAC_FH_NET_NAME_SIZE_MAX)
+                                {
+                                    memset(&netname, 0,
+                                           APIMAC_FH_NET_NAME_SIZE_MAX);
+                                    memcpy(&netname, pIEContent,
+                                           pSubGroup->item.ieContentLen);
+                                    netNameIEFound = true;
+                                }
+                                break;
+                            case ApiMac_wisunSubIE_USIE:
+                                processIncomingAsyncUSIE(pData->fhFrameType,
+                                                         pIEContent);
+                                break;
+                            default:
                                 break;
-                            }
-                            /* move to the next item*/
-                            pSubGroup = pSubGroup->pNext;
                         }
 
-                      /* Free the IE List allocated by ApiMac_parsePayloadSubIEs() */
-                        ApiMac_freeIEList(pPayloadSubRec);
+                        if(netNameIEFound)
+                        {
+                            break;
+                        }
+                        /* move to the next item*/
+                        pSubGroup = pSubGroup->pNext;
                     }
-                }
 
-                /* Move to next item*/
-                pGroup = pGroup->pNext;
+                  /* Free the IE List allocated by
+                     ApiMac_parsePayloadSubIEs()
+                   */
+                    ApiMac_freeIEList(pPayloadSubRec);
+                }
             }
 
-             /* Free the IE List allocated by ApiMac_parsePayloadGroupIEs() */
-            ApiMac_freeIEList(pPayloadGroupRec);
+            /* Move to next item*/
+            pGroup = pGroup->pNext;
         }
 
+         /* Free the IE List allocated by ApiMac_parsePayloadGroupIEs() */
+        ApiMac_freeIEList(pPayloadGroupRec);
+    }
+
     if((!netNameIEFound) ||
        (memcmp(netname, fhNetname, APIMAC_FH_NET_NAME_SIZE_MAX) != 0))
     {
@@ -1305,36 +1327,14 @@ static void wsAsyncIndCb(ApiMac_mlmeWsAsyncInd_t *pData)
         return;
     }
 
-    if(pData->fhFrameType == ApiMac_fhFrameType_panAdvertSolicit)
-    {
-        /* PAS is received , increment statistics */
-        Cllc_statistics.fhNumPASolicitReceived++;
-        if (fhPAtrickleTime != CLLC_FH_MIN_TRICKLE)
-        {
-            fhPAtrickleTime = CLLC_FH_MIN_TRICKLE;
-            /* reset trickle timer */
-            Csf_setTrickleClock(fhPAtrickleTime,
-                                ApiMac_wisunAsyncFrame_advertisement);
-        }
-        /* Add EUI to security device table */
-        Cllc_addSecDevice(pData->srcPanId, pData->srcAddr.addr.shortAddr,
-                          &(pData->srcAddr.addr.extAddr), pData->frameCntr);
-    }
-    else if(pData->fhFrameType == ApiMac_fhFrameType_configSolicit)
-    {
-        /* PCS is received , increment statistics */
-        Cllc_statistics.fhNumPANConfigSolicitsReceived++;
-        if (fhPCtrickleTime != CLLC_FH_MIN_TRICKLE)
-        {
-            fhPCtrickleTime = CLLC_FH_MIN_TRICKLE;
-            /* reset trickle timer */
-            Csf_setTrickleClock(fhPCtrickleTime,
-                                ApiMac_wisunAsyncFrame_config);
-        }
-        /* Add EUI to security device table */
-        Cllc_addSecDevice(pData->srcPanId, pData->srcAddr.addr.shortAddr,
-                          &(pData->srcAddr.addr.extAddr), pData->frameCntr);
-    }
+    processIncomingFHframe(pData->fhFrameType);
+
+#ifdef FEATURE_MAC_SECURITY
+    /* Add EUI to security device table */
+    Cllc_addSecDevice(pData->srcPanId, pData->srcAddr.addr.shortAddr,
+                      &(pData->srcAddr.addr.extAddr), pData->frameCntr);
+#endif /* FEATURE_MAC_SECURITY */
+
 
     if(macCallbacksCopy.pWsAsyncIndCb != NULL)
     {
@@ -1400,8 +1400,7 @@ static void orphanIndCb(ApiMac_mlmeOrphanInd_t *pData)
         ApiMac_mlmeOrphanRsp_t orphanRsp;
 
         /* send orphan response */
-        memcpy(&orphanRsp.orphanAddress, &item.devInfo.extAddress,
-               (APIMAC_SADDR_EXT_LEN));
+        Util_copyExtAddr(&orphanRsp.orphanAddress, &item.devInfo.extAddress);
         memset(&orphanRsp.sec, 0, sizeof(ApiMac_sec_t));
         orphanRsp.associatedMember = true;
         orphanRsp.shortAddress = item.devInfo.shortAddress;
@@ -1449,9 +1448,41 @@ static void sendAsyncReq(uint8_t frameType)
         sizeOfChannelMask = APIMAC_154G_CHANNEL_BITMAP_SIZ;
     }
     memset(asyncReq.channels, 0, (APIMAC_154G_CHANNEL_BITMAP_SIZ));
+    memcpy(asyncReq.channels, asyncChannelMask, sizeOfChannelMask);
 
     asyncReq.operation = ApiMac_wisunAsycnOperation_start;
-    memcpy(asyncReq.channels, asyncChannelMask, sizeOfChannelMask);
+
+    if(frameType ==  ApiMac_wisunAsyncFrame_advertisement)
+    {
+        if((optAsyncFlag & PA_FIXED_NEIGHBOR_FOUND_MASK)
+            &&  !(optAsyncFlag & PA_HOP_NEIGHBOR_FOUND_MASK))
+        {
+            memset(asyncReq.channels, 0, (APIMAC_154G_CHANNEL_BITMAP_SIZ));
+            memcpy(asyncReq.channels, optPAChMask,
+                   (APIMAC_154G_CHANNEL_BITMAP_SIZ));
+        }
+        /* clear the optimal PA Async Config */
+        memset(optPAChMask, 0, (APIMAC_154G_CHANNEL_BITMAP_SIZ));
+        optAsyncFlag &= ~PA_FIXED_NEIGHBOR_FOUND_MASK;
+        optAsyncFlag &= ~PA_HOP_NEIGHBOR_FOUND_MASK;
+    }
+    else if(frameType ==  ApiMac_wisunAsyncFrame_config)
+    {
+        if((optAsyncFlag & PC_FIXED_NEIGHBOR_FOUND_MASK)
+           &&  !(optAsyncFlag & PC_HOP_NEIGHBOR_FOUND_MASK))
+        {
+            memset(asyncReq.channels, 0, (APIMAC_154G_CHANNEL_BITMAP_SIZ));
+            memcpy(asyncReq.channels, optPCChMask,
+                   (APIMAC_154G_CHANNEL_BITMAP_SIZ));
+        }
+        /* clear the optimal PC Async Config */
+        memset(optPCChMask, 0, (APIMAC_154G_CHANNEL_BITMAP_SIZ));
+        optAsyncFlag &= ~PC_FIXED_NEIGHBOR_FOUND_MASK;
+        optAsyncFlag &= ~PC_HOP_NEIGHBOR_FOUND_MASK;
+    }
+
+    /* no security for PA */
+    memset(&asyncReq.sec, 0, sizeof(ApiMac_sec_t));
 
     /* send PA or PC according to frame type */
     if(frameType == ApiMac_wisunAsyncFrame_advertisement)
@@ -1465,16 +1496,14 @@ static void sendAsyncReq(uint8_t frameType)
                                  (CLLC_FH_EAPOL_READY));
         ApiMac_mlmeSetFhReqUint8(ApiMac_FHAttribute_fanTPSVersion,
                                  (CLLC_FH_FANTPSVERSION));
-        ApiMac_mlmeSetFhReqArray(ApiMac_FHAttribute_netName,&fhNetname[0]);
+        ApiMac_mlmeSetFhReqArray(ApiMac_FHAttribute_netName,
+                                 (uint8_t*)&fhNetname[0]);
         ApiMac_mlmeSetFhReqUint16(ApiMac_FHAttribute_panSize,
                                   (CONFIG_FH_PAN_SIZE));
 
         /* Fill in the information for async request */
         asyncReq.frameType = ApiMac_wisunAsyncFrame_advertisement;
 
-        /* no security for PA */
-        memset(&asyncReq.sec, 0, sizeof(ApiMac_sec_t));
-
         Cllc_statistics.fhNumPASent++;
 
     }
@@ -1484,20 +1513,22 @@ static void sendAsyncReq(uint8_t frameType)
         ApiMac_mlmeSetFhReqUint16(ApiMac_FHAttribute_panVersion,
                                   (CLLC_FH_PANVERSION));
         ApiMac_mlmeSetFhReqArray(ApiMac_FHAttribute_gtk0Hash,
-                                 fhGtkHash0);
+                                 (uint8_t*)fhGtkHash0);
         ApiMac_mlmeSetFhReqArray(ApiMac_FHAttribute_gtk1Hash,
-                                 fhGtkHash1);
+                                 (uint8_t*)fhGtkHash1);
         ApiMac_mlmeSetFhReqArray(ApiMac_FHAttribute_gtk2Hash,
-                                 fhGtkHash2);
+                                 (uint8_t*)fhGtkHash2);
         ApiMac_mlmeSetFhReqArray(ApiMac_FHAttribute_gtk3Hash,
-                                 fhGtkHash3);
+                                 (uint8_t*)fhGtkHash3);
 
         /* Fill in the information for async request */
         asyncReq.operation = ApiMac_wisunAsycnOperation_start;
         asyncReq.frameType = ApiMac_wisunAsyncFrame_config;
 
+#ifdef FEATURE_MAC_SECURITY
         /* security for PC */
         Cllc_securityFill(&asyncReq.sec);
+#endif /* FEATURE_MAC_SECURITY */
 
         Cllc_statistics.fhNumPANConfigSent++;
 
@@ -1574,6 +1605,121 @@ static void sendScanReq(ApiMac_scantype_t type)
     ApiMac_mlmeScanReq(&scanReq);
 }
 
+/*!
+ * @brief       Set Trickle time
+ *
+ * @param       pTrickleTime - pointer to trickle time duration variable type
+ *                            fhPAtrickleTime or fhPCtrickleTime
+ * @param       frameType   - type of FH frame to be sent
+ */
+static void setTrickleTime(uint32_t *pTrickleTime, uint8_t frameType)
+{
+    if(CONFIG_DOUBLE_TRICKLE_TIMER)
+    {
+        if((2 * (*pTrickleTime)) < CLLC_FH_MAX_TRICKLE)
+        {
+            *pTrickleTime = 2 * (*pTrickleTime);
+        }
+        else if(((2 * (*pTrickleTime)) == CLLC_FH_MAX_TRICKLE) ||
+               ((2 * (*pTrickleTime)) > CLLC_FH_MAX_TRICKLE))
+        {
+            (*pTrickleTime) = CLLC_FH_MAX_TRICKLE;
+        }
+        /* Reset trickle timer */
+        Csf_setTrickleClock((*pTrickleTime),frameType);
+    }
+    else
+    {
+        *pTrickleTime = 0;
+    }
+    /* Process LLC Event */
+    sendAsyncReq(frameType);
+}
+
+/*!
+ * @brief       Process incoming FH frame
+ *
+ * @param       frameType   - type of FH frame to be sent
+ */
+static void processIncomingFHframe(uint8_t frameType)
+{
+
+    if(frameType == ApiMac_fhFrameType_panAdvertSolicit)
+    {
+        if(fhPAtrickleTime != CLLC_FH_MIN_TRICKLE)
+        {
+            fhPAtrickleTime = CLLC_FH_MIN_TRICKLE;
+            /* reset trickle timer only if trickleTime not at Min */
+            Csf_setTrickleClock(fhPAtrickleTime,
+                                ApiMac_wisunAsyncFrame_advertisement);
+        }
+        /* PAS is received , increment statistics */
+        Cllc_statistics.fhNumPASolicitReceived++;
+    }
+    else if(frameType == ApiMac_fhFrameType_configSolicit)
+    {
+        if(fhPCtrickleTime != CLLC_FH_MIN_TRICKLE)
+        {
+            fhPCtrickleTime = CLLC_FH_MIN_TRICKLE;
+            /* reset trickle timer only if trickleTime not at Min */
+            Csf_setTrickleClock(fhPCtrickleTime,
+                                ApiMac_wisunAsyncFrame_config);
+        }
+        /* PCS is received , increment statistics */
+        Cllc_statistics.fhNumPANConfigSolicitsReceived++;
+    }
+}
+
+/*!
+ * @brief       Process incoming Async US IE content
+ *
+ * @param       pIEContent   - Pointer to USIE Content
+ */
+static void processIncomingAsyncUSIE(uint8_t frameType, uint8_t* pIEContent)
+{
+    uint8_t channelInfo = *(pIEContent + 3);
+    uint8_t chPlan = channelInfo & 7;
+    uint8_t chFn = (channelInfo >> 3) & 7;
+    uint16_t fixedChannel = 0xFFFF;
+    /* Check if channel function is fixed (sleepy device) */
+    if (chFn == 0)
+    {
+        /* Check if channel plan is based on REG_DOMAIN */
+        if (chPlan == 0)
+        {
+            fixedChannel = Util_parseUint16(pIEContent + 6);
+        }
+        else
+        {
+            fixedChannel = Util_parseUint16(pIEContent + 8);
+        }
+        if(fixedChannel < APIMAC_154G_MAX_NUM_CHANNEL)
+        {
+            if(frameType == ApiMac_fhFrameType_panAdvertSolicit)
+            {
+                optAsyncFlag |= PA_FIXED_NEIGHBOR_FOUND_MASK;
+                CLLC_SET_CHANNEL(optPAChMask,fixedChannel);
+            }
+            else if(frameType == ApiMac_fhFrameType_configSolicit)
+            {
+                optAsyncFlag |= PC_FIXED_NEIGHBOR_FOUND_MASK;
+                CLLC_SET_CHANNEL(optPCChMask,fixedChannel);
+            }
+        }
+    }
+    else
+    {
+        if(frameType == ApiMac_fhFrameType_panAdvertSolicit)
+        {
+            optAsyncFlag |= PA_HOP_NEIGHBOR_FOUND_MASK;
+        }
+        else if(frameType == ApiMac_fhFrameType_configSolicit)
+        {
+            optAsyncFlag |= PC_HOP_NEIGHBOR_FOUND_MASK;
+        }
+    }
+}
+
 /*
  *  ========================================
  *  Texas Instruments Micro Controller Style
@@ -1587,4 +1733,3 @@ static void sendScanReq(ApiMac_scantype_t type)
  *  End:
  *  vim:set  filetype=c tabstop=4 shiftwidth=4 expandtab=true
  */
-
index 32f0cbb435dcee69ac0bcc0fb53a9d1aa4059f7f..7ac92476e40b052eefd442942e584b16159f11d5 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef CLLC_H
 #define CLLC_H
@@ -77,6 +77,12 @@ extern "C"
 /*! Association status */
 #define CLLC_ASSOC_STATUS_ALIVE 0x0001
 
+#if ((CONFIG_PHY_ID >= APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN + 1) && (CONFIG_PHY_ID <= APIMAC_MRFSK_GENERIC_PHY_ID_END))
+#define LRM_MODE  1
+#else
+#define LRM_MODE  0
+#endif
+
 /*!
  Coordinator State Values
  */
@@ -247,7 +253,7 @@ extern void Cllc_startNetwork(void);
  * @param       pDevList - list of devices
  */
 extern void Cllc_restoreNetwork(Llc_netInfo_t *pNetworkInfo, uint8_t numDevices,
-                                Llc_deviceListItem_t *pDevList);
+               Llc_deviceListItem_t *pDevList);
 /*!
  * @brief       Remove device from the network.
  *              <BR>
index c30bd8903ccef4b63f98a546c5ad761284f8fc72..473e1867f44a008597961fca91b1236a8248c044 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 syntax = "proto2";
index 0d23ee886a633b4ef4df5022e11628a5f4f361b1..ff1ed21a9bd5cbd73d563104d85f409f242d52d6 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 /******************************************************************************
@@ -77,9 +77,6 @@
 /* beacon order for non beacon network */
 #define NON_BEACON_ORDER      15
 
-/* MAC Indirect Persistent Timeout */
-#define INDIRECT_PERSISTENT_TIME 750
-
 /* default MSDU Handle rollover */
 #define MSDU_HANDLE_MAX 0x3F
 
                               Smsgs_dataFields_lightSensor | \
                               Smsgs_dataFields_humiditySensor | \
                               Smsgs_dataFields_pressureSensor | \
+                              Smsgs_dataFields_motionSensor   | \
+                              Smsgs_dataFields_batteryVoltageSensor | \
                               Smsgs_dataFields_msgStats | \
                               Smsgs_dataFields_configSettings)
 
+#if ((CONFIG_PHY_ID >= APIMAC_MRFSK_STD_PHY_ID_BEGIN) && (CONFIG_PHY_ID <= APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN))
+/* MAC Indirect Persistent Timeout */
+#define INDIRECT_PERSISTENT_TIME 750   
 /* Default configuration reporting interval, in milliseconds */
-#define CONFIG_REPORTING_INTERVAL 90000
+#define CONFIG_REPORTING_INTERVAL_DEFAULT 90000
 
 /* Default configuration polling interval, in milliseconds */
-#define CONFIG_POLLING_INTERVAL 6000
+#define CONFIG_POLLING_INTERVAL_DEFAULT 6000
 
 /* Delay for config request retry in busy network */
 #define CONFIG_DELAY 1000
 #define TRACKING_CNF_DELAY_TIME 2000 /* in milliseconds */
 #define TRACKING_DELAY_TIME 60000 /* in milliseconds */
 #define TRACKING_TIMEOUT_TIME (CONFIG_POLLING_INTERVAL * 2) /*in milliseconds*/
+#else
+/* MAC Indirect Persistent Timeout
+ * This is in units of aBaseSuperframeDuration.
+ * It will be scaled accordingly for beacon mode.
+ * */
+#define INDIRECT_PERSISTENT_TIME 3750
+/* Default configuration reporting interval, in milliseconds */
+#define CONFIG_REPORTING_INTERVAL_DEFAULT 300000
+
+/* Default configuration polling interval, in milliseconds */
+#define CONFIG_POLLING_INTERVAL_DEFAULT 60000
+
+/* Delay for config request retry in busy network */
+#define CONFIG_DELAY 5000
+#define CONFIG_RESPONSE_DELAY 3*CONFIG_DELAY
+/* Tracking timeouts */
+#define TRACKING_CNF_DELAY_TIME 10000 /* in milliseconds */
+#define TRACKING_DELAY_TIME 300000 /* in milliseconds */
+#define TRACKING_TIMEOUT_TIME (CONFIG_POLLING_INTERVAL_DEFAULT * 2) /*in milliseconds*/
+#endif
+
+int linux_CONFIG_REPORTING_INTERVAL = CONFIG_REPORTING_INTERVAL_DEFAULT;
+#define CONFIG_REPORTING_INTERVAL linux_CONFIG_REPORTING_INTERVAL
+int linux_CONFIG_POLLING_INTERVAL = CONFIG_POLLING_INTERVAL_DEFAULT;
+#define CONFIG_POLLING_INTERVAL linux_CONFIG_POLLING_INTERVAL
 
 /* Assoc Table (CLLC) status settings */
 #define ASSOC_CONFIG_SENT       0x0100    /* Config Req sent */
@@ -169,7 +196,7 @@ static void processSensorData(ApiMac_mcpsDataInd_t *pDataInd);
 static Cllc_associated_devices_t *findDevice(ApiMac_sAddr_t *pAddr);
 static Cllc_associated_devices_t *findDeviceStatusBit(uint16_t mask, uint16_t statusBit);
 static uint8_t getMsduHandle(Smsgs_cmdIds_t msgType);
-static void sendMsg(Smsgs_cmdIds_t type, uint16_t dstShortAddr, bool rxOnIdle,
+static bool sendMsg(Smsgs_cmdIds_t type, uint16_t dstShortAddr, bool rxOnIdle,
                     uint16_t len,
                     uint8_t *pData);
 static void generateConfigRequests(void);
@@ -262,8 +289,15 @@ void Collector_init(void)
     Csf_init(sem);
 
     /* Set the indirect persistent timeout */
-    ApiMac_mlmeSetReqUint16(ApiMac_attribute_transactionPersistenceTime,
+/*#if (CONFIG_MAC_BEACON_ORDER_DEFAULT != NON_BEACON_ORDER_DEFAULT)
+/    ApiMac_mlmeSetReqUint16(ApiMac_attribute_transactionPersistenceTime,
+                            (INDIRECT_PERSISTENT_TIME >> CONFIG_MAC_BEACON_ORDER));
+#else
+*/    ApiMac_mlmeSetReqUint16(ApiMac_attribute_transactionPersistenceTime,
                             INDIRECT_PERSISTENT_TIME);
+/*#endif*/
+
+
     ApiMac_mlmeSetReqUint8(ApiMac_attribute_phyTransmitPowerSigned,
                            (uint8_t)CONFIG_TRANSMIT_POWER);
 
@@ -370,14 +404,20 @@ Collector_status_t Collector_sendConfigRequest(ApiMac_sAddr_t *pDstAddr,
             *pBuf++ = Util_breakUint32(pollingInterval, 2);
             *pBuf = Util_breakUint32(pollingInterval, 3);
 
-            sendMsg(Smsgs_cmdIds_configReq, item.devInfo.shortAddress,
-                    item.capInfo.rxOnWhenIdle,
-                    (SMSGS_CONFIG_REQUEST_MSG_LENGTH),
-                    buffer);
-            status = Collector_status_success;
-            Collector_statistics.configRequestAttempts++;
-            /* set timer for retry in case response is not received */
-            Csf_setConfigClock(CONFIG_DELAY);
+            if((sendMsg(Smsgs_cmdIds_configReq, item.devInfo.shortAddress,
+                        item.capInfo.rxOnWhenIdle,
+                        (SMSGS_CONFIG_REQUEST_MSG_LENGTH),
+                         buffer)) == true)
+            {
+                status = Collector_status_success;
+                Collector_statistics.configRequestAttempts++;
+                /* set timer for retry in case response is not received */
+                Csf_setConfigClock(CONFIG_DELAY);
+            }
+            else
+            {
+                processConfigRetry();
+            }
         }
     }
 
@@ -495,10 +535,12 @@ static ApiMac_assocStatus_t cllcDeviceJoiningCB(
         status = Csf_deviceUpdate(pDevInfo, pCapInfo);
         if(status==ApiMac_assocStatus_success)
         {
+#ifdef FEATURE_MAC_SECURITY
             /* Add device to security device table */
             Cllc_addSecDevice(pDevInfo->panID,
                               pDevInfo->shortAddress,
                               &pDevInfo->extAddress, 0);
+#endif /* FEATURE_MAC_SECURITY */
 
             Util_setEvent(&Collector_events, COLLECTOR_CONFIG_EVT);
         }
@@ -644,11 +686,13 @@ static void dataIndCB(ApiMac_mcpsDataInd_t *pDataInd)
     {
         Smsgs_cmdIds_t cmdId = (Smsgs_cmdIds_t)*(pDataInd->msdu.p);
 
+#ifdef FEATURE_MAC_SECURITY
         if(Cllc_securityCheck(&(pDataInd->sec)) == false)
         {
             /* reject the message */
             return;
         }
+#endif /* FEATURE_MAC_SECURITY */
 
         if(pDataInd->srcAddr.addrMode == ApiMac_addrType_extended)
         {
@@ -684,6 +728,10 @@ static void dataIndCB(ApiMac_mcpsDataInd_t *pDataInd)
             case Smsgs_cmdIds_sensorData:
                 processSensorData(pDataInd);
                 break;
+                               
+            case Smsgs_cmdIds_rampdata:
+                Collector_statistics.sensorMessagesReceived++;
+                break;
 
             default:
                 /* Should not receive other messages */
@@ -698,18 +746,19 @@ static void dataIndCB(ApiMac_mcpsDataInd_t *pDataInd)
 static void processStartEvent(void)
 {
     Llc_netInfo_t netInfo;
+    uint32_t frameCounter = 0;
 
+    Csf_getFrameCounter(NULL, &frameCounter);
     /* See if there is existing network information */
     if(Csf_getNetworkInformation(&netInfo))
     {
         Llc_deviceListItem_t *pDevList = NULL;
         uint16_t numDevices = 0;
-        uint32_t frameCounter = 0;
-
-        Csf_getFrameCounter(NULL, &frameCounter);
 
+#ifdef FEATURE_MAC_SECURITY
         /* Initialize the MAC Security */
         Cllc_securityInit(frameCounter);
+#endif /* FEATURE_MAC_SECURITY */
 
         numDevices = Csf_getNumDeviceListEntries();
         if (numDevices > 0)
@@ -727,11 +776,13 @@ static void processStartEvent(void)
                 {
                     Csf_getDeviceItem(i, pItem);
 
+#ifdef FEATURE_MAC_SECURITY
                     /* Add device to security device table */
                     Cllc_addSecDevice(pItem->devInfo.panID,
                                       pItem->devInfo.shortAddress,
                                       &pItem->devInfo.extAddress,
                                       pItem->rxFrameCounter);
+#endif /* FEATURE_MAC_SECURITY */
                 }
             }
             else
@@ -754,8 +805,10 @@ static void processStartEvent(void)
     {
         restarted = false;
 
+#ifdef FEATURE_MAC_SECURITY
         /* Initialize the MAC Security */
-        Cllc_securityInit(0);
+        Cllc_securityInit(frameCounter);
+#endif /* FEATURE_MAC_SECURITY */
 
         /* Start a new netork */
         Cllc_startNetwork();
@@ -911,6 +964,37 @@ static void processSensorData(ApiMac_mcpsDataInd_t *pDataInd)
         pBuf += 2;
     }
 
+    if(sensorData.frameControl & Smsgs_dataFields_pressureSensor)
+    {
+        pBuf += 4;
+        sensorData.pressureSensor.pressureValue = Util_buildUint32(pBuf[0],
+                                                                     pBuf[1],
+                                                                     pBuf[2],
+                                                                     pBuf[3]);
+        pBuf +=4;
+        sensorData.pressureSensor.tempValue =  Util_buildUint32(pBuf[0],
+                                                                     pBuf[1],
+                                                                     pBuf[2],
+                                                                     pBuf[3]);                                          
+    }
+
+    if(sensorData.frameControl & Smsgs_dataFields_motionSensor)
+    {
+     
+      sensorData.motionSensor.isMotion = pBuf[0];
+      pBuf += 1;
+    }
+
+    if(sensorData.frameControl & Smsgs_dataFields_batteryVoltageSensor)
+    {
+      
+      sensorData.batterySensor.voltageValue = Util_buildUint32(pBuf[0],
+                                                                     pBuf[1],
+                                                                     pBuf[2],
+                                                                     pBuf[3]);
+      pBuf +=4;
+    }
+
     if(sensorData.frameControl & Smsgs_dataFields_msgStats)
     {
         sensorData.msgStats.joinAttempts = Util_buildUint16(pBuf[0], pBuf[1]);
@@ -979,21 +1063,6 @@ static void processSensorData(ApiMac_mcpsDataInd_t *pDataInd)
                                                                      pBuf[2],
                                                                      pBuf[3]);
     }
-#ifdef SENSOR_TAG_SUPPORT
-    if(sensorData.frameControl & Smsgs_dataFields_pressureSensor)
-    {
-        pBuf += 4;
-        sensorData.pressureSensor.pressureValue = Util_buildUint32(pBuf[0],
-                                                                     pBuf[1],
-                                                                     pBuf[2],
-                                                                     pBuf[3]);
-        pBuf +=4;
-        sensorData.pressureSensor.tempValue =  Util_buildUint32(pBuf[0],
-                                                                     pBuf[1],
-                                                                     pBuf[2],
-                                                                     pBuf[3]);                                          
-    }
-#endif
 
     Collector_statistics.sensorMessagesReceived++;
 
@@ -1117,8 +1186,10 @@ static uint8_t getMsduHandle(Smsgs_cmdIds_t msgType)
  * @param      rxOnIdle - true if not a sleepy device
  * @param      len - length of payload
  * @param      pData - pointer to the buffer
+ *
+ * @return  true if sent, false if not
  */
-static void sendMsg(Smsgs_cmdIds_t type, uint16_t dstShortAddr, bool rxOnIdle,
+static bool sendMsg(Smsgs_cmdIds_t type, uint16_t dstShortAddr, bool rxOnIdle,
                     uint16_t len,
                     uint8_t *pData)
 {
@@ -1131,7 +1202,7 @@ static void sendMsg(Smsgs_cmdIds_t type, uint16_t dstShortAddr, bool rxOnIdle,
     dataReq.dstAddr.addr.shortAddr = dstShortAddr;
     dataReq.srcAddrMode = ApiMac_addrType_short;
 
-    if(fhEnabled)
+    if(fhEnabled && !LRM_MODE)
     {
         Llc_deviceListItem_t item;
 
@@ -1146,7 +1217,7 @@ static void sendMsg(Smsgs_cmdIds_t type, uint16_t dstShortAddr, bool rxOnIdle,
         else
         {
             /* Can't send the message */
-            return;
+            return (false);
         }
     }
 
@@ -1163,11 +1234,21 @@ static void sendMsg(Smsgs_cmdIds_t type, uint16_t dstShortAddr, bool rxOnIdle,
     dataReq.msdu.len = len;
     dataReq.msdu.p = pData;
 
+#ifdef FEATURE_MAC_SECURITY
     /* Fill in the appropriate security fields */
     Cllc_securityFill(&dataReq.sec);
+#endif /* FEATURE_MAC_SECURITY */
 
     /* Send the message */
-    ApiMac_mcpsDataReq(&dataReq);
+    if(ApiMac_mcpsDataReq(&dataReq) != ApiMac_status_success)
+    {
+        /*  transaction overflow occurred */
+        return (false);
+    }
+    else
+    {
+        return (true);
+    }
 }
 
 /*!
@@ -1178,6 +1259,13 @@ static void generateConfigRequests(void)
 {
     int x;
 
+    if(CERTIFICATION_TEST_MODE)
+    {
+        /* In Certification mode only back to back uplink
+         * data traffic shall be supported*/
+        return;
+    }
+
     /* Clear any timed out transactions */
     for(x = 0; x < CONFIG_MAX_DEVICES; x++)
     {
@@ -1253,6 +1341,12 @@ static void generateTrackingRequests(void)
     /* Run through all of the devices, looking for previous activity */
     for(x = 0; x < CONFIG_MAX_DEVICES; x++)
     {
+        if(CERTIFICATION_TEST_MODE)
+        {
+            /* In Certification mode only back to back uplink
+             * data traffic shall be supported*/
+            return;
+        }
         /* Make sure the entry is valid. */
         if((Cllc_associatedDevList[x].shortAddr != CSF_INVALID_SHORT_ADDR)
              && (Cllc_associatedDevList[x].status & CLLC_ASSOC_STATUS_ALIVE))
@@ -1344,17 +1438,14 @@ static void generateTrackingRequests(void)
                     }
                 }
 
-                /* Was device found? */
-                if(pDev)
-                {
-                    sendTrackingRequest(pDev);
-                }
-                else
+                if(pDev == NULL)
                 {
-                    /* No device found, Setup delay for next tracking message */
-                    Csf_setTrackingClock(TRACKING_DELAY_TIME);
+                    /* Another device wasn't found, send to same device */
+                    pDev = &Cllc_associatedDevList[x];
                 }
 
+                sendTrackingRequest(pDev);
+
                 /* Only do one at a time */
                 return;
             }
@@ -1390,19 +1481,27 @@ static void sendTrackingRequest(Cllc_associated_devices_t *pDev)
     uint8_t cmdId = Smsgs_cmdIds_trackingReq;
 
     /* Send the Tracking Request */
-    sendMsg(Smsgs_cmdIds_trackingReq, pDev->shortAddr,
+   if((sendMsg(Smsgs_cmdIds_trackingReq, pDev->shortAddr,
             pDev->capInfo.rxOnWhenIdle,
             (SMSGS_TRACKING_REQUEST_MSG_LENGTH),
-            &cmdId);
-
-    /* Mark as Tracking Request sent */
-    pDev->status |= ASSOC_TRACKING_SENT;
+            &cmdId)) == true)
+    {
+        /* Mark as Tracking Request sent */
+        pDev->status |= ASSOC_TRACKING_SENT;
 
-    /* Setup Timeout for response */
-    Csf_setTrackingClock(TRACKING_TIMEOUT_TIME);
+        /* Setup Timeout for response */
+        Csf_setTrackingClock(TRACKING_TIMEOUT_TIME);
 
-    /* Update stats */
-    Collector_statistics.trackingRequestAttempts++;
+        /* Update stats */
+        Collector_statistics.trackingRequestAttempts++;
+    }
+    else
+    {
+        ApiMac_sAddr_t devAddr;
+        devAddr.addrMode = ApiMac_addrType_short;
+        devAddr.addr.shortAddr = pDev->shortAddr;
+        processDataRetry(&devAddr);
+    }
 }
 
 /*!
@@ -1463,27 +1562,25 @@ static void processDataRetry(ApiMac_sAddr_t *pAddr)
         pItem = findDevice(pAddr);
         if(pItem)
         {
-            if((pItem->status & CLLC_ASSOC_STATUS_ALIVE) == 0)
-            {
-                /* It was missing */
-                pItem->status |= CLLC_ASSOC_STATUS_ALIVE;
+            /* Set device status to alive */
+            pItem->status |= CLLC_ASSOC_STATUS_ALIVE;
 
-                /* Check to see if we need to send it a config */
-                if((pItem->status & (ASSOC_CONFIG_RSP | ASSOC_CONFIG_SENT
-                   | ASSOC_TRACKING_SENT| ASSOC_TRACKING_RETRY)) == 0)
+            /* Check to see if we need to send it a config */
+            if((pItem->status & (ASSOC_CONFIG_RSP | ASSOC_CONFIG_SENT)) == 0)
+            {
+                processConfigRetry();
+            }
+            /* Check to see if we need to send it a tracking message */
+            if((pItem->status & (ASSOC_TRACKING_SENT| ASSOC_TRACKING_RETRY)) == 0)
+            {
+                /* Make sure we aren't already doing a tracking message */
+                if(((Collector_events & COLLECTOR_TRACKING_TIMEOUT_EVT) == 0)
+                    && (Csf_isTrackingTimerActive() == false)
+                    && (findDeviceStatusBit(ASSOC_TRACKING_MASK,
+                                            ASSOC_TRACKING_SENT) == NULL))
                 {
-                    if(CONFIG_MAC_BEACON_ORDER != NON_BEACON_ORDER)
-                    {
-                        /* Make sure we aren't already doing a tracking message */
-                        if(((Collector_events & ASSOC_TRACKING_SENT) == 0)
-                              && (findDeviceStatusBit(ASSOC_TRACKING_MASK,
-                              ASSOC_TRACKING_SENT) == NULL))
-                        {
-                            /* Setup for next tracking */
-                            Csf_setTrackingClock( TRACKING_DELAY_TIME);
-                        }
-                    }
-                    processConfigRetry();
+                    /* Setup for next tracking */
+                    Csf_setTrackingClock(TRACKING_DELAY_TIME);
                 }
             }
         }
index 38aa3b9fc29ceb1815362d2d7ee6689603d21353..515355936e020927fb7dfb5264bb23e6a26ed312 100644 (file)
@@ -39,8 +39,8 @@
 ;   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 ;   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; $Release Name: TI-15.4Stack Linux x64 SDK$
-; $Release Date: July 14, 2016 (2.00.00.30)$
+; $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+; $Release Date: Mar 08, 2017 (2.01.00.10)$
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 [log]
        ;; Hard serial ports are: /dev/ttyS0 to ttyS9
        ;devname = /dev/ttyUSB1
        devname = /dev/ttyACM0
+       ;devname = COM3
        baudrate = 115200
        ; we use the default flags
        flag = default
        
 [application]
        ; Do not reload the NV settings, start fresh each time
-       load-nv-sim = true
+       load-nv-sim = false
        ;The collector app can use either a socket or uart connection to the co-processor
        ;; Alternatively:  'interface = socket' 
        interface = uart
        config-fh-async-channel-mask = all
        config-fh-channel-mask = all
        config-fh-enable = false
-       config-fh-netname = "FHTest"
+       config-fh-netname = "FHTest123"
        config-fh-pan-size = 0x0032
        config-linkquality = 1
        config-mac-beacon-order = 15
        config-phy-id = 1
        config-scan-duration = 5
        config-secure = true
+       config-range-ext = 0
        config-trickle-max-clk-duration = 960000
        config-trickle-min-clk-duration =  30000
        ; msg-dbg-data = apimac-msgs.cfg
-
-       
-       
index ef03b13511e5e33b24ee62f3e8ba20b39cfc623b..5511f2a3d771d270540f79433601acea7a064f7e 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef COLLECTOR_H
 #define COLLECTOR_H
index 46c6a3015a8c39b0d5675bd9c2d4b7e3e0e7427f..2b58b1b48536cafd0851f3ee77f9fa4d6f4cf159 100644 (file)
@@ -2,7 +2,7 @@
 
  @file config.h
 
- @brief configuration parameters for TIMAC 2.0
+ @brief TI-15.4 Stack configuration parameters for Collector applications
 
  Group: WCS LPC
  $Target Devices: Linux: AM335x, Embedded Devices: CC1310, CC1350$
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef CONFIG_H
 #define CONFIG_H
@@ -97,7 +97,6 @@ extern bool linux_CONFIG_FH_ENABLE;
 
 /*! maximum beacons possibly received */
 #define CONFIG_MAX_BEACONS_RECD      200
-
 /*! link quality */
 extern uint8_t linux_CONFIG_LINKQUALITY;
 #define CONFIG_LINKQUALITY           linux_CONFIG_LINKQUALITY
@@ -108,11 +107,6 @@ extern uint8_t linux_CONFIG_PERCENTFILTER;
 #define CONFIG_PERCENTFILTER         linux_CONFIG_PERCENTFILTER
 #define CONFIG_PERCENTFILTER_DEFAULT 0xFF
 
-/*! scan duration */
-extern uint8_t linux_CONFIG_SCAN_DURATION;
-#define CONFIG_SCAN_DURATION         linux_CONFIG_SCAN_DURATION
-#define CONFIG_SCAN_DURATION_DEFAULT 5
-
 /*! maximum devices in association table */
 #define CONFIG_MAX_DEVICES           50
 
@@ -132,31 +126,64 @@ extern int linux_CONFIG_MAC_SUPERFRAME_ORDER;
 #define CONFIG_MAC_SUPERFRAME_ORDER  linux_CONFIG_MAC_SUPERFRAME_ORDER
 #define CONFIG_MAC_SUPERFRAME_ORDER_DEFAULT 15
 
-/*! Setting for channel page */
-extern int linux_CONFIG_CHANNEL_PAGE ;
-#define CONFIG_CHANNEL_PAGE_DEFAULT          (APIMAC_CHANNEL_PAGE_9)
-#define CONFIG_CHANNEL_PAGE                  linux_CONFIG_CHANNEL_PAGE
-
 /*! Setting for Phy ID */
 extern int linux_CONFIG_PHY_ID;
 #define CONFIG_PHY_ID (linux_CONFIG_PHY_ID)
 #define CONFIG_PHY_ID_DEFAULT                (APIMAC_STD_US_915_PHY_1)
 
+/*! Setting for channel page */
+extern int linux_CONFIG_CHANNEL_PAGE ;
+#define CONFIG_CHANNEL_PAGE                  linux_CONFIG_CHANNEL_PAGE
+
+#if ((CONFIG_PHY_ID_DEFAULT >= APIMAC_MRFSK_STD_PHY_ID_BEGIN) && (CONFIG_PHY_ID_DEFAULT <= APIMAC_MRFSK_STD_PHY_ID_END))
+#define CONFIG_CHANNEL_PAGE_DEFAULT          (APIMAC_CHANNEL_PAGE_9)
+#elif ((CONFIG_PHY_ID_DEFAULT >= APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN) && (CONFIG_PHY_ID_DEFAULT <= APIMAC_MRFSK_GENERIC_PHY_ID_END))
+#define CONFIG_CHANNEL_PAGE_DEFAULT          (APIMAC_CHANNEL_PAGE_10)
+#else
+#error "PHY ID is wrong."
+#endif
+
+/*! scan duration */
+extern uint8_t linux_CONFIG_SCAN_DURATION;
+#define CONFIG_SCAN_DURATION         linux_CONFIG_SCAN_DURATION
+
+#if ((CONFIG_PHY_ID_DEFAULT >= APIMAC_MRFSK_STD_PHY_ID_BEGIN) && (CONFIG_PHY_ID_DEFAULT <= APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN))
+#define CONFIG_SCAN_DURATION_DEFAULT 5
+#elif ((CONFIG_PHY_ID_DEFAULT >= APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN + 1) && (CONFIG_PHY_ID_DEFAULT <= APIMAC_MRFSK_GENERIC_PHY_ID_END))
+#define CONFIG_SCAN_DURATION_DEFAULT 9
+#else
+#error "PHY ID is wrong."
+#endif
+
+extern int linux_CONFIG_RANGE_EXT_MODE;
+#define CONFIG_RANGE_EXT_MODE linux_CONFIG_RANGE_EXT_MODE
+/*!
+ Range Extender Mode setting.
+ The following modes are available.
+ APIMAC_NO_EXTENDER - does not have PA/LNA
+ APIMAC_HIGH_GAIN_MODE - high gain mode
+ To enable CC1190, use
+ #define CONFIG_RANGE_EXT_MODE_DEFAULT       APIMAC_HIGH_GAIN_MODE
+*/
+#define CONFIG_RANGE_EXT_MODE_DEFAULT       APIMAC_NO_EXTENDER
+
 /*! Setting Default Key*/
 #define KEY_TABLE_DEFAULT_KEY \
     {0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0,                    \
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
 /*!
- Channel mask - Each bit indicates if the corresponding channel is to be
- scanned First byte represents channel 0 to 7 and the last byte represents
- channel 128 to 135
- In FH Mode: Represents the list of channels excluded from hopping
- It is a bit string with LSB representing Ch0
- e.g., 0x01 0x10 represents Ch0 and Ch12 are excluded
- Currently same mask is used for Unicast and Broadcast hopping sequence
-
- NOTE: this is the default channel mask,
+ Channel mask used when CONFIG_FH_ENABLE is false.
+ Each bit indicates if the corresponding channel is to be scanned
+ First byte represents channels 0 to 7 and the last byte represents
+ channels 128 to 135.
+ For byte zero in the bit mask, LSB representing Ch0.
+ For byte 1, LSB represents Ch8 and so on.
+ e.g., 0x01 0x10 represents Ch0 and Ch12 are included.
+ The default of 0x0F represents channels 0-3 are selected.
+ APIMAC_STD_US_915_PHY_1 (50kbps/2-FSK/915MHz band) has channels 0 - 128.
+ APIMAC_STD_ETSI_863_PHY_3 (50kbps/2-FSK/863MHz band) has channels 0 - 33.
 
+ NOTE:
     In the linux impliementation the INI file parser callback
     uses a a function to *clear/zero* the mask, and another
     function to set various bits within the channel mask.
@@ -194,25 +221,55 @@ extern uint8_t linux_FH_ASYNC_CHANNEL_MASK[APIMAC_154G_CHANNEL_BITMAP_SIZ];
             0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
 
 /* FH related config variables */
-/*! Dwell time */
+/*!
+ The number of non sleepy end devices to be supported.
+ It is to be noted that the total number of devices supported (sleepy/
+ non sleepy) must be less than 50. Stack will allocate memory proportional
+ to the number of end devices requested.
+ */
+extern int linux_FH_NUM_NON_SLEEPY_NEIGHBORS;
+#define FH_NUM_NON_SLEEPY_NEIGHBORS  linux_FH_NUM_NON_SLEEPY_NEIGHBORS  
+#define FH_NUM_NON_SLEEPY_NEIGHBORS_DEFAULT 0
+/*!
+ The number of sleepy end devices to be supported.
+ It is to be noted that the total number of devices supported (sleepy/
+ non sleepy) must be less than 50. Stack will allocate memory proportional
+ to the number of end devices requested.
+ */
+extern int linux_FH_NUM_SLEEPY_NEIGHBORS;
+#define FH_NUM_SLEEPY_NEIGHBORS  linux_FH_NUM_SLEEPY_NEIGHBORS
+#define FH_NUM_SLEEPY_NEIGHBORS_DEFAULT 50
+
+/*!
+ Dwell time: The duration for which the collector will
+ stay on a specific channel before hopping to next channel.
+ */
 extern int linux_CONFIG_DWELL_TIME;
 #define CONFIG_DWELL_TIME            linux_CONFIG_DWELL_TIME
 #define CONFIG_DWELL_TIME_DEFAULT    250
 
-/* The mimum trickle timer window for PAN Advertisement ,
-* and PAN Configuration frame transmissions
-* Default is 0.5 minute. Recommended to set this to
-* half of PAS/PCS MIN Timer */
+/*!
+ The minimum trickle timer window for PAN Advertisement,
+ and PAN Configuration frame transmissions.
+ Recommended to set this to half of PAS/PCS MIN Timer
+*/
 extern int linux_CONFIG_TRICKLE_MIN_CLK_DURATION;
 #define CONFIG_TRICKLE_MIN_CLK_DURATION    linux_CONFIG_TRICKLE_MIN_CLK_DURATION
-#define CONFIG_TRICKLE_MIN_CLK_DURATION_DEFAULT 30000
 
-/* The maximum trickle timer window for PAN Advertisement ,
- * and PAN Configuration frame transmissions
- * Default is 16 minutes */
+/*!
+ The maximum trickle timer window for PAN Advertisement,
+ and PAN Configuration frame transmissions.
+ */
 extern int linux_CONFIG_TRICKLE_MAX_CLK_DURATION;
 #define CONFIG_TRICKLE_MAX_CLK_DURATION    linux_CONFIG_TRICKLE_MAX_CLK_DURATION
-#define CONFIG_TRICKLE_MAX_CLK_DURATION_DEFAULT 960000
+
+#if ((CONFIG_PHY_ID_DEFAULT >= APIMAC_MRFSK_STD_PHY_ID_BEGIN) && (CONFIG_PHY_ID_DEFAULT <= APIMAC_MRFSK_GENERIC_PHY_ID_BEGIN))
+#define CONFIG_TRICKLE_MIN_CLK_DURATION_DEFAULT 3000
+#define CONFIG_TRICKLE_MAX_CLK_DURATION_DEFAULT 6000
+#else
+#define CONFIG_TRICKLE_MIN_CLK_DURATION_DEFAULT 30000
+#define CONFIG_TRICKLE_MAX_CLK_DURATION_DEFAULT 60000
+#endif
 
 /* default value for PAN Size PIB */
 extern int linux_CONFIG_FH_PAN_SIZE;
@@ -240,8 +297,48 @@ extern char linux_CONFIG_FH_NETNAME[32];
  lowering this value will help reduce saturation */
 extern int linux_CONFIG_TRANSMIT_POWER;
 #define CONFIG_TRANSMIT_POWER   linux_CONFIG_TRANSMIT_POWER
+#if CONFIG_RANGE_EXT_MODE_DEFAULT
+#define CONFIG_TRANSMIT_POWER_DEFAULT        27
+#else
 #define CONFIG_TRANSMIT_POWER_DEFAULT        14
+#endif
+
+/*!
+* Enable this mode for certfication.
+* For FH certification, CONFIG_FH_ENABLE should
+* also be enabled.
+*/
+#define CERTIFICATION_TEST_MODE linux_CERTIFICATION_TEST_MODE
+extern int linux_CERTIFICATION_TEST_MODE;
+#define CERTIFICATION_TEST_MODE_DEFAULT false
+
+extern int linux_CONFIG_POLLING_INTERVAL;
+extern int linux_CONFIG_REPORTING_INTERVAL;
+
+
+#if 0
+/* This test cannot be done on linux because these
+ * are not implimented as "#defines" instead they 
+ * are implimented as variables
+ */
+
+/* Check if all the necessary parameters have been set for FH mode */
+#if CONFIG_FH_ENABLE
+#if !defined(FEATURE_ALL_MODES) && !defined(FEATURE_FREQ_HOP_MODE)
+#error "Do you want to build image with frequency hopping mode? \
+        Define either FEATURE_FREQ_HOP_MODE or FEATURE_ALL_MODES in features.h"
+#endif
+#endif
+
+/* Check if stack level security is enabled if application security is enabled */
+#if CONFIG_SECURE
+#if !defined(FEATURE_MAC_SECURITY)
+#error "Define FEATURE_MAC_SECURITY or FEATURE_ALL_MODES in features.h to \
+        be able to use security at application level"
+#endif
+#endif
 
+#endif /* if 0 */
 
 #ifdef __cplusplus
 }
index b05311a16e4473945b557b770c5541ca61ce87ab..6bde946ee20296d47507d1eed03fd53e5254a6b5 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef CSF_H
 #define CSF_H
@@ -110,10 +110,10 @@ extern void Csf_processEvents(void);
 extern bool Csf_getNetworkInformation(Llc_netInfo_t *pInfo);
 
 /*!
- * @brief       The application calls this function to indicate that it has
+ * @brief       The application calls this function to indicate that it has 
  *              started or restored the device in a network.
  *
- *              The information will be saved and used to determine if a
+ *              The information will be saved and used to determine if a 
  *              network was already started and should be restored instead
  *              of started.
  *
@@ -189,7 +189,7 @@ extern void Csf_deviceSensorDataUpdate(ApiMac_sAddr_t *pSrcAddr, int8_t rssi,
 extern void Csf_toggleResponseReceived(ApiMac_sAddr_t *pSrcAddr, bool ledState);
 
 /*!
- * @brief       The application calls this function to indicate that the
+ * @brief       The application calls this function to indicate that the 
  *              Coordinator's state has changed.
  *
  * @param       state - new state
@@ -360,6 +360,13 @@ extern bool Csf_addBlackListItem(ApiMac_sAddr_t *pAddr);
  */
 extern bool Csf_isConfigTimerActive(void);
 
+/*!
+ * @brief       Check if tracking timer is active
+ *
+ * @return      true if active, false if not active
+ */
+extern bool Csf_isTrackingTimerActive(void);
+
 #ifdef __cplusplus
 }
 #endif
index 65218e54c45b24d7d158161078a1f79deed63da4..96d360ea7a4f6cd908c4ba05a9745a82463f792d 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 syntax = "proto2";
index ad094b1f68a6e8d5fa43bcfb7743ab3361007f46..4d3dde6c1af1ec658711df1204b40d7ed0b0d1f5 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if (defined(_MSC_VER) || defined(__linux__))
@@ -247,10 +247,7 @@ static NVINTF_nvFuncts_t *pNV = NULL;
 /* Permit join setting */
 static bool permitJoining = false;
 
-#if !IS_HLOS
-/* only used in embedded */
-static bool started = CONFIG_AUTO_START_DEFAULT;
-#endif
+static bool started = false;
 
 /* The last saved coordinator frame counter */
 static uint32_t lastSavedCoordinatorFrameCounter = 0;
@@ -305,6 +302,7 @@ void removeBlackListItem(ApiMac_sAddr_t *pAddr);
 static void removeTheFirstDevice(void);
 #endif
 #if !IS_HLOS
+/* not used in hlos version */
 static uint16_t getTheFirstDevice(void);
 #endif
 
@@ -345,6 +343,10 @@ void Csf_init(void *sem)
     /* Save off the semaphore */
     collectorSem = sem;
 
+    /* Initialize PA/LNA if enabled */
+    ApiMac_mlmeSetReqUint8(ApiMac_attribute_rangeExtender,
+                           (uint8_t)CONFIG_RANGE_EXT_MODE);
+
     /* Initialize keys */
     if(Board_Key_initialize(processKeyChangeCallback) == KEY_RIGHT)
     {
@@ -620,16 +622,22 @@ ApiMac_assocStatus_t Csf_deviceUpdate(ApiMac_deviceDescriptor_t *pDevInfo,
 
         if(addDeviceListItem(&dev) == false)
         {
+#ifdef NV_RESTORE
             status = ApiMac_assocStatus_panAtCapacity;
 
 #if IS_HLOS
-            LOG_printf(LOG_ERROR,
-                       "Failed: 0x%04x\n",
-                       pDevInfo->shortAddress);
+            LOG_printf(LOG_ERROR,"Failed: 0x%04x\n", pDevInfo->shortAddress);
 #else
-            LCD_WRITE_STRING_VALUE("Failed: 0x", pDevInfo->shortAddress,
-                                   16, 4);
+            LCD_WRITE_STRING_VALUE("Failed: 0x", pDevInfo->shortAddress, 16, 4);
 #endif /* IS_HLOS */
+#else
+           status = ApiMac_assocStatus_success;
+#if IS_HLOS
+           LOG_printf(LOG_ERROR,"Joined: 0x%04x\n", pDevInfo->shortAddress);
+#else
+            LCD_WRITE_STRING_VALUE("Joined: 0x", pDevInfo->shortAddress, 16, 4);
+#endif
+#endif /* NV_RESTORE */            
         }
         else
         {
@@ -1036,12 +1044,10 @@ void Csf_setTrickleClock(uint32_t trickleTime, uint8_t frameType)
         TIMER_CB_destroy(tricklePAClkHandle);
         tricklePAClkHandle = 0;
 
+       /* then create new, only if needed */
         if(trickleTime > 0)
         {
             /* Setup timer */
-            randomNum = ((ApiMac_randomByte() << 8) + ApiMac_randomByte());
-            trickleTime = (trickleTime >> 1) +
-                          (randomNum % (trickleTime >> 1));
             tricklePAClkHandle = TIMER_CB_create(
                 "paTrickleTimer",
                     processPATrickleTimeoutCallback_WRAPPER,
@@ -1070,12 +1076,9 @@ void Csf_setTrickleClock(uint32_t trickleTime, uint8_t frameType)
         /* always stop */
         TIMER_CB_destroy(tricklePCClkHandle);
         tricklePCClkHandle = 0;
-
+       /* and recreate only if needed */
         if(trickleTime > 0)
         {
-            randomNum = ((ApiMac_randomByte() << 8) + ApiMac_randomByte());
-            trickleTime = (trickleTime >> 1) +
-                          (randomNum % (trickleTime >> 1));
             /* Setup timer */
             tricklePCClkHandle =
                 TIMER_CB_create(
@@ -1146,9 +1149,10 @@ void Csf_setJoinPermitClock(uint32_t joinDuration)
 void Csf_setConfigClock(uint32_t delay)
 {
 #if IS_HLOS
+    /* always destroy */
     TIMER_CB_destroy( configClkHandle );
     configClkHandle = 0;
-
+    /* and create if needed */
     if( delay != 0 ){
         configClkHandle =
             TIMER_CB_create( "configClk",
@@ -1666,6 +1670,29 @@ bool Csf_isConfigTimerActive(void)
 #endif
     return b;
 }
+
+/*!
+ Check if tracking timer is active
+
+ Public function defined in csf.h
+*/
+bool Csf_isTrackingTimerActive(void)
+{
+    bool b;
+#if IS_HLOS
+    int r;
+    r = TIMER_CB_getRemain(trackingClkHandle);
+    if( r < 0 ){
+        b = false;
+    } else {
+        b = true;
+    }
+#else
+    b = (Timer_isActive(&trackingClkStruct));
+#endif
+    return b;
+}
+
 /******************************************************************************
  Local Functions
  *****************************************************************************/
@@ -2431,4 +2458,3 @@ Cllc_states_t Csf_getCllcState(void)
  *  End:
  *  vim:set  filetype=c tabstop=4 shiftwidth=4 expandtab=true
  */
-
index fdc637173a24e36bedbcc0f5e4380988f1607383..7bdb4ed3d66d7b7f0491e80a2bf9f7bc70ebd99d 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(CSF_LINUX_H)
index 5bd6f967739f225691bf239d5c5d13cfa34098e4..17fcc83c71b37450f901b90c63c0f0325b1caa47 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 
index 10e2a8e476beb1f993e8a105a00394564a5894e2..86bc630cf8925827b96f16b16f3009bc113ec87d 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "log.h"
index b0a69e7c4977ecfc4c828ba6e540b7fddd0be3a5..3709d696d0e95ce753d2189f5785514e0c00c226 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(CSF_PROTO_H)
index d50bb85d6fa9cbfa9970225fc6d025dcaf4c82d7..2a107ac16d38415e03beaa1f9ef2fdde1acd1164 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "compiler.h"
 #include "nv_linux.h"
 #include "config.h"
 
-int linux_CONFIG_TRANSMIT_POWER = CONFIG_TRANSMIT_POWER_DEFAULT;
 
+int linux_FH_NUM_NON_SLEEPY_NEIGHBORS = FH_NUM_NON_SLEEPY_NEIGHBORS_DEFAULT;
+int linux_FH_NUM_SLEEPY_NEIGHBORS = FH_NUM_SLEEPY_NEIGHBORS_DEFAULT;
+
+int linux_CONFIG_TRANSMIT_POWER = CONFIG_TRANSMIT_POWER_DEFAULT;
+int linux_CERTIFICATION_TEST_MODE = CERTIFICATION_TEST_MODE_DEFAULT;
 int linux_CONFIG_PHY_ID = CONFIG_PHY_ID_DEFAULT;
+int linux_CONFIG_RANGE_EXT_MODE = CONFIG_RANGE_EXT_MODE_DEFAULT;
 int linux_CONFIG_CHANNEL_PAGE = CONFIG_CHANNEL_PAGE_DEFAULT;
 uint8_t linux_CONFIG_FH_CHANNEL_MASK[APIMAC_154G_CHANNEL_BITMAP_SIZ]= CONFIG_FH_CHANNEL_MASK_DEFAULT;
 uint8_t linux_CONFIG_CHANNEL_MASK[APIMAC_154G_CHANNEL_BITMAP_SIZ] = CONFIG_CHANNEL_MASK_DEFAULT;
@@ -296,6 +301,33 @@ static int my_APP_settings(struct ini_parser *pINI, bool *handled)
         return 0;
     }
 
+    if( INI_itemMatches(pINI, NULL, "fh-num-non-sleepy-neighbors" ) )
+    {
+        linux_FH_NUM_NON_SLEEPY_NEIGHBORS = INI_valueAsInt(pINI);
+        *handled = true;
+        return 0;
+    }
+
+
+    if( INI_itemMatches(pINI, NULL, "fh-num-sleepy-neighbors" ) )
+    {
+        linux_FH_NUM_SLEEPY_NEIGHBORS = INI_valueAsInt(pINI);
+        *handled = true;
+        return 0;
+    }
+
+    if( INI_itemMatches(pINI, NULL, "config-polling-interval" ) ){
+        linux_CONFIG_POLLING_INTERVAL = INI_valueAsInt(pINI);
+        *handled = true;
+        return 0;
+    }
+
+    if( INI_itemMatches(pINI, NULL, "config-reporting-interval" ) ){
+        linux_CONFIG_REPORTING_INTERVAL = INI_valueAsInt(pINI);
+        *handled = true;
+        return 0;
+    }
+
     if( INI_itemMatches(pINI,NULL, "config-tx-power" ) ){
         linux_CONFIG_TRANSMIT_POWER = INI_valueAsInt(pINI);
         *handled = true;
@@ -311,21 +343,21 @@ static int my_APP_settings(struct ini_parser *pINI, bool *handled)
 
     if(INI_itemMatches(pINI, NULL, "config-linkquality"))
     {
-        linux_CONFIG_LINKQUALITY = INI_valueAsInt(pINI);
+        linux_CONFIG_LINKQUALITY = (uint8_t)INI_valueAsInt(pINI);
         *handled = true;
         return 0;
     }
 
     if(INI_itemMatches(pINI, NULL, "config-scan-duration"))
     {
-        linux_CONFIG_SCAN_DURATION = INI_valueAsInt(pINI);
+        linux_CONFIG_SCAN_DURATION = (uint8_t)INI_valueAsInt(pINI);
         *handled = true;
         return 0;
     }
 
     if(INI_itemMatches(pINI, NULL, "config-percentfilter"))
     {
-        linux_CONFIG_PERCENTFILTER = INI_valueAsInt(pINI);
+        linux_CONFIG_PERCENTFILTER = (uint8_t)INI_valueAsInt(pINI);
         *handled = true;
         return 0;
     }
@@ -344,6 +376,13 @@ static int my_APP_settings(struct ini_parser *pINI, bool *handled)
         *handled = true;
         return 0;
     }
+       
+       if(INI_itemMatches(pINI, NULL, "config-range-ext"))
+    {
+        linux_CONFIG_RANGE_EXT_MODE = INI_valueAsInt(pINI);
+        *handled = true;
+        return 0;
+    }
 
     if(INI_itemMatches(pINI, NULL, "config-dwell-time"))
     {
index b488b9d076cfe5687daf7592671939e795603a1d..4de50ab487a66038a2ff1ea4d7361d75664db62a 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef LLC_H
 #define LLC_H
index 768507fe961226958b5ce30511398b8788203227..042db4c801d1fd06738aae67a689be23472171fe 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 syntax = "proto2";
index c39508588e9909552846612e01448925bd217044..deb465936b2ee6e8de7954805f6c013523a8da50 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "log.h"
index 7a2a338174fa8163eca9e0658a00e63fde0cb409..97afd660c0e124ac010ffa8628a79fc279ef1b5b 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(LLC_PROTO_H)
index b42da27bbc42e624893f9907f43cde999e3fa1d2..f3cc7e58d256df67664f2ad7a9e19d06cc475bac 100755 (executable)
@@ -40,8 +40,8 @@
 #   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 #   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #############################################################
-# $Release Name: TI-15.4Stack Linux x64 SDK$
-# $Release Date: July 14, 2016 (2.00.00.30)$
+# $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+# $Release Date: Mar 08, 2017 (2.01.00.10)$
 #############################################################
 
 # Because this is a "quick demo" we hard code
index 26e92a62ef2ff1ad22f2206685e837220c8e0f9b..7b8d185b933beb7febfc8ef691966c78645ba1f1 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef SMGSS_H
 #define SMGSS_H
@@ -74,8 +74,8 @@ extern "C"
      - Command ID - [Smsgs_cmdIds_configReq](@ref Smsgs_cmdIds) (1 byte)
      - Frame Control field - Smsgs_dataFields (16 bits) - tells the sensor
      what to report in the Sensor Data Message.
-     - Reporting Interval - in millseconds (32 bits) - how often to report, 0
-     means to turn off automated reporting, but will force the sensor device
+     - Reporting Interval - in millseconds (32 bits) - how often to report, 0 
+     means to turn off automated reporting, but will force the sensor device 
      to send the Sensor Data message once.
      - Polling Interval - in millseconds (32 bits) - If the sensor device is
      a sleep device, this tells the device how often to poll its parent for
@@ -88,10 +88,10 @@ extern "C"
      - Frame Control field - Smsgs_dataFields (16 bits) - tells the collector
      what fields are supported by this device (this only includes the bits set
      in the request message).
-     - Reporting Interval - in millseconds (32 bits) - how often to report, 0
+     - Reporting Interval - in millseconds (32 bits) - how often to report, 0 
      means to turn off reporting.
      - Polling Interval - in millseconds (32 bits) - If the sensor device is
-     a sleep device, this tells how often this device will poll its parent.
+     a sleep device, this tells how often this device will poll its parent. 
      A value of 0 means that the device doesn't sleep.
  <BR>
  The <b>Sensor Data Message</b> is defined as:
@@ -100,7 +100,7 @@ extern "C"
      what fields are included in this message.
      - Data Fields - The length of this field is determined by what data fields
      are included.  The order of the data fields are determined by the bit
-     position of the Frame Control field (low bit first).  For example, if the
+     position of the Frame Control field (low bit first).  For example, if the 
      frame control field has Smsgs_dataFields_tempSensor and
      Smsgs_dataFields_lightSensor set, then the Temp Sensor field is first,
      followed by the light sensor field.
@@ -112,13 +112,13 @@ extern "C"
       integer part of temperature in Deg C (-256 .. +255)
  <BR>
  The <b>Light Sensor Field</b> is defined as:
-    - Raw Sensor Data - (uint16_6) raw data read out of the OPT2001 light
+    - Raw Sensor Data - (uint16_6) raw data read out of the OPT2001 light 
     sensor.
  <BR>
  The <b>Humidity Sensor Field</b> is defined as:
-    - Raw Temp Sensor Data - (uint16_t) - raw temperature data from the
+    - Raw Temp Sensor Data - (uint16_t) - raw temperature data from the 
     Texas Instruments HCD1000 humidity sensor.
-    - Raw Humidity Sensor Data - (uint16_t) - raw humidity data from the
+    - Raw Humidity Sensor Data - (uint16_t) - raw humidity data from the 
     Texas Instruments HCD1000 humidity sensor.
  <BR>
  The <b>Message Statistics Field</b> is defined as:
@@ -154,7 +154,7 @@ extern "C"
      3 - MAC, 4 - TIRTOS
  <BR>
  The <b>Config Settings Field</b> is defined as:
-     - Reporting Interval - in millseconds (32 bits) - how often to report, 0
+     - Reporting Interval - in millseconds (32 bits) - how often to report, 0 
      means reporting is off.
      - Polling Interval - in millseconds (32 bits) - If the sensor device is
      a sleep device, this states how often the device polls its parent for
@@ -184,6 +184,12 @@ extern "C"
 #define SMSGS_SENSOR_LIGHT_LEN 2
 /*! Length of the humiditySensor portion of the sensor data message */
 #define SMSGS_SENSOR_HUMIDITY_LEN 4
+/*! Length of the pressureSensor portion of the sensor data message */
+#define SMSGS_SENSOR_PRESSURE_LEN 8
+/*! Length of the motionSensor portion of the sensor data message */
+#define SMSGS_SENSOR_MOTION_LEN 1
+/*! Length of the batteryVoltageSensor portion of the sensor data message */
+#define SMSGS_SENSOR_BATTERY_LEN 4
 /*! Length of the messageStatistics portion of the sensor data message */
 #define SMSGS_SENSOR_MSG_STATS_LEN 36
 /*! Length of the configSettings portion of the sensor data message */
@@ -212,7 +218,9 @@ extern "C"
     /* Toggle LED message, sent from the collector to the sensor */
     Smsgs_cmdIds_toggleLedReq = 6,
     /* Toggle LED response msg, sent from the sensor to the collector */
-    Smsgs_cmdIds_toggleLedRsp = 7
+    Smsgs_cmdIds_toggleLedRsp = 7,
+       /* new data type for ramp sensor data */
+    Smsgs_cmdIds_rampdata = 8
  } Smsgs_cmdIds_t;
 
 /*!
@@ -233,9 +241,12 @@ typedef enum
     Smsgs_dataFields_msgStats = 0x0008,
     /*! Config Settings */
     Smsgs_dataFields_configSettings = 0x0010,
-#ifdef SENSOR_TAG_SUPPORT
-       Smsgs_dataFields_pressureSensor = 0x0020,
-#endif
+    /*! Pressure Sensor */
+    Smsgs_dataFields_pressureSensor = 0x0020,
+    /*! Motion Sensor */
+    Smsgs_dataFields_motionSensor = 0x0040,
+    /*! Battery Sensor */
+    Smsgs_dataFields_batteryVoltageSensor = 0x0080
 } Smsgs_dataFields_t;
 
 /*!
@@ -358,31 +369,46 @@ typedef struct _Smsgs_lightsensorfield_t
     uint16_t rawData;
 } Smsgs_lightSensorField_t;
 
+/*!
+ Humidity Sensor Field
+ */
+typedef struct _Smsgs_humiditysensorfield_t
+{
+    /*! Raw Temp Sensor Data from the TI HCD1000 humidity sensor. */
+    uint16_t temp;
+    /*! Raw Humidity Sensor Data from the TI HCD1000 humidity sensor. */
+    uint16_t humidity;
+} Smsgs_humiditySensorField_t;
 
-#ifdef SENSOR_TAG_SUPPORT
 /*!
  Pressure Sensor Field
  */
 typedef struct _Smsgs_pressuresensorfield_t
 {
-       /*! Temperature value read out of the BMP280 pressure sensor */
-       uint32_t tempValue;
+    /*! Temperature value read out of the BMP280 pressure sensor */
+    uint32_t tempValue;
 
-       /*! Pressure value read out of the BMP280 pressure sensor */
+    /*! Pressure value read out of the BMP280 pressure sensor */
     uint32_t pressureValue;
 } Smsgs_pressureSensorField_t;
-#endif // SENSOR_TAG_SUPPORT
 
 /*!
Humidity Sensor Field
Motion Sensor Field
  */
-typedef struct _Smsgs_humiditysensorfield_t
+typedef struct _Smsgs_motionsensorfield_t
 {
-    /*! Raw Temp Sensor Data from the TI HCD1000 humidity sensor. */
-    uint16_t temp;
-    /*! Raw Humidity Sensor Data from the TI HCD1000 humidity sensor. */
-    uint16_t humidity;
-} Smsgs_humiditySensorField_t;
+    /* Motion flag. */
+    bool isMotion;
+} Smsgs_motionSensorField_t;
+
+/*!
+ Battery Voltage Sensor Field
+ */
+typedef struct _Smsgs_batterysensorfield_t
+{
+    /* battery voltage value */
+    uint32_t voltageValue;
+}Smsgs_batterySensorField_t;
 
 /*!
  Message Statistics Field
@@ -493,13 +519,21 @@ typedef struct _Smsgs_sensormsg_t
      Smsgs_dataFields_configSettings is set in frameControl.
      */
     Smsgs_configSettingsField_t configSettings;
-#ifdef SENSOR_TAG_SUPPORT
     /*!
-         Configuration Settings field - valid only if
-         Smsgs_dataFields_configSettings is set in frameControl.
-         */
+        Pressure Sensor field - valid only if
+        Smsgs_dataFields_pressureSensor is set in frameControl.
+     */
     Smsgs_pressureSensorField_t pressureSensor;
-#endif
+    /*!
+        Motion Sensor field - valid only if
+        Smsgs_dataFields_motionSensor is set in frameControl.
+     */
+    Smsgs_motionSensorField_t motionSensor;
+    /*!
+        Battery Voltage Sensor field - valid only if
+        Smsgs_dataFields_batteryVoltageSensor is set in frameControl.
+     */
+    Smsgs_batterySensorField_t batterySensor;
 } Smsgs_sensorMsg_t;
 
 
index ead4936cf9d9ac5c1e998854c286f2be2fa464bb..5838bc539c32e8d177f4be902bfdf96d4ed1c7b8 100644 (file)
@@ -351,6 +351,49 @@ void   smsgs_light_sensor_field__free_unpacked
   assert(message->base.descriptor == &smsgs_light_sensor_field__descriptor);
   protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
 }
+void   smsgs_humidity_sensor_field__init
+                     (SmsgsHumiditySensorField         *message)
+{
+  static SmsgsHumiditySensorField init_value = SMSGS_HUMIDITY_SENSOR_FIELD__INIT;
+  *message = init_value;
+}
+size_t smsgs_humidity_sensor_field__get_packed_size
+                     (const SmsgsHumiditySensorField *message)
+{
+  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t smsgs_humidity_sensor_field__pack
+                     (const SmsgsHumiditySensorField *message,
+                      uint8_t       *out)
+{
+  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t smsgs_humidity_sensor_field__pack_to_buffer
+                     (const SmsgsHumiditySensorField *message,
+                      ProtobufCBuffer *buffer)
+{
+  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+SmsgsHumiditySensorField *
+       smsgs_humidity_sensor_field__unpack
+                     (ProtobufCAllocator  *allocator,
+                      size_t               len,
+                      const uint8_t       *data)
+{
+  return (SmsgsHumiditySensorField *)
+     protobuf_c_message_unpack (&smsgs_humidity_sensor_field__descriptor,
+                                allocator, len, data);
+}
+void   smsgs_humidity_sensor_field__free_unpacked
+                     (SmsgsHumiditySensorField *message,
+                      ProtobufCAllocator *allocator)
+{
+  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
 void   smsgs_pressure_sensor_field__init
                      (SmsgsPressureSensorField         *message)
 {
@@ -394,47 +437,90 @@ void   smsgs_pressure_sensor_field__free_unpacked
   assert(message->base.descriptor == &smsgs_pressure_sensor_field__descriptor);
   protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
 }
-void   smsgs_humidity_sensor_field__init
-                     (SmsgsHumiditySensorField         *message)
+void   smsgs_motion_sensor_field__init
+                     (SmsgsMotionSensorField         *message)
 {
-  static SmsgsHumiditySensorField init_value = SMSGS_HUMIDITY_SENSOR_FIELD__INIT;
+  static SmsgsMotionSensorField init_value = SMSGS_MOTION_SENSOR_FIELD__INIT;
   *message = init_value;
 }
-size_t smsgs_humidity_sensor_field__get_packed_size
-                     (const SmsgsHumiditySensorField *message)
+size_t smsgs_motion_sensor_field__get_packed_size
+                     (const SmsgsMotionSensorField *message)
 {
-  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  assert(message->base.descriptor == &smsgs_motion_sensor_field__descriptor);
   return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
 }
-size_t smsgs_humidity_sensor_field__pack
-                     (const SmsgsHumiditySensorField *message,
+size_t smsgs_motion_sensor_field__pack
+                     (const SmsgsMotionSensorField *message,
                       uint8_t       *out)
 {
-  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  assert(message->base.descriptor == &smsgs_motion_sensor_field__descriptor);
   return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
 }
-size_t smsgs_humidity_sensor_field__pack_to_buffer
-                     (const SmsgsHumiditySensorField *message,
+size_t smsgs_motion_sensor_field__pack_to_buffer
+                     (const SmsgsMotionSensorField *message,
                       ProtobufCBuffer *buffer)
 {
-  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  assert(message->base.descriptor == &smsgs_motion_sensor_field__descriptor);
   return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
 }
-SmsgsHumiditySensorField *
-       smsgs_humidity_sensor_field__unpack
+SmsgsMotionSensorField *
+       smsgs_motion_sensor_field__unpack
                      (ProtobufCAllocator  *allocator,
                       size_t               len,
                       const uint8_t       *data)
 {
-  return (SmsgsHumiditySensorField *)
-     protobuf_c_message_unpack (&smsgs_humidity_sensor_field__descriptor,
+  return (SmsgsMotionSensorField *)
+     protobuf_c_message_unpack (&smsgs_motion_sensor_field__descriptor,
                                 allocator, len, data);
 }
-void   smsgs_humidity_sensor_field__free_unpacked
-                     (SmsgsHumiditySensorField *message,
+void   smsgs_motion_sensor_field__free_unpacked
+                     (SmsgsMotionSensorField *message,
                       ProtobufCAllocator *allocator)
 {
-  assert(message->base.descriptor == &smsgs_humidity_sensor_field__descriptor);
+  assert(message->base.descriptor == &smsgs_motion_sensor_field__descriptor);
+  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+void   smsgs_battery_sensor_field__init
+                     (SmsgsBatterySensorField         *message)
+{
+  static SmsgsBatterySensorField init_value = SMSGS_BATTERY_SENSOR_FIELD__INIT;
+  *message = init_value;
+}
+size_t smsgs_battery_sensor_field__get_packed_size
+                     (const SmsgsBatterySensorField *message)
+{
+  assert(message->base.descriptor == &smsgs_battery_sensor_field__descriptor);
+  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t smsgs_battery_sensor_field__pack
+                     (const SmsgsBatterySensorField *message,
+                      uint8_t       *out)
+{
+  assert(message->base.descriptor == &smsgs_battery_sensor_field__descriptor);
+  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t smsgs_battery_sensor_field__pack_to_buffer
+                     (const SmsgsBatterySensorField *message,
+                      ProtobufCBuffer *buffer)
+{
+  assert(message->base.descriptor == &smsgs_battery_sensor_field__descriptor);
+  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+SmsgsBatterySensorField *
+       smsgs_battery_sensor_field__unpack
+                     (ProtobufCAllocator  *allocator,
+                      size_t               len,
+                      const uint8_t       *data)
+{
+  return (SmsgsBatterySensorField *)
+     protobuf_c_message_unpack (&smsgs_battery_sensor_field__descriptor,
+                                allocator, len, data);
+}
+void   smsgs_battery_sensor_field__free_unpacked
+                     (SmsgsBatterySensorField *message,
+                      ProtobufCAllocator *allocator)
+{
+  assert(message->base.descriptor == &smsgs_battery_sensor_field__descriptor);
   protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
 }
 void   smsgs_msg_stats_field__init
@@ -987,6 +1073,57 @@ const ProtobufCMessageDescriptor smsgs_light_sensor_field__descriptor =
   (ProtobufCMessageInit) smsgs_light_sensor_field__init,
   NULL,NULL,NULL    /* reserved[123] */
 };
+static const ProtobufCFieldDescriptor smsgs_humidity_sensor_field__field_descriptors[2] =
+{
+  {
+    "temp",
+    1,
+    PROTOBUF_C_LABEL_REQUIRED,
+    PROTOBUF_C_TYPE_UINT32,
+    0,   /* quantifier_offset */
+    offsetof(SmsgsHumiditySensorField, temp),
+    NULL,
+    NULL,
+    0,             /* flags */
+    0,NULL,NULL    /* reserved1,reserved2, etc */
+  },
+  {
+    "humidity",
+    2,
+    PROTOBUF_C_LABEL_REQUIRED,
+    PROTOBUF_C_TYPE_UINT32,
+    0,   /* quantifier_offset */
+    offsetof(SmsgsHumiditySensorField, humidity),
+    NULL,
+    NULL,
+    0,             /* flags */
+    0,NULL,NULL    /* reserved1,reserved2, etc */
+  },
+};
+static const unsigned smsgs_humidity_sensor_field__field_indices_by_name[] = {
+  1,   /* field[1] = humidity */
+  0,   /* field[0] = temp */
+};
+static const ProtobufCIntRange smsgs_humidity_sensor_field__number_ranges[1 + 1] =
+{
+  { 1, 0 },
+  { 0, 2 }
+};
+const ProtobufCMessageDescriptor smsgs_humidity_sensor_field__descriptor =
+{
+  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+  "Smsgs_humiditySensorField",
+  "SmsgsHumiditySensorField",
+  "SmsgsHumiditySensorField",
+  "",
+  sizeof(SmsgsHumiditySensorField),
+  2,
+  smsgs_humidity_sensor_field__field_descriptors,
+  smsgs_humidity_sensor_field__field_indices_by_name,
+  1,  smsgs_humidity_sensor_field__number_ranges,
+  (ProtobufCMessageInit) smsgs_humidity_sensor_field__init,
+  NULL,NULL,NULL    /* reserved[123] */
+};
 static const ProtobufCFieldDescriptor smsgs_pressure_sensor_field__field_descriptors[2] =
 {
   {
@@ -1038,55 +1175,80 @@ const ProtobufCMessageDescriptor smsgs_pressure_sensor_field__descriptor =
   (ProtobufCMessageInit) smsgs_pressure_sensor_field__init,
   NULL,NULL,NULL    /* reserved[123] */
 };
-static const ProtobufCFieldDescriptor smsgs_humidity_sensor_field__field_descriptors[2] =
+static const ProtobufCFieldDescriptor smsgs_motion_sensor_field__field_descriptors[1] =
 {
   {
-    "temp",
+    "isMotion",
     1,
     PROTOBUF_C_LABEL_REQUIRED,
-    PROTOBUF_C_TYPE_UINT32,
+    PROTOBUF_C_TYPE_BOOL,
     0,   /* quantifier_offset */
-    offsetof(SmsgsHumiditySensorField, temp),
+    offsetof(SmsgsMotionSensorField, ismotion),
     NULL,
     NULL,
     0,             /* flags */
     0,NULL,NULL    /* reserved1,reserved2, etc */
   },
+};
+static const unsigned smsgs_motion_sensor_field__field_indices_by_name[] = {
+  0,   /* field[0] = isMotion */
+};
+static const ProtobufCIntRange smsgs_motion_sensor_field__number_ranges[1 + 1] =
+{
+  { 1, 0 },
+  { 0, 1 }
+};
+const ProtobufCMessageDescriptor smsgs_motion_sensor_field__descriptor =
+{
+  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+  "Smsgs_motionSensorField",
+  "SmsgsMotionSensorField",
+  "SmsgsMotionSensorField",
+  "",
+  sizeof(SmsgsMotionSensorField),
+  1,
+  smsgs_motion_sensor_field__field_descriptors,
+  smsgs_motion_sensor_field__field_indices_by_name,
+  1,  smsgs_motion_sensor_field__number_ranges,
+  (ProtobufCMessageInit) smsgs_motion_sensor_field__init,
+  NULL,NULL,NULL    /* reserved[123] */
+};
+static const ProtobufCFieldDescriptor smsgs_battery_sensor_field__field_descriptors[1] =
+{
   {
-    "humidity",
-    2,
+    "voltageValue",
+    1,
     PROTOBUF_C_LABEL_REQUIRED,
     PROTOBUF_C_TYPE_UINT32,
     0,   /* quantifier_offset */
-    offsetof(SmsgsHumiditySensorField, humidity),
+    offsetof(SmsgsBatterySensorField, voltagevalue),
     NULL,
     NULL,
     0,             /* flags */
     0,NULL,NULL    /* reserved1,reserved2, etc */
   },
 };
-static const unsigned smsgs_humidity_sensor_field__field_indices_by_name[] = {
-  1,   /* field[1] = humidity */
-  0,   /* field[0] = temp */
+static const unsigned smsgs_battery_sensor_field__field_indices_by_name[] = {
+  0,   /* field[0] = voltageValue */
 };
-static const ProtobufCIntRange smsgs_humidity_sensor_field__number_ranges[1 + 1] =
+static const ProtobufCIntRange smsgs_battery_sensor_field__number_ranges[1 + 1] =
 {
   { 1, 0 },
-  { 0, 2 }
+  { 0, 1 }
 };
-const ProtobufCMessageDescriptor smsgs_humidity_sensor_field__descriptor =
+const ProtobufCMessageDescriptor smsgs_battery_sensor_field__descriptor =
 {
   PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
-  "Smsgs_humiditySensorField",
-  "SmsgsHumiditySensorField",
-  "SmsgsHumiditySensorField",
+  "Smsgs_batterySensorField",
+  "SmsgsBatterySensorField",
+  "SmsgsBatterySensorField",
   "",
-  sizeof(SmsgsHumiditySensorField),
-  2,
-  smsgs_humidity_sensor_field__field_descriptors,
-  smsgs_humidity_sensor_field__field_indices_by_name,
-  1,  smsgs_humidity_sensor_field__number_ranges,
-  (ProtobufCMessageInit) smsgs_humidity_sensor_field__init,
+  sizeof(SmsgsBatterySensorField),
+  1,
+  smsgs_battery_sensor_field__field_descriptors,
+  smsgs_battery_sensor_field__field_indices_by_name,
+  1,  smsgs_battery_sensor_field__number_ranges,
+  (ProtobufCMessageInit) smsgs_battery_sensor_field__init,
   NULL,NULL,NULL    /* reserved[123] */
 };
 static const ProtobufCFieldDescriptor smsgs_msg_stats_field__field_descriptors[11] =
@@ -1308,7 +1470,7 @@ const ProtobufCMessageDescriptor smsgs_config_settings_field__descriptor =
   (ProtobufCMessageInit) smsgs_config_settings_field__init,
   NULL,NULL,NULL    /* reserved[123] */
 };
-static const ProtobufCFieldDescriptor smsgs_sensor_msg__field_descriptors[8] =
+static const ProtobufCFieldDescriptor smsgs_sensor_msg__field_descriptors[10] =
 {
   {
     "cmdId",
@@ -1406,13 +1568,39 @@ static const ProtobufCFieldDescriptor smsgs_sensor_msg__field_descriptors[8] =
     0,             /* flags */
     0,NULL,NULL    /* reserved1,reserved2, etc */
   },
+  {
+    "motionSensor",
+    9,
+    PROTOBUF_C_LABEL_OPTIONAL,
+    PROTOBUF_C_TYPE_MESSAGE,
+    0,   /* quantifier_offset */
+    offsetof(SmsgsSensorMsg, motionsensor),
+    &smsgs_motion_sensor_field__descriptor,
+    NULL,
+    0,             /* flags */
+    0,NULL,NULL    /* reserved1,reserved2, etc */
+  },
+  {
+    "batterySensor",
+    10,
+    PROTOBUF_C_LABEL_OPTIONAL,
+    PROTOBUF_C_TYPE_MESSAGE,
+    0,   /* quantifier_offset */
+    offsetof(SmsgsSensorMsg, batterysensor),
+    &smsgs_battery_sensor_field__descriptor,
+    NULL,
+    0,             /* flags */
+    0,NULL,NULL    /* reserved1,reserved2, etc */
+  },
 };
 static const unsigned smsgs_sensor_msg__field_indices_by_name[] = {
+  9,   /* field[9] = batterySensor */
   0,   /* field[0] = cmdId */
   6,   /* field[6] = configSettings */
   1,   /* field[1] = frameControl */
   4,   /* field[4] = humiditySensor */
   3,   /* field[3] = lightSensor */
+  8,   /* field[8] = motionSensor */
   5,   /* field[5] = msgStats */
   7,   /* field[7] = pressureSensor */
   2,   /* field[2] = tempSensor */
@@ -1420,7 +1608,7 @@ static const unsigned smsgs_sensor_msg__field_indices_by_name[] = {
 static const ProtobufCIntRange smsgs_sensor_msg__number_ranges[1 + 1] =
 {
   { 1, 0 },
-  { 0, 8 }
+  { 0, 10 }
 };
 const ProtobufCMessageDescriptor smsgs_sensor_msg__descriptor =
 {
@@ -1430,7 +1618,7 @@ const ProtobufCMessageDescriptor smsgs_sensor_msg__descriptor =
   "SmsgsSensorMsg",
   "",
   sizeof(SmsgsSensorMsg),
-  8,
+  10,
   smsgs_sensor_msg__field_descriptors,
   smsgs_sensor_msg__field_indices_by_name,
   1,  smsgs_sensor_msg__number_ranges,
@@ -1475,7 +1663,7 @@ const ProtobufCEnumDescriptor smsgs_cmd_ids__descriptor =
   smsgs_cmd_ids__value_ranges,
   NULL,NULL,NULL,NULL   /* reserved[1234] */
 };
-static const ProtobufCEnumValue smsgs_data_fields__enum_values_by_number[7] =
+static const ProtobufCEnumValue smsgs_data_fields__enum_values_by_number[9] =
 {
   { "Smsgs_dataFields_tempSensor", "SMSGS_DATA_FIELDS__Smsgs_dataFields_tempSensor", 1 },
   { "Smsgs_dataFields_lightSensor", "SMSGS_DATA_FIELDS__Smsgs_dataFields_lightSensor", 2 },
@@ -1484,15 +1672,19 @@ static const ProtobufCEnumValue smsgs_data_fields__enum_values_by_number[7] =
   { "Smsgs_dataFields_configSettings", "SMSGS_DATA_FIELDS__Smsgs_dataFields_configSettings", 16 },
   { "Smsgs_dataFields_pressureSensor", "SMSGS_DATA_FIELDS__Smsgs_dataFields_pressureSensor", 32 },
   { "Smsgs_dataFields_toggleSettings", "SMSGS_DATA_FIELDS__Smsgs_dataFields_toggleSettings", 48 },
+  { "Smsgs_dataFields_motionSensor", "SMSGS_DATA_FIELDS__Smsgs_dataFields_motionSensor", 64 },
+  { "Smsgs_dataFields_batterySensor", "SMSGS_DATA_FIELDS__Smsgs_dataFields_batterySensor", 128 },
 };
 static const ProtobufCIntRange smsgs_data_fields__value_ranges[] = {
-{1, 0},{4, 2},{8, 3},{16, 4},{32, 5},{48, 6},{0, 7}
+{1, 0},{4, 2},{8, 3},{16, 4},{32, 5},{48, 6},{64, 7},{128, 8},{0, 9}
 };
-static const ProtobufCEnumValueIndex smsgs_data_fields__enum_values_by_name[7] =
+static const ProtobufCEnumValueIndex smsgs_data_fields__enum_values_by_name[9] =
 {
+  { "Smsgs_dataFields_batterySensor", 8 },
   { "Smsgs_dataFields_configSettings", 4 },
   { "Smsgs_dataFields_humiditySensor", 2 },
   { "Smsgs_dataFields_lightSensor", 1 },
+  { "Smsgs_dataFields_motionSensor", 7 },
   { "Smsgs_dataFields_msgStats", 3 },
   { "Smsgs_dataFields_pressureSensor", 5 },
   { "Smsgs_dataFields_tempSensor", 0 },
@@ -1505,11 +1697,11 @@ const ProtobufCEnumDescriptor smsgs_data_fields__descriptor =
   "Smsgs_dataFields",
   "SmsgsDataFields",
   "",
-  7,
+  9,
   smsgs_data_fields__enum_values_by_number,
-  7,
+  9,
   smsgs_data_fields__enum_values_by_name,
-  6,
+  8,
   smsgs_data_fields__value_ranges,
   NULL,NULL,NULL,NULL   /* reserved[1234] */
 };
index a73cc17ad277e6f29ffa49e6a326972f07ca3499..19f4b4e1790627188281234946d5262f776249a5 100644 (file)
@@ -23,8 +23,10 @@ typedef struct _SmsgsToggleLedReqMsg SmsgsToggleLedReqMsg;
 typedef struct _SmsgsToggleLedRspMsg SmsgsToggleLedRspMsg;
 typedef struct _SmsgsTempSensorField SmsgsTempSensorField;
 typedef struct _SmsgsLightSensorField SmsgsLightSensorField;
-typedef struct _SmsgsPressureSensorField SmsgsPressureSensorField;
 typedef struct _SmsgsHumiditySensorField SmsgsHumiditySensorField;
+typedef struct _SmsgsPressureSensorField SmsgsPressureSensorField;
+typedef struct _SmsgsMotionSensorField SmsgsMotionSensorField;
+typedef struct _SmsgsBatterySensorField SmsgsBatterySensorField;
 typedef struct _SmsgsMsgStatsField SmsgsMsgStatsField;
 typedef struct _SmsgsConfigSettingsField SmsgsConfigSettingsField;
 typedef struct _SmsgsSensorMsg SmsgsSensorMsg;
@@ -97,13 +99,21 @@ typedef enum _SmsgsDataFields {
    */
   SMSGS_DATA_FIELDS__Smsgs_dataFields_configSettings = 16,
   /*
-   *! Pressure sensor
+   *! Toggle Settings - changed to 0x30 from 0x20 
+   */
+  SMSGS_DATA_FIELDS__Smsgs_dataFields_toggleSettings = 48,
+  /*
+   *! Pressure Sensor 
    */
   SMSGS_DATA_FIELDS__Smsgs_dataFields_pressureSensor = 32,
   /*
-   *! Suyash changed this to 0x300 from 0x200 Toggle Settings 
+   *! Motion Sensor 
    */
-  SMSGS_DATA_FIELDS__Smsgs_dataFields_toggleSettings = 48
+  SMSGS_DATA_FIELDS__Smsgs_dataFields_motionSensor = 64,
+  /*
+   *! battery Sensor 
+   */
+  SMSGS_DATA_FIELDS__Smsgs_dataFields_batterySensor = 128
     PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SMSGS_DATA_FIELDS)
 } SmsgsDataFields;
 /*
@@ -309,6 +319,27 @@ struct  _SmsgsLightSensorField
     , 0 }
 
 
+/*
+ *!
+ *Humidity Sensor Field
+ */
+struct  _SmsgsHumiditySensorField
+{
+  ProtobufCMessage base;
+  /*
+   *! Raw Temp Sensor Data from the TI HCD1000 humidity sensor. 
+   */
+  uint32_t temp;
+  /*
+   *! Raw Humidity Sensor Data from the TI HCD1000 humidity sensor. 
+   */
+  uint32_t humidity;
+};
+#define SMSGS_HUMIDITY_SENSOR_FIELD__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&smsgs_humidity_sensor_field__descriptor) \
+    , 0, 0 }
+
+
 /*
  *!
  *Pressure Sensor Field
@@ -331,24 +362,35 @@ struct  _SmsgsPressureSensorField
 
 
 /*
- *!
- *Humidity Sensor Field
+ *! Motion Sensor Field 
  */
-struct  _SmsgsHumiditySensorField
+struct  _SmsgsMotionSensorField
 {
   ProtobufCMessage base;
   /*
-   *! Raw Temp Sensor Data from the TI HCD1000 humidity sensor. 
+   * true if motion detected, false if no motion 
    */
-  uint32_t temp;
+  protobuf_c_boolean ismotion;
+};
+#define SMSGS_MOTION_SENSOR_FIELD__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&smsgs_motion_sensor_field__descriptor) \
+    , 0 }
+
+
+/*
+ *! Battery Sensor Field 
+ */
+struct  _SmsgsBatterySensorField
+{
+  ProtobufCMessage base;
   /*
-   *! Raw Humidity Sensor Data from the TI HCD1000 humidity sensor. 
+   * battery voltage in mv 
    */
-  uint32_t humidity;
+  uint32_t voltagevalue;
 };
-#define SMSGS_HUMIDITY_SENSOR_FIELD__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&smsgs_humidity_sensor_field__descriptor) \
-    , 0, 0 }
+#define SMSGS_BATTERY_SENSOR_FIELD__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&smsgs_battery_sensor_field__descriptor) \
+    , 0 }
 
 
 /*
@@ -486,13 +528,23 @@ struct  _SmsgsSensorMsg
   SmsgsConfigSettingsField *configsettings;
   /*
    *! 
-   *Pressure Sensor Field 
+   *Pressure Sensor Field
    */
   SmsgsPressureSensorField *pressuresensor;
+  /*
+   *!
+   *Motion Sensor Field 
+   */
+  SmsgsMotionSensorField *motionsensor;
+  /*
+   *!
+   *Battery sensor field 
+   */
+  SmsgsBatterySensorField *batterysensor;
 };
 #define SMSGS_SENSOR_MSG__INIT \
  { PROTOBUF_C_MESSAGE_INIT (&smsgs_sensor_msg__descriptor) \
-    , 0, 0, NULL, NULL, NULL, NULL, NULL, NULL }
+    , 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
 
 
 /* SmsgsConfigReqMsg methods */
@@ -647,6 +699,25 @@ SmsgsLightSensorField *
 void   smsgs_light_sensor_field__free_unpacked
                      (SmsgsLightSensorField *message,
                       ProtobufCAllocator *allocator);
+/* SmsgsHumiditySensorField methods */
+void   smsgs_humidity_sensor_field__init
+                     (SmsgsHumiditySensorField         *message);
+size_t smsgs_humidity_sensor_field__get_packed_size
+                     (const SmsgsHumiditySensorField   *message);
+size_t smsgs_humidity_sensor_field__pack
+                     (const SmsgsHumiditySensorField   *message,
+                      uint8_t             *out);
+size_t smsgs_humidity_sensor_field__pack_to_buffer
+                     (const SmsgsHumiditySensorField   *message,
+                      ProtobufCBuffer     *buffer);
+SmsgsHumiditySensorField *
+       smsgs_humidity_sensor_field__unpack
+                     (ProtobufCAllocator  *allocator,
+                      size_t               len,
+                      const uint8_t       *data);
+void   smsgs_humidity_sensor_field__free_unpacked
+                     (SmsgsHumiditySensorField *message,
+                      ProtobufCAllocator *allocator);
 /* SmsgsPressureSensorField methods */
 void   smsgs_pressure_sensor_field__init
                      (SmsgsPressureSensorField         *message);
@@ -666,24 +737,43 @@ SmsgsPressureSensorField *
 void   smsgs_pressure_sensor_field__free_unpacked
                      (SmsgsPressureSensorField *message,
                       ProtobufCAllocator *allocator);
-/* SmsgsHumiditySensorField methods */
-void   smsgs_humidity_sensor_field__init
-                     (SmsgsHumiditySensorField         *message);
-size_t smsgs_humidity_sensor_field__get_packed_size
-                     (const SmsgsHumiditySensorField   *message);
-size_t smsgs_humidity_sensor_field__pack
-                     (const SmsgsHumiditySensorField   *message,
+/* SmsgsMotionSensorField methods */
+void   smsgs_motion_sensor_field__init
+                     (SmsgsMotionSensorField         *message);
+size_t smsgs_motion_sensor_field__get_packed_size
+                     (const SmsgsMotionSensorField   *message);
+size_t smsgs_motion_sensor_field__pack
+                     (const SmsgsMotionSensorField   *message,
                       uint8_t             *out);
-size_t smsgs_humidity_sensor_field__pack_to_buffer
-                     (const SmsgsHumiditySensorField   *message,
+size_t smsgs_motion_sensor_field__pack_to_buffer
+                     (const SmsgsMotionSensorField   *message,
                       ProtobufCBuffer     *buffer);
-SmsgsHumiditySensorField *
-       smsgs_humidity_sensor_field__unpack
+SmsgsMotionSensorField *
+       smsgs_motion_sensor_field__unpack
                      (ProtobufCAllocator  *allocator,
                       size_t               len,
                       const uint8_t       *data);
-void   smsgs_humidity_sensor_field__free_unpacked
-                     (SmsgsHumiditySensorField *message,
+void   smsgs_motion_sensor_field__free_unpacked
+                     (SmsgsMotionSensorField *message,
+                      ProtobufCAllocator *allocator);
+/* SmsgsBatterySensorField methods */
+void   smsgs_battery_sensor_field__init
+                     (SmsgsBatterySensorField         *message);
+size_t smsgs_battery_sensor_field__get_packed_size
+                     (const SmsgsBatterySensorField   *message);
+size_t smsgs_battery_sensor_field__pack
+                     (const SmsgsBatterySensorField   *message,
+                      uint8_t             *out);
+size_t smsgs_battery_sensor_field__pack_to_buffer
+                     (const SmsgsBatterySensorField   *message,
+                      ProtobufCBuffer     *buffer);
+SmsgsBatterySensorField *
+       smsgs_battery_sensor_field__unpack
+                     (ProtobufCAllocator  *allocator,
+                      size_t               len,
+                      const uint8_t       *data);
+void   smsgs_battery_sensor_field__free_unpacked
+                     (SmsgsBatterySensorField *message,
                       ProtobufCAllocator *allocator);
 /* SmsgsMsgStatsField methods */
 void   smsgs_msg_stats_field__init
@@ -768,11 +858,17 @@ typedef void (*SmsgsTempSensorField_Closure)
 typedef void (*SmsgsLightSensorField_Closure)
                  (const SmsgsLightSensorField *message,
                   void *closure_data);
+typedef void (*SmsgsHumiditySensorField_Closure)
+                 (const SmsgsHumiditySensorField *message,
+                  void *closure_data);
 typedef void (*SmsgsPressureSensorField_Closure)
                  (const SmsgsPressureSensorField *message,
                   void *closure_data);
-typedef void (*SmsgsHumiditySensorField_Closure)
-                 (const SmsgsHumiditySensorField *message,
+typedef void (*SmsgsMotionSensorField_Closure)
+                 (const SmsgsMotionSensorField *message,
+                  void *closure_data);
+typedef void (*SmsgsBatterySensorField_Closure)
+                 (const SmsgsBatterySensorField *message,
                   void *closure_data);
 typedef void (*SmsgsMsgStatsField_Closure)
                  (const SmsgsMsgStatsField *message,
@@ -800,8 +896,10 @@ extern const ProtobufCMessageDescriptor smsgs_toggle_led_req_msg__descriptor;
 extern const ProtobufCMessageDescriptor smsgs_toggle_led_rsp_msg__descriptor;
 extern const ProtobufCMessageDescriptor smsgs_temp_sensor_field__descriptor;
 extern const ProtobufCMessageDescriptor smsgs_light_sensor_field__descriptor;
-extern const ProtobufCMessageDescriptor smsgs_pressure_sensor_field__descriptor;
 extern const ProtobufCMessageDescriptor smsgs_humidity_sensor_field__descriptor;
+extern const ProtobufCMessageDescriptor smsgs_pressure_sensor_field__descriptor;
+extern const ProtobufCMessageDescriptor smsgs_motion_sensor_field__descriptor;
+extern const ProtobufCMessageDescriptor smsgs_battery_sensor_field__descriptor;
 extern const ProtobufCMessageDescriptor smsgs_msg_stats_field__descriptor;
 extern const ProtobufCMessageDescriptor smsgs_config_settings_field__descriptor;
 extern const ProtobufCMessageDescriptor smsgs_sensor_msg__descriptor;
index 91759dd4e270d472ee3f86bf2bb9397394b6f7bc..8450bc9ff79135c3ea493814e4beb950221ddd44 100644 (file)
@@ -41,8 +41,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 syntax = "proto2";
@@ -87,11 +87,15 @@ enum Smsgs_dataFields
     Smsgs_dataFields_msgStats = 0x0008;
     /*! Config Settings */
     Smsgs_dataFields_configSettings = 0x0010;
-    /*! Pressure sensor*/
+    /*! Toggle Settings - changed to 0x30 from 0x20 */
+    Smsgs_dataFields_toggleSettings = 0x0030;
+    /*! Pressure Sensor */
     Smsgs_dataFields_pressureSensor = 0x0020;
-    /*! Suyash changed this to 0x300 from 0x200 Toggle Settings */
-    Smsgs_dataFields_toggleSettings = 0x0030;  
-    
+    /*! Motion Sensor */
+    Smsgs_dataFields_motionSensor = 0x0040;
+    /*! battery Sensor */
+    Smsgs_dataFields_batterySensor = 0x0080;
+
 }
 
 /*!
@@ -214,29 +218,41 @@ message Smsgs_lightSensorField
     required uint32 rawData = 1;
 }
 
+/*!
+  Humidity Sensor Field
+*/
+message Smsgs_humiditySensorField
+{
+    /*! Raw Temp Sensor Data from the TI HCD1000 humidity sensor. */
+    required uint32 temp = 1;
+    /*! Raw Humidity Sensor Data from the TI HCD1000 humidity sensor. */
+    required uint32 humidity = 2;
+}
+
 /*!
  Pressure Sensor Field
  */
 message Smsgs_pressureSensorField
 {
-       /*! Temperature value read out of the BMP280 pressure sensor */
-       required uint32 tempValue =1;
+  /*! Temperature value read out of the BMP280 pressure sensor */
+  required uint32 tempValue =1;
 
-       /*! Pressure value read out of the BMP280 pressure sensor */
+  /*! Pressure value read out of the BMP280 pressure sensor */
     required uint32 pressureValue=2 ;
 } 
 
+/*! Motion Sensor Field */
+message Smsgs_motionSensorField
+{
+  /* true if motion detected, false if no motion */
+  required bool isMotion=1;
+}
 
-
-/*!
-  Humidity Sensor Field
-*/
-message Smsgs_humiditySensorField
+/*! Battery Sensor Field */
+message Smsgs_batterySensorField
 {
-    /*! Raw Temp Sensor Data from the TI HCD1000 humidity sensor. */
-    required uint32 temp = 1;
-    /*! Raw Humidity Sensor Data from the TI HCD1000 humidity sensor. */
-    required uint32 humidity = 2;
+  /* battery voltage in mv */
+  required uint32 voltageValue=1;
 }
 
 /*!
@@ -326,9 +342,18 @@ message Smsgs_sensorMsg
     */
     optional Smsgs_configSettingsField configSettings = 7;
     /*! 
-      Pressure Sensor Field 
-      */
+      Pressure Sensor Field
+    */
     optional Smsgs_pressureSensorField pressureSensor = 8;
+    /*!
+      Motion Sensor Field 
+    */
+    optional Smsgs_motionSensorField motionSensor = 9;
+    /*!
+      Battery sensor field 
+    */
+    optional Smsgs_batterySensorField batterySensor = 10;
+
 }
 
 //  ========================================
index a23b48853e74aeb6b5e05e0264c6935044206882..fc7e0b1fbdf1d7febfb66069fd18f769fe2d87ac 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #include "malloc.h"
@@ -121,43 +121,60 @@ void free_SmsgsTempSensorField(SmsgsTempSensorField *pThis)
     }
 }
 
-/* Convert settings field to protobuf form
+/* Free memory for a msg stats field.
  * Public function defined in smsgs_proto.h
  */
-SmsgsConfigSettingsField *copy_Smsgs_configSettingsField(
-    const Smsgs_configSettingsField_t *pThis)
+void free_SmsgsPressureSensorField(SmsgsPressureSensorField *pThis)
 {
-    SmsgsConfigSettingsField *pResult;
+    if(pThis)
+    {
+        free((void *)(pThis));
+        pThis = NULL;
+    }
+}
 
-    pResult = calloc(1, sizeof(*pResult));
-    if(!pResult)
+/* Free memory for a msg stats field.
+ * Public function defined in smsgs_proto.h
+ */
+void free_SmsgsMotionSensorField(SmsgsMotionSensorField *pThis)
+{
+    if(pThis)
     {
-        LOG_printf(LOG_ERROR, "No memory for: SmsgsConfigSettingsField\n");
+        free((void *)(pThis));
+        pThis = NULL;
     }
-    else
+}
+
+/* Free memory for a msg stats field.
+ * Public function defined in smsgs_proto.h
+ */
+void free_SmsgsBatterySensorField(SmsgsBatterySensorField *pThis)
+{
+    if(pThis)
     {
-        smsgs_config_settings_field__init(pResult);
-        pResult->reportinginterval      = pThis->reportingInterval;
-        pResult->pollinginterval        = pThis->pollingInterval;
+        free((void *)(pThis));
+        pThis = NULL;
     }
-    return pResult;
 }
 
-// Suyash
-SmsgsPressureSensorField *copy_Smsgs_pressureSensorField(const Smsgs_pressureSensorField_t *pThis)
+/* Convert settings field to protobuf form
+ * Public function defined in smsgs_proto.h
+ */
+SmsgsConfigSettingsField *copy_Smsgs_configSettingsField(
+    const Smsgs_configSettingsField_t *pThis)
 {
-    SmsgsPressureSensorField *pResult;
+    SmsgsConfigSettingsField *pResult;
 
     pResult = calloc(1, sizeof(*pResult));
     if(!pResult)
     {
-        LOG_printf(LOG_ERROR, "No memory for: SmsgsPressureSensorField\n");
+        LOG_printf(LOG_ERROR, "No memory for: SmsgsConfigSettingsField\n");
     }
     else
     {
-        smsgs_pressure_sensor_field__init(pResult);
-        pResult->tempvalue      = pThis->tempValue;
-        pResult->pressurevalue  = pThis->pressureValue;
+        smsgs_config_settings_field__init(pResult);
+        pResult->reportinginterval      = pThis->reportingInterval;
+        pResult->pollinginterval        = pThis->pollingInterval;
     }
     return pResult;
 }
@@ -308,6 +325,33 @@ SmsgsSensorMsg *copy_Smsgs_sensorMsg(const Smsgs_sensorMsg_t *pSensorMsg)
             fail = true;
         }
     }
+    if(pSensorMsg->frameControl & Smsgs_dataFields_pressureSensor)
+    {
+        pResult->pressuresensor =
+            copy_Smsgs_pressureSensorField(&(pSensorMsg->pressureSensor));
+        if(pResult->pressuresensor == NULL)
+        {
+            fail = true;
+        }
+    }
+    if(pSensorMsg->frameControl & Smsgs_dataFields_motionSensor)
+    {
+        pResult->motionsensor =
+            copy_Smsgs_motionSensorField(&(pSensorMsg->motionSensor));
+        if(pResult->motionsensor == NULL)
+        {
+            fail = true;
+        }
+    }
+    if(pSensorMsg->frameControl & Smsgs_dataFields_batteryVoltageSensor)
+    {
+        pResult->batterysensor =
+            copy_Smsgs_batterySensorField(&(pSensorMsg->batterySensor));
+        if(pResult->batterysensor == NULL)
+        {
+            fail = true;
+        }
+    }
 
     if(pSensorMsg->frameControl & Smsgs_dataFields_msgStats)
     {
@@ -328,15 +372,6 @@ SmsgsSensorMsg *copy_Smsgs_sensorMsg(const Smsgs_sensorMsg_t *pSensorMsg)
             fail = true;
         }
     }
-    if(pSensorMsg->frameControl & Smsgs_dataFields_pressureSensor)
-    {
-        pResult->pressuresensor =
-        copy_Smsgs_pressureSensorField(&(pSensorMsg->pressureSensor));
-        if(pResult->pressuresensor == NULL)
-        {
-            fail = true;
-        }
-    }
     if(fail)
     {
     _fail:
@@ -375,6 +410,24 @@ void free_SmsgsSensorMsg(SmsgsSensorMsg *pThis)
         pThis->humiditysensor = NULL;
     }
 
+    if(pThis->pressuresensor)
+    {
+        free_SmsgsPressureSensorField(pThis->pressuresensor);
+        pThis->pressuresensor = NULL;
+    }
+
+    if(pThis->motionsensor)
+    {
+        free_SmsgsMotionSensorField(pThis->motionsensor);
+        pThis->motionsensor = NULL;
+    }
+
+    if(pThis->batterysensor)
+    {
+        free_SmsgsBatterySensorField(pThis->batterysensor);
+        pThis->batterysensor = NULL;
+    }
+
     if(pThis->msgstats)
     {
         free_SmsgsMsgStatsField(pThis->msgstats);
@@ -425,6 +478,58 @@ void free_SmsgsConfigRspMsg(SmsgsConfigRspMsg *pThis)
     }
 }
 
+SmsgsPressureSensorField *copy_Smsgs_pressureSensorField(const Smsgs_pressureSensorField_t *pThis)
+{
+    SmsgsPressureSensorField *pResult;
+
+    pResult = calloc(1, sizeof(*pResult));
+    if(!pResult)
+    {
+        LOG_printf(LOG_ERROR, "No memory for: SmsgsPressureSensorField\n");
+    }
+    else
+    {
+        smsgs_pressure_sensor_field__init(pResult);
+        pResult->tempvalue      = pThis->tempValue;
+        pResult->pressurevalue  = pThis->pressureValue;
+    }
+    return pResult;
+}
+
+SmsgsMotionSensorField *copy_Smsgs_motionSensorField(const Smsgs_motionSensorField_t *pThis)
+{
+    SmsgsMotionSensorField *pResult;
+
+    pResult = calloc(1, sizeof(*pResult));
+    if(!pResult)
+    {
+        LOG_printf(LOG_ERROR, "No memory for: SmsgsMotionSensorField\n");
+    }
+    else
+    {
+        smsgs_motion_sensor_field__init(pResult);
+        pResult->ismotion  = pThis->isMotion;
+    }
+    return pResult;
+}
+
+SmsgsBatterySensorField *copy_Smsgs_batterySensorField(const Smsgs_batterySensorField_t *pThis)
+{
+    SmsgsBatterySensorField *pResult;
+
+    pResult = calloc(1, sizeof(*pResult));
+    if(!pResult)
+    {
+        LOG_printf(LOG_ERROR, "No memory for: SmsgsBatterySensorField\n");
+    }
+    else
+    {
+        smsgs_battery_sensor_field__init(pResult);
+        pResult->voltagevalue  = pThis->voltageValue;
+    }
+    return pResult;
+}
+
 /*
  *  ========================================
  *  Texas Instruments Micro Controller Style
index 33436016889ce9bed0cdb4acb6628605fea094b3..d2b98d8d70c9198690aca79c990a1facaf5fa585 100644 (file)
@@ -39,8 +39,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
 #if !defined(SMSGS_PROTO_H)
@@ -106,6 +106,24 @@ void free_SmsgsMsgStatsField(SmsgsMsgStatsField *pThis);
  */
 void free_SmsgsTempSensorField(SmsgsTempSensorField *pThis);
 
+/*!
+ * @brief Release memory for a pressure message
+ * @param pThis - data to free
+ */
+void free_SmsgsPressureSensorField(SmsgsPressureSensorField *pThis);
+
+/*!
+ * @brief Release memory for a motion message
+ * @param pThis - data to free
+ */
+void free_SmsgsMotionSensorField(SmsgsMotionSensorField *pThis);
+
+/*!
+ * @brief Release memory for a battery message
+ * @param pThis - data to free
+ */
+void free_SmsgsBatterySensorField(SmsgsBatterySensorField *pThis);
+
 /*!
  * @brief convert a config setting message
  * @param pThis - data to convert to the protobuf format
@@ -130,10 +148,6 @@ SmsgsHumiditySensorField *copy_Smsgs_humiditySensorField(
 SmsgsLightSensorField *copy_Smsgs_lightSensorField(
     const Smsgs_lightSensorField_t *pThis);
 
-/* Suyash 
-* @brief
-*/
-SmsgsPressureSensorField *copy_Smsgs_pressureSensorField(const Smsgs_pressureSensorField_t *pThis);
 /*!
  * @brief convert a config msg stats message
  * @param pThis - data to convert to the protobuf format
@@ -150,6 +164,31 @@ SmsgsMsgStatsField *copy_Smsgs_msgStatsField(
 SmsgsTempSensorField *copy_Smsgs_tempSensorField(
     const Smsgs_tempSensorField_t *pThis);
 
+/*!
+ * @brief convert pressure message
+ * @param pThis - data to convert to the protobuf format
+ * @returns data in protobuf format
+ */
+SmsgsPressureSensorField *copy_Smsgs_pressureSensorField(
+    const Smsgs_pressureSensorField_t *pThis);
+
+/*!
+ * @brief convert motion message
+ * @param pThis - data to convert to the protobuf format
+ * @returns data in protobuf format
+ */
+SmsgsMotionSensorField *copy_Smsgs_motionSensorField(
+    const Smsgs_motionSensorField_t *pThis);
+
+/*!
+ * @brief convert battery message
+ * @param pThis - data to convert to the protobuf format
+ * @returns data in protobuf format
+ */
+SmsgsBatterySensorField *copy_Smsgs_batterySensorField(
+    const Smsgs_batterySensorField_t *pThis);
+
+
 #endif
 
 /*
diff --git a/example/collector/timac_features.h b/example/collector/timac_features.h
new file mode 100644 (file)
index 0000000..88ec538
--- /dev/null
@@ -0,0 +1,124 @@
+/******************************************************************************
+
+ @file  features.h
+
+ @brief TI-15.4 Stack feature definitions for Collector applications
+
+ Group: WCS LPC
+ $Target Devices: Linux: AM335x, Embedded Devices: CC1310, CC1350$
+
+ ******************************************************************************
+ $License: BSD3 2016 $
+  
+   Copyright (c) 2015, Texas Instruments Incorporated
+   All rights reserved.
+  
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+  
+   *  Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+  
+   *  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.
+  
+   *  Neither the name of Texas Instruments Incorporated 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 OWNER 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.
+ ******************************************************************************
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
+ *****************************************************************************/
+#ifndef TIMAC_FEATURES_H
+#define TIMAC_FEATURES_H
+
+/******************************************************************************
+ Includes
+ *****************************************************************************/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/******************************************************************************
+ Definitions
+ *****************************************************************************/
+/* Mode of operation defines */
+
+/* The TI-15.4 stack supports 3 modes of operation:
+   Frequency Hopping mode: Devices in the network hop on the different
+   frequency channels on the selected physical medium.
+   Beacon mode: The coordinator device sends periodic beacon and the rest of the
+   devices synchronize with the coordinator beacon for communication in the
+   network
+   Non Beacon mode: The coordinator does not send periodic beacons.
+   The devices in the network does not have to synchronize with
+   the coordinator. The device will send a beacon request and make a decision
+   to join a coordinator based on the beacon responsed from the coordinators.
+   */
+
+/*! If defined, builds the image with all the modes of operation
+    (frequency hopping, beacon mode and non beacon mode) */
+#define FEATURE_ALL_MODES
+
+/*! If defined, builds the image with the frequency mode of operation */
+#undef FEATURE_FREQ_HOP_MODE
+
+/*! If defined, builds the image with beacon mode of operation */
+#undef FEATURE_BEACON_MODE
+
+/*! If defined, builds the image with non beacon mode of operation */
+#undef FEATURE_NON_BEACON_MODE
+
+/*! Builds the image with the full function device */
+#define FEATURE_FULL_FUNCTION_DEVICE
+
+/*! If defined, builds the image with the mac layer security turned on */
+#define FEATURE_MAC_SECURITY
+
+/*! For feature all modes, every mode is turned on */
+#ifdef FEATURE_ALL_MODES
+  #define FEATURE_FREQ_HOP_MODE
+  #define FEATURE_BEACON_MODE
+  #define FEATURE_NON_BEACON_MODE
+  #define FEATURE_MAC_SECURITY
+#endif /* FEATURE_ALL_MODES */
+
+#ifndef FEATURE_ALL_MODES
+#if defined(FEATURE_FREQ_HOP_MODE) && \
+  (defined(FEATURE_BEACON_MODE) || defined(FEATURE_NON_BEACON_MODE))
+#error "Do you want to build image with all modes or just frequency\
+        hopping mode?. Un-define other modes or define FEATURE_ALL_MODES."
+#endif
+
+#if !defined(FEATURE_FREQ_HOP_MODE) && !defined(FEATURE_BEACON_MODE) && \
+  !defined(FEATURE_NON_BEACON_MODE)
+#error "Need to define at-least one mode of operation."
+#endif
+#endif /* !FEATURE_ALL_MODES*/
+
+#ifndef FEATURE_FULL_FUNCTION_DEVICE
+#error "Collector build need feature Full function device."
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* FEATURES_H */
+
index 78dde105077193d27c07b487829913903ad7cf81..1cda98e47a90629a7e7e525f7ac8f3ffebd39a24 100644 (file)
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 
+#define UTIL_SADDR_EXT_LEN  8
+
 /******************************************************************************
  Includes
  *****************************************************************************/
 
 #include "compiler.h"
+#include <string.h>
 #include <stdint.h>
 #include "hlos_specific.h"
 #include "util.h"
 
-/*!
-  Utility function to clear an event
-
- Public function defined in util.h
- */
-void Util_clearEvent(uint16_t *pEvent, uint16_t event)
-{
-
-    _ATOMIC_global_lock();
-    /* Clear the event */
-    *pEvent &= ~(event);
-    
-    _ATOMIC_global_unlock();
-}
-
-/*!
-  Utility function to set an event
-
- Public function defined in util.h
- */
-void Util_setEvent(uint16_t *pEvent, uint16_t event)
-{
-    _ATOMIC_global_lock();
-    
-    /* Set the event */
-    *pEvent |= event;
-    
-    _ATOMIC_global_unlock();
-}
 
 /*!
  Get the high byte of a uint16_t variable
@@ -113,16 +87,6 @@ uint16_t Util_buildUint16(uint8_t loByte, uint8_t hiByte)
     return((uint16_t)(((loByte) & 0x00FF) + (((hiByte) & 0x00FF) << 8)));
 }
 
-/*!
- Build a uint16_t from a uint8_t array
-
- Public function defined in util.h
- */
-uint16_t Util_buildUint16b(uint8_t *pArr)
-{
-    return(Util_buildUint16(pArr[0], pArr[1]));
-}
-
 /*!
  Build a uint32_t out of 4 uint8_t variables
 
@@ -195,6 +159,44 @@ uint8_t *Util_bufferUint32(uint8_t *pBuf, uint32_t val)
     return(pBuf);
 }
 
+/*!
+  Utility function to clear an event
+
+ Public function defined in util.h
+ */
+void Util_clearEvent(uint16_t *pEvent, uint16_t event)
+{
+    _ATOMIC_global_lock();
+    /* Clear the event */
+    *pEvent &= ~(event);
+    
+    _ATOMIC_global_unlock();
+}
+
+/*!
+  Utility function to set an event
+
+ Public function defined in util.h
+ */
+void Util_setEvent(uint16_t *pEvent, uint16_t event)
+{
+    _ATOMIC_global_lock();
+
+    /* Set the event */
+    *pEvent |= event;
+
+    _ATOMIC_global_unlock();
+}
+
+/*!
+  Utility function to copy the extended address
+
+ Public function defined in util.h
+ */
+void Util_copyExtAddr(void *pSrcAddr, void *pDstAddr)
+{
+    memcpy(pSrcAddr, pDstAddr, (UTIL_SADDR_EXT_LEN));
+}
 
 /*
  *  ========================================
@@ -209,4 +211,3 @@ uint8_t *Util_bufferUint32(uint8_t *pBuf, uint32_t val)
  *  End:
  *  vim:set  filetype=c tabstop=4 shiftwidth=4 expandtab=true
  */
-
index 54ed8e322bc835d62e7988a2a2bad414e670f38b..cc56e7d79ca78053c491983ce80e2fcc3439465b 100644 (file)
@@ -40,8 +40,8 @@
    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ******************************************************************************
- $Release Name: TI-15.4Stack Linux x64 SDK$
- $Release Date: July 14, 2016 (2.00.00.30)$
+ $Release Name: TI-15.4Stack Linux x64 SDK ENG$
+ $Release Date: Mar 08, 2017 (2.01.00.10)$
  *****************************************************************************/
 #ifndef UTIL_H
 #define UTIL_H
@@ -76,6 +76,15 @@ extern "C"
 #endif
 #endif
 
+#if !defined(CONST)
+#if defined(UNIT_TEST)
+/*! Allow constant to be used in different context*/
+#define CONST
+#else
+/*! Define CONST as const for local variables */
+#define CONST const
+#endif
+#endif
 /*!
  * \ingroup UtilMisc
  * @{
@@ -156,13 +165,6 @@ extern uint16_t Util_buildUint16(uint8_t loByte, uint8_t hiByte);
 extern uint32_t Util_buildUint32(uint8_t byte0, uint8_t byte1, uint8_t byte2,
                                  uint8_t byte3);
 
-/*!
- * @brief  Build a uint16_t out of a buffer
- *
- * @param pArr - the byte array to use.
- */
-extern uint16_t Util_buildUint16b(uint8_t *pArr);
-
 /*!
  * @brief      Pulls 1 uint8_t out of a uint32_t
  *
@@ -228,6 +230,14 @@ extern void Util_clearEvent(uint16_t *pEvent, uint16_t event);
  */
 extern void Util_setEvent(uint16_t *pEvent, uint16_t event);
 
+/*!
+ * @brief       Utility function to copy the extended address
+ *
+ * @param       pSrcAddr - pointer to source from which to be copied
+ * @param       pDstAddr - pointer to destination to copy to
+ */
+extern void Util_copyExtAddr(void *pSrcAddr, void *pDstAddr);
+
 /*! @} end group UtilMisc */
 
 #ifdef __cplusplus
index d3f4465de5a16df60fe8de7c094ef80d50771eb5..2b1db82a723ee84f15bec02e41afe73a7151d87f 100755 (executable)
@@ -199,6 +199,23 @@ Device.prototype.rxSensorData = function (sensorData) {
 
     }
 
+    if (sensorData.sDataMsg.frameControl & 
+        dtimac_pb.Smsgs_dataFields.Smsgs_dataFields_motionSensor) {
+      this.motionsensor = {
+        isMotion: sensorData.sDataMsg.motionSensor.isMotion
+      };
+      updateDigInSensor(this.so, 'Motion Sensor', 0, sensorData.sDataMsg.motionSensor.isMotion, 'Motion Sensor');
+    }
+    if (sensorData.sDataMsg.frameControl & 
+        dtimac_pb.Smsgs_dataFields.Smsgs_dataFields_batterySensor) {
+      this.batterysensor = {
+        voltageValue: sensorData.sDataMsg.batterySensor.voltageValue
+      };
+
+      updateSensor(this.so, 'voltage', 0, sensorData.sDataMsg.batterySensor.voltageValue, 'mV');
+
+    }
+
 
 
     /* update rssi information */
@@ -234,6 +251,25 @@ Device.prototype.rxConfigRspInd = function (devConfigData) {
                 humidity: 0
             };
         }
+        if (devConfigData.sConfigMsg.frameControl & 
+          dtimac_pb.Smsgs_dataFields.Smsgs_dataFields_pressureSensor){
+            device.pressuresensor = {
+              tempValue: 0,
+              pressureValue: 0
+            };
+        }
+        if (devConfigData.sConfigMsg.frameControl &
+          dtimac_pb.Smsgs_dataFields.Smsgs_dataFields_motionSensor) {
+          device.motionsensor = {
+            isMotion: 0
+          };
+        }
+       if (devConfigData.sConfigMsg.frameControl & 
+        dtimac_pb.Smsgs_dataFields.Smsgs_dataFields_batterySensor) {
+            device.batterysensor = {
+                voltageValue: 0
+            };
+        }
         device.reportingInterval = devConfigData.sConfigMsg.reportingInterval;
         if (device.capabilityInfo.rxOnWhenIdle == 1) {
             device.pollingInterval = devConfigData.sConfigMsg.pollingInterval;
index 658723e9d2f810c3a7d5b113fef50e166486fc14..6be79d8d683dee09d30214c1969854011ebc0d67 100644 (file)
@@ -103,10 +103,15 @@ enum Smsgs_dataFields
     Smsgs_dataFields_msgStats = 0x0008;
     /*! Config Settings */
     Smsgs_dataFields_configSettings = 0x0010;
-    /*! Pressure sensor*/
-    Smsgs_dataFields_pressureSensor = 0x0020; 
-    /*! Toggle Settings */
+    /*! Toggle Settings - changed to 0x30 from 0x20 */
     Smsgs_dataFields_toggleSettings = 0x0030;
+    /*! Pressure Sensor */
+    Smsgs_dataFields_pressureSensor = 0x0020;
+    /*! Motion Sensor */
+    Smsgs_dataFields_motionSensor = 0x0040;
+    /*! battery Sensor */
+    Smsgs_dataFields_batterySensor = 0x0080;
+
 }
 
 /*!
@@ -232,6 +237,20 @@ message Smsgs_humiditySensorField
     required uint32 humidity = 2;
 }
 
+/*! Motion Sensor Field */
+message Smsgs_motionSensorField
+{
+  /* true if motion detected, false if no motion */
+  required bool isMotion=1;
+}
+
+/*! Battery Sensor Field */
+message Smsgs_batterySensorField
+{
+  /* battery voltage in mv */
+  required uint32 voltageValue=1;
+}
+
 /*!
   Message Statistics Field
 */
@@ -322,6 +341,14 @@ message Smsgs_sensorMsg
       Pressure Sensor Field 
     */
     optional Smsgs_pressureSensorField pressureSensor = 8;
+    /*!
+      Motion Sensor Field 
+    */
+    optional Smsgs_motionSensorField motionSensor = 9;
+    /*!
+      Battery sensor field 
+    */
+    optional Smsgs_batterySensorField batterySensor = 10;
 }
 
 /* From API_MAC.H */
diff --git a/firmware/CC1310_LaunchXL/868MHz/sensor_cc13x0lp_868MHz.hex b/firmware/CC1310_LaunchXL/868MHz/sensor_cc13x0lp_868MHz.hex
deleted file mode 100644 (file)
index e292ec7..0000000
+++ /dev/null
@@ -1,3250 +0,0 @@
-:20000000004B00204D420100FDC90110FDC90110FDC90110FDC90110FDC90110FDC90110DB
-:1C002000FDC90110FDC90110FDC90110FDC90110FDC90110FDC901103BCA0110A4
-:20003C00AD040021490400217D04002181040021110500219105002141060021F8B51047C2
-:20005C00F8B50E4600210125AD0430470A48037800F00FF89B070BD0124C2078FF2807D0DF
-:20007C00FF2121700E490F24240220436031C882F8BDF8B5014800476B020021E54C000014
-:20009C00094801E00848000C064C05492278FF2A01D1CA7A22706031C8827046801C004737
-:2000BC0000620840A4060021070F0808F0B4084770B503461546012906D0002906D0114A73
-:2000DC002846FFF7BBFF70BD0F4800E00F480524834203D84008641E002CF9DCE340012053
-:2000FC0040031818820B012907D00649002380312846FFF7A5FFE0B270BD0249044B6C31C2
-:20011C00F6E70000835C0000A0BC862300830D2374060021F8B51A4E0546716B1948CC0942
-:20013C00E401002D11D01849097802290FD0007B044372B60120154F4002B8471148203863
-:20015C000088C109C90704D016E0C07AF0E7407BEEE70F497463CC61400AC0070CD001208C
-:20017C008003316B002D01D0014300E08143084631630749403948630020B84762B6F8BD1C
-:20019C0080020021880000219B0200217B3F00004040044010B5224A00215161214989685C
-:2001BC00C90009D42149204BCA0598424B6B01D8134300E093434B631D49FFF777FF10BD17
-:2001DC0038B51A4D287F002827D11A480088C009C00722D1124C606900281ED1684600F09F
-:2001FC0045F868460078012817D168464078102813D208206061686A4009400120600E4ACF
-:20021C000021D1620D4A02211160012108432060032108436862206038BD0948804738BDDB
-:20023C0000400440180000210000930880020021CF680000680000210011044080E200E050
-:20025C00C33B00000749002800D00420064A72B60978C90701D0105800E0802062B640B28C
-:20027C00704700006B0200215860044003B40148019001BDA56F00000000000001000300BA
-:20029C000A001F005900EB003902EA04F9099712EB1FA132784A0A66FA828C9E63B617C953
-:2002BC0064D6EDDEC1E3E0E5FF000000A36100007F1407134D00F1242E1F133FB00A3F000A
-:2002DC0007FF0000304000400140034007400F404F40CF40CF41CF43CF47CF4FCF3FCF2F32
-:2002FC00CF1FCF0F000000000F00080000003F00000040003F000000040068000E00DC00EB
-:20031C00060043001A00050000000000020000003F00000000000400C00000000400C00090
-:20033C000000070050C00091007070C00091007082312100319110B10070018101B100A1BC
-:20035C008231329110B101911110418141224F40F106007051C0019130181039833108D0BC
-:20037C001831416F3100319110B1831414165B680070251050C00091F4C3C0C02014036F0D
-:20039C003110410422C082312100319110B163393110410482C082312100319110B163392B
-:2003BC003110A2C082312100319110B1501015310514059200703F6452C0311031066131A2
-:2003DC00C102426412C13110213971065131E102426400708A65996588C02082503980391F
-:2003FC00001E9F4041C001301814181A89C0308260398039001EA94041C001301914191A6E
-:20041C003C64369110B1349110B154B0007154A064B0F0800022AF404012B09032B05382CB
-:20043C005339533985643F6411C122C1426470C1C26811C1C2C0426470C1C76850C000914B
-:20045C00277298921516141642105310F0C12182313131398139313151B070B272652772E4
-:20047C00999270B262107310F0C331822131213981391B107265E2C08231608280318039AF
-:20049C00020061B00071329110B151A061B0277230C2F36800008012B09032B0007050C01C
-:2004BC0000912772999262107310F0C3318221312139813951B070B27E652772989270B21F
-:2004DC0042105310F0C1218231313139813931311A107E6551A061B02772B0C018693F64D3
-:2004FC0001C122C1426401C1C2C04264151A3C64359110B153828564C012B09032B0007033
-:20051C003F6472C281C0426422C111C1426402C011C1426462C031C3426462C311C1426413
-:20053C0002C311C14264538253398564E2C347641122404142C281C8426452C211C1426495
-:20055C0072C2E1CE426402C281C8426402C201C84264B0C0546900703F6442C201C842645D
-:20057C0052C211C0426472C2E1C0426402C001C1426462C001C3426422C101C1426462C333
-:20059C0001C1426402C301C1426453828564007061B000711214231C7A4D339110B10070D9
-:2005BC00329110B17269007061B000711318321C8649329110B10070339110B17E690070B6
-:2005DC00C2C047641510C2C01216476441311514C0C0803105145410A07804040070E6C0D9
-:2005FC00863101CC161467106182F0C3010417140070067305720B720E7250B00071818025
-:20061C0060B050A092804122C3458080F1C11004301601110114016CD661D761D861D961BF
-:20063C00DA61DB61DC61DE61E061E261E461366339639180F2C0210421318280422A1214DF
-:20065C00321601112114016CEE610B62F4613963EE610B62F4613963E661E661E661E6610C
-:20067C00E661E6619464E661F964E6612A65E6615665E6614667E6611012B0900E720673C6
-:20069C00057210123090A761F0CF3C67D4C103C0C0C354644078509150781092607820925B
-:2006BC007078309280784092907860923078909110824039F0060110103110140092426735
-:2006DC00E661BCA0E2A054A0F08050221546408000222B470D6240A02D828D318D39108240
-:2006FC00F1C0100409101A824A391A041082803910040E10AB10BC10C21063642972E0CFDC
-:20071C003C6713B003B0C86653B050B054B064B013B0A5661082E0223846AE660071418035
-:20073C0001222B47F08010224B46F022184764B03122384263B0CE661082E0223846706654
-:20075C00386264B06F818F318F3DD0DFFF923C670071418001222B4764B0F080502265420C
-:20077C0063B01182C1226046CE6605671182D122524670665262618172818131813D8231EE
-:20079C00823DC0EFF19202933C670B62B081C091D381978290A2D3187F4EF30B1316E31CA8
-:2007BC00A44AC391E3813B149062BA1C8B46231E8B4AE31C8B4E90B207228B4290A21B1A02
-:2007DC009662E31CA44AC391E3813B18AB1CA04E9B1CA24ABC1CA442B2101082D0229D42D2
-:2007FC00F0801022A4466364A566A462AB1094629B10946200703082F1C0100463B00071BC
-:20081C00A86ABC10E0B00070B281C291D281018212185181121841828131813D121CBF4AF2
-:20083C00E2B032B0B0DFF2923C67F1C72114C34E12C86291729131B0E1B0007008C006C034
-:20085C0000C86091709100700182B081C091D0811018518110180614E18042828231823D29
-:20087C00201CE44AE2B02122E84632B00510A0DFF5923C672122E842E2A032B03182413951
-:20089C00F0C00104011EF642181610C01030081C04476010103C0610F1C76114FA4E16C85E
-:2008BC00669171818131813D161C014B769131B006C008C0007061818131813D4082803992
-:2008DC000118F11C174B0114B080C0221747BCB033B090EFF1920F933C67007003A063B033
-:2008FC0064B0EFB056650071408000222B4764B02A65EFA00071408000222B4764B003B0EB
-:20091C003862018262818231823D80EFF19202933C6703A05665E661A2806364E66150B04A
-:20093C000071E661E092D08200223D47C0B20070A080F022594330B002C1623101C0A080B2
-:20095C00001E5243F0225343A0F56031603953632010101A136F236E11161216546B0070C0
-:20097C00B1C700000000000061A500000000000000000000C5950000557601005D1A01003F
-:20099C00A97001005169010035690100ED1901000000000000000000511601009131010095
-:2009BC00E9450100D1CF00000F7201000E3FA73FAB0C18B82BBC0BDA50E5900AD338D8583A
-:2009DC0009CD2CD24008CB24CE3207C920CB2A06C71CC92405C618C82004C518441803C466
-:2009FC0014C61C024210C51801C310C416004100C312F6C008C0040093300100ED5C010060
-:200A1C00D9C300003D7601001F770100090D0100155D01008D76010099760100937601002B
-:150A3C00000000005B770100000000009D090100C80900000F4B
-:200A580000FF694501003C0A00005F7C0900001400704C00B0A30800000FF815B1A0B0D28C
-:200A780001B14901B700000300FA9803B325057F380000900D0020B421FD83015019AD0056
-:200A9800008002AF0304401F01B35801B482B201BC03037005F70810B82084AEB8614E906A
-:200AB80055B8D20701FA21FF030F008000230798FFE008003FA7781500BF20930300800575
-:200AD800BB7004DE04788001886A03F5F401FF10580000FC0400C4FB2264BDE907180000A4
-:200AF80038FF403A00A384060020FF40007F6440400003FF0507B12305330583FF05480A46
-:200B18000306B87A02FF009F84020044C703FF0401026384100043FF02B00483880300A3A8
-:200B3800FF88FB008460F13588FF601A418C60238202AF00DF7D43C47063C4B0FFC0000024
-:200B5800C46FFA03332034730085E63F01856DFF0100393201005377FC024F09E9BF8104FD
-:200B7800ED0E01006174F4237000304723BF45ADD000001BB98A2DDF0A7017FFE14F714F00
-:200B9800AF121851E1521752B70F0FFFE304D3FFEFD401FF08020020656B0100DBAD6F41F4
-:200BB800CF085955413F604087A24AC7AA00B8FFEF2A76F33776FF4301AD077CB0C40DFFBB
-:200BD800E0818AF3C5FD0D8AA04000011B00007DC800B002002A00028BB0F7180C0EFFE064
-:200BF80026000202DF0000440D0E8CE01200F5028C10E0017002000C00AD030170952B0420
-:200C18007122FFE4FEBE7CBF3784840100059540013D5A5E3F34C816002000316639D90421
-:200C3800FFE50DF0202898B307C2F1019531693F03FFEF020D200580650E0030FE6F3F31DA
-:200C5800FFE1C5A7FFE3FBD571709600E0190020F80175027D017D0608808007F400300842
-:200C7800FF2230001E5000A0007F40018002F004E09AF012307F0F117C7D255018A2E00074
-:200C98003101BF01115C01B00031A00F260741000D7F13826F1D29F40B300031FC00340474
-:200CB80017F00031550C00341400341C003424003403A9FCFFE7B631BDC2FFE802F1FFE1B1
-:200CD800A9541CF000315C00346400346CCA00347400347C0034FFEF129C01630020003187
-:200CF80093F193A98F26923F14EF91660100C9C1FF0014B2FFE2CCC590CCA1E81ACA33B826
-:200D1800C90600F3FFEF0CF00034FFEB1D1E98D070FFEF01052000712E7000316854067058
-:200D3800003170003478003480003455880034900034980034A0003495A80034B00034B8E4
-:200D5800003476B27F0049903A0F054132DA70FFF0007D000000E61A0020D8003059DC00F3
-:200D78007000F1004B00700500927F20010100005C2C0174000044FFF000F30100000700DC
-:200D9800B954190020EC01A80252E01A0133340100052000313C0034FFF0009D0000016CEA
-:200DB800DC02007200C048EF1800200300C4B958011F0005700100FFF000FD0000046017C7
-:200DD8000020241947002001010000310029A80170000031FFF0007B0100000F00F418000B
-:200DF80020016100FFF000003D2001004574010049750100003D00000060170020FFF000D0
-:200E18000200000039170000000F08000000FFF00001000000FFF00001000004FFF000017D
-:200E3800000004FFF0000000580A000008020020690D000044010020910D00000001002081
-:200E5800B20D0000A4010020D10D000078010020EE0D0000C80100200C0E0000E40100207C
-:200E7800180E0000E81A0020200E000000020020280E0000EC0100202F0E0000F001002031
-:080E9800360E0000F8010020F5
-:201000003C000000000000000000000034100000000000000000000001000000000000004F
-:1C10200000000000000000000000000001000000000000000800000000000000AB
-:20103C003400000000000000000000006810000000000000000000000100000000000000E7
-:14105C00010000000000000000000000080000000000000077
-:2010700030000000000000000000000098100000040000000000000001000000FFFFFFFF87
-:10109000FF00000001000000080000000000000048
-:2010A0002C0000000000000000000000C4100000040000000000000001000000FFFFFFFF2F
-:0C10C000FFFFFFFF080000000000000020
-:2010CC0038140000E410000095A1011091A70110A1C2011009B2011041B8011000000000EA
-:0810EC00000000002D000000CF
-:2010F400280000000000000000000000141100000000000000000000FFFFFFFF0000000093
-:081114000800000000000000CB
-:20111C00341400003011000065C2011069C101101BC2011091BA011000000000000000006D
-:04113C002F00000080
-:20114000341400005411000071C20110A5B6011099BF011045B601100000000000000000BD
-:04116000300000005B
-:201164002400000000000000000000008011000000000000000000000000000008000000AE
-:041184000000000067
-:20118800240000000000000000000000A41100000000000000000000000000000800000066
-:0411A8000000000043
-:2011AC00240000000000000000000000C8110000000000000100000000000000080000001D
-:0411CC00000000001F
-:2011D00000000000681A002004000000000000000000000020000000701000003000000089
-:2011F0001C110000701A00200400000000000000000000000C00000030130000180000009D
-:2012100040110000781A002004000000000000000000000024000000481300001800000020
-:2012300000000000801A002004000000000000000000000010000000A01000002C000000F4
-:20125000CC100000881A002004000000000000000000000020000000641100002400000023
-:20127000FFFFFFFF901A0020040000000000000000000000280000008811000024000000AF
-:20129000FFFFFFFF981A0020040000000000000000000000580000003C1000003400000094
-:2012B000FFFFFFFFA01A0020040000000000000000000000100000006013000018000000A9
-:2012D000FFFFFFFFA81A00200400000000000000000000001C000000AC110000240000001F
-:2012F000FFFFFFFFB01A002004000000000000000000000038000000F41000002800000090
-:20131000FFFFFFFFB81A002004000000000000000000000054000000001000003C0000002B
-:1813300018000000000000000000000040130000080000000000000032
-:1813480018000000000000000000000058130000080000000000000002
-:18136000180000000000000000000000701300000800000000000000D2
-:0813780002000000F08A0100F0
-:041384000100000064
-:0413880000000E0053
-:04138C0000000F004E
-:041390003200000027
-:041394000100000054
-:04139800E019002038
-:04139C00000200004B
-:0413A000BD76010015
-:0413A400FDC901106E
-:0413A8000000000041
-:0413AC00000000003D
-:0413B0000800000031
-:0413B4000000220013
-:0413B8002C180020CD
-:0413BC00010000002C
-:0413C000F8190020F8
-:0413C400080000001D
-:0413C8000000000021
-:0413CC00000000001D
-:0413D0000000000019
-:0413D400080000000D
-:0413D8000000000011
-:0413DC00000000000D
-:0413E0000100000008
-:0413E40024190020A8
-:0413E80006000000FB
-:0413EC0001000000FC
-:0413F000C8160020FB
-:0413F40000000000F5
-:0413F80000000000F1
-:0413FC0000020000EB
-:0414000000000000E8
-:021406002900BB
-:021408000100E1
-:02140A002500BB
-:02140C002F00AF
-:02140E003000AC
-:021410002D00AD
-:021412000100D7
-:0114140001D6
-:0814180003000000AC8A010092
-:081420000000000000000000C4
-:0414280000000100BF
-:04142C0000000300B9
-:0414300083C4011060
-:041434003C14000064
-:041438003C14000060
-:04143C0000000000AC
-:041440008000000028
-:041444008000000024
-:0414480000000000A0
-:04144C00F81900206B
-:0414500057720100CE
-:041454002000000074
-:041458005C8A0100A9
-:04145C00A88901005A
-:0414600009C30110AB
-:04146400E73001006C
-:041468002735010023
-:04146C0095C801100E
-:0414700097C8011008
-:041474000000000074
-:041478005B8A01008A
-:04147C00788801006B
-:04148000908801004F
-:04148400608801007B
-:0214880008005A
-:02148A00090057
-:02148C0001005D
-:02148E0000005C
-:01149000015A
-:041494000000000054
-:041498000000000050
-:04149C00000000004C
-:0414A0000000000048
-:0414A4005F7701006D
-:0414A800E54F01000B
-:0414AC0005630100D3
-:0414B000995301004B
-:0414B4009754010048
-:0414B800E9580100EE
-:0414BC00951801007E
-:0414C0006F74010044
-:0414C4006D2C01008A
-:0414C8000DC801103A
-:0414CC001DC8011026
-:0414D0000800000010
-:0414D40024000000F0
-:0414D80018000000F8
-:0414DC0028000000E4
-:0414E00020000000E8
-:0414E4003C000000C8
-:0414E8000C000000F4
-:0414EC0034000000C8
-:2014F000C7482DE9F04F0C4620274FF0000C01211F40ADF14C0D6546DFF81893DFF818837D
-:20151000DFF818A3DFF818B30170002F0F93C0490E9205EA020081F800C008BF00287CD136
-:201530000E984FF0E047194662460F401040002F08BF002845D10F9E0E9B4FF48601B9F8E4
-:20155000B200DFF800C3CDF8289002EA0607002F01EA030108BF00291AD1B94902EA0607C5
-:20157000002F01EA030108BF002970D0374643460E9EDC8003F128011881002F81E8C000F1
-:2015900004BF311CB1F1806F61D102285FD111E0374643460E9EDC8003F128011881002F2A
-:2015B00081E8C00004BF311CB1F5803F4FD1B0F5505F4CD1186A674643693868214698472B
-:2015D00043E04646C249B6F9067091F90000BC42A0F10100087017D1328906F1280003C8FD
-:2015F000002904BFB0F5803FB2F5505F08D0002904BFB0F1806F022A02D010F079FF03E088
-:2016100012F076FA15F022FC524692F90000401E10706FF00101F18015E0B64E3778434621
-:201630006FF00100991D08806FB1B3480078832802D08120594608704646316919B160469E
-:2016500088472146E7E7CDF82890B9F8B2000F9E0E9A2F46022137401140002F08BF0029C2
-:2016700000F07A83A5490B91A64A119243F20141814200F04B83C91C814200F04783944919
-:201690000A4691F900104746491E1170B7F906108C4205D043F60401814240F0468342E353
-:2016B0004046283090E800032F464FF4820607EA090706EA0800002F08BF002811D15648EA
-:2016D000283003C82F464FF400320F400240002F08BF002A02D110F00BFF26E312F008FA52
-:2016F00023E328460B9F109097F8380081245D4618B92F780FB115F0D7FD2C70804C002074
-:2017100067786081119EE770054635702069DFF8F891017A457A05F0070201EB022135F0AE
-:201730007F05A1F104011FFA81F840F0D782B8F5006F80F2D3820A3041460EF09DFFE169DB
-:2017500004F114000522083115F0C8FBA8F1030305200D961FFA83F8E27DA57D217E0B9B87
-:201770006081C2F3011B93F83860617105EB02255EB161480078862807D1BBF1020F04D153
-:2017900005F00700022840F0A982281300F0020ABAF1020F58DAA37805F00700022841D140
-:2017B0004E467068002B0C903CD1E16909A801220D3115F093FB062060810C9880478046B2
-:2017D0000C96C74F4C48B6683A680078862819D122B915F069FD48463A6886689DF92400BF
-:2017F00015F0ADFF9DF924705077002090774046D777B04705F0100010F098F904E0C046C5
-:20181000E41A00204046B04715F088F96AE2C046CC1A0020280D002028160020CD1A002085
-:201830001C320020344800780026862808BF0126CDF830905EB1002012F0CCF9E77805E0B5
-:2018500000000C8C90190020CDF83090A37887B17BB9012F00F03D82022F03D115F0070F0C
-:2018700040F03782032F04D105F00700032840F03082280908D315F4405F00F02A82C74800
-:201890000778002F00F02582BAF1020F02DAA80A80F01F82C3480078C0F381098611B9F197
-:2018B000010F00F01682012E00F01382BBF1030F00F00F82BA48BBF1020F0BD010F80910D2
-:2018D000805D4018C7B22EB3E80923D3BF1E0EE0CE1A002000EB09018019097900794018CE
-:2018F000C7B2E80912D259EA060313D0BF1CFFB210E0C0462414002020320020EC130020F0
-:20191000883100201E3200208C14002059EA060308BF0227C5F3002BA7EB0B008045C0F27B
-:20193000D881A8EB07002909584480B2208124BF2521109110994018743080B215F0C0FBA2
-:2019500094F80280E060002800F0C381002174220FF013FA0020B8F1000F207103D10D9927
-:2019700005F0200008700D9803784FF00008002B52D0BBF1000F4FD1D748008805F0070197
-:2019900003291ED18108424609D3554991F82E30A3B90B681BB15B7E33F07F030ED16AB98F
-:2019B0008008C24607D3D7498B68887813B1984794F8048010B9BAF1000F02D004202071DD
-:2019D00080460B9894F805A090F8383033BBCE49002352460220B8F1000FCB7201F10A0A90
-:2019F0008AF80000AAF1020007D000F1020A9AF8001041F010018AF800100A990271052231
-:201A1000A1F87820C1F8840014F0F6FB504603210EF032FE94F8048094F805A0E16801F1EF
-:201A300074004860886523890B812089A1F85C0028090ED3CBF1030082B2A1F85C20886DA8
-:201A5000D44915F04BFAE1688A6DB1F85C00801888655448CF4B0078C0F3011218788D81B3
-:201A7000BBF1000F00F0780040EA020048EA00050D744FF0FF038B7318BF4FF0000A81F877
-:201A9000306081F83A9081F849A06089002FA0EB0B0085B2658100F01481E069E7802918C0
-:201AB0003A460831684615F019FA3E48EE19B5B26581E16800780A7C6E46C0F38103C0F3D8
-:201AD000011BC0F38108002B02F0400A4AD0C0F301100023022805D1D0090FD202E0C04694
-:201AF000640E00209DF801209DF8000000EB0220A1F844000DF10206A1F84200AD4AB1F88E
-:201B10004400B2F84A20824203D04FF6FF72824222D1B8F1030F12D072783078A54B00EB4F
-:201B3000022082B24A86B3F84810B61C0120914211D04FF6FF71914218BF00200BE0E06813
-:201B50003146323015F0D9FDE0689A4932303F3114F0F2FF08360346002B00F0B580204692
-:201B7000E168C07D831125D0BBF1020F03D0087CC00903D309E05AEA080206D172783078F3
-:201B9000B61C00EB0220A1F84200032B0CD07078327802EB00220A850CE0C04644120020D9
-:201BB000B88A01009F310020E0683146283015F0A4FDE16888890009C0F08380886D3A469A
-:201BD000694615F08BF9E068816D79188165E669B0F85C1001227F18A919A0F85C70083194
-:201BF0000DF1250015F07AF96F1CBDB26581E1689DF82500896D0870E2689DF825609DF8F0
-:201C10002530906D401C9065B2F85C00401CA2F85C0006F0070082F82400C3F3C10182F82C
-:201C30002510208992F824708046002F4CD05F4F7F183E78361D8642E68045DCE069291860
-:201C50003246083105A815F049F93A789DF817C0111D481980B29DF81450608105EB0C60BA
-:201C7000E3689DF8165000EB05409DF81550042900EB052098610BDDE06806A9521E1C3013
-:201C900015F02CF93878E3686844C07D83F82600986D05A9324615F021F9E068816D71187C
-:201CB0008165B0F85C10A8EB06077118A0F85C10791E89B22181B0F85C2001818918A0F89A
-:201CD0005C1000F07FF80DE015F04EFC10F010FC08E015F059FA05E02015002015F054FA0C
-:201CF000CDF83090DDF83080D8F804008047E1690A68002313710968E161D8F80810884762
-:201D100013E0C046381A00209418002040462A4F00784146401C087097F900003946401E3D
-:201D3000087010F0E5FB14F05BFC0A980B9D214F00216FF00106A0F8B21095F83800FE8002
-:201D500010B11198007808B915F080F81B481B4990F90000401E0870174890F9000010B97C
-:201D7000134800210170154890F90000A0B10F9F0E9A4FF0E040022138401140002808BF9F
-:201D900000290DD00D4890F90000002808DC15F08BFA05E09E3100200020014605F0AAFEE1
-:201DB0000749002013B00870BDE8F08FA08A0100CA1A002028160020CE1A0020CD1A0020A8
-:201DD000E41A00202DE9F04FB84CE0686189E2692589806DADF13C0D0E46891808312A46DF
-:201DF00015F07CF8A81986B2E068816D6D188565E0690122311808310CA815F06FF8761C1C
-:201E1000B5B20422E06965812918083104A815F065F89DF813109DF8100000EB0160E3687A
-:201E30009DF812102D1D00EB01409DF81110658100EB0120049015F061F9D863049814F0EF
-:201E5000FDFDA3F84000EA2014F0C5FE0220B849E26808702079117C084310749DF930002C
-:201E700015F06DFC82F8460011899DF93000DFF8C4B282F8480002F174009065B2F85C0053
-:201E9000401A51684FF0000909185160908982F84790830A18D2030957D310F0070F07D001
-:201EB00000F00700032812BF081C5068401C48E05068C17801F00703491001F0380101EB64
-:201ED00043014018001D3CE0171C02D115F0ECF9E268B889800A2ED379684878C6112AD1A4
-:201EF0003E89796648464D780B7805F07F056D0005EBE3157E2D0DD07F2D09D003F07F0306
-:201F10001818801C5B1880B2991C8642EBDC08E0494600E00121801C87F8601080B28642FE
-:201F300001DA484605E07968411879603989091A3981A7F86800506E10B1B2F86800B0B198
-:201F5000506850619089000916D292F86000002800F0FE80104611F00FFAE268D06C002870
-:201F700000F0F680B2F85000002840F0F18015F0E9FA4846E060E0E14846154605904E469F
-:201F9000069005A907AB06AA95F824700796284604F0FFFC002840F0D080059A6E69686882
-:201FB0002B89311A581A1FFA80F80AB915F07CF9B5F85C0000900196CDF808800698001D9A
-:201FD00003900598A969AB6D3A4615300AF060FC002840F0B280B54895F860302E89C15D03
-:201FF000701A288113B1284611F0C6F9AE8906F00706032E02D168680078E87395F80F80AF
-:20201000732009A913F0BAFE83200DF1320108F09BF8484649460D900AE0C278012A03D174
-:20203000002F08BFDC2027D0001D491C0990C9B29DF8320088427FDD09988278032E07D081
-:202050000378B3420DD09BF800300BB1022E08D0032EE9D10378032BE6D103465B784345AD
-:20207000E2D1BB10B3EBA20F05DA02F0030207F003039A42D1DD48468246059895F80FC0D7
-:2020900090F814E04946D84601E0491CC9B28E454CDD07694B00032E03EB070208D1FB5C37
-:2020B000032BF2D152786245EFD10AE0883100201278B24205D098F80020002AE5D0022E19
-:2020D000E3D10698077D002F08BFBAF1DC0F33D0A869B0F1FF3F27D0712008A913F04EFE13
-:2020F000AA69089B484605998B4207D10699064601EB8601C9680D96914213D8401C2C339E
-:202110000228F0DB06980D99521CB2F1FF3F00EB8100C26002D107980121817085F8019006
-:2021300048460BE0DB2009E0DB2006E0DC2004E01C32002024140020DD206870E2685070CC
-:202150009069577850651FB1F22014F044FDE2687C4DDFF8F88195F83800002874D091891D
-:20217000794E01F00701022938D1A778002F35D15778002F32D106F11C010888EB6D401CAE
-:202190000880506E8DF831900DF131020421984730B94046006818B19DF8311080F8681008
-:2021B000E1680DF12E0000906D6E486E4A460BAB2831A84766480078862808D1F08BE76874
-:2021D000401CF083B88900F010000FF0AFFC15F0B9F94846E06014F0A1FCB0E05D490F7852
-:2021F0004FB35778002F40F0A8809DF83000378C20702379781C002B308402F1280602F13C
-:202210001C020CBF4B46082353484946016014F0D5FD0146009351480192038832460D2072
-:2022300005F08EFA10B913F0E7FF01E014F014FC5846E268007838B1D5F8801021B110469C
-:2022500088475846E26800780A9210B1907BFF286FD0938913F007003DD0401E53D0801E1F
-:2022700067D1C3F30130022803D15068007807282FD0108900285CD0104641684A1C4260DF
-:202290000F788446C7739CF824608EB9002F50D00A2F4EDA0189324EF01910F8010C8842A2
-:2022B0000BD0082F45D1082907D042E0A48A0100C07B00283DD00A283BDA60460189491E3F
-:2022D0000181C17B0B3101700A99C87B401CC8731BE0322018E0234E96F871000F280CD03E
-:2022F00014F02AFF48B9181300F00200022804DA4046001D01680A98884796F8A7000A9A25
-:202310001074152000E0162010700A99454605F1280013F01FF8144E7068804795F830102A
-:20233000491C85F83010B1688847202015F00CF84FE70AA812F010FA4BE710F0D9F80FB084
-:20235000BDE8F08FEC130020C4180020640E0020203200201E320020981800203212002086
-:20237000D4860100A81100208C1400202DE9FE4FE54980460122A1F130000260DF48076825
-:20239000002FFCD0DE4ADF4EC027E048E04B17603268920808D2324652F8042C03F14104F3
-:2023B000120C42F0F00222704FF0000A8346C1F800A0DFF864C3DBF80810D64D0191880E9A
-:2023D00043D2480E41D3802018744FF6D802A3F8512018702868C0F30464162CA8BF203CDF
-:2023F0001F460F3F387800F01F001628A8BF2038844223D0624602F1980EDA4ACEF800A0DA
-:20241000261A022E05DC16F1020FB8BF6FF0010600E002263018166800F01F06844246F483
-:20243000F856A7F866604FF001061660E8D11068374617601068CEF800601068284600680C
-:20245000C0F30420162808DB06E0A5F1D0000068C0F30460162800DB203800EB2170401C60
-:20247000162805DA10F10A0FB8BF6FF0090000E01520DE4F00F01F0040F4F850A3F8590075
-:20249000386880083ABFEA48C0F800A041F04061019E6246A5F13804C80E8F0E80F00100B2
-:2024B00000F00100106087F0010000F0010090602068C0F38367C0F38F21B00C23D23046A3
-:2024D00040F3072000280BD542425046490805D17F0806BF0127391C4FF6FF71521EF5D195
-:2024F000002810DD4FF6FF72490041F001018A4207D27F0047F001070F2F92BF01210F273B
-:20251000111C401EF0D141EA0741182012F038FE2068D24E2768C94CA6F10409C0F3870151
-:2025300007F0030041EA0021D9F8040040F2FF3253468FB22C21466800972746A7F140005C
-:20255000B0470C3D2868C0F30D011C2012F018FEB84955F8080C014000F07C4001431420BF
-:2025700012F00EFE55F80C1C01F47C000904090C0143102012F004FE624955F8042C096824
-:20259000C2F30350C2F30343490813D2DBF800100D0510EB257003D41028A8BF0F2000E0E8
-:2025B0005046090413EB217303D4102BA8BF0F2300E0534643EA001302F47F4002F0FF01CB
-:2025D000B8F1220F40EA034041EA000124BF02F0804211430C2012F0D3FD974DB8F1220FD1
-:2025F00032BF01202868C0F30070B8F1220F4FEA400040F0200084F8090126BF2868C0F3B5
-:20261000407001208E4EB8F1200F40F0100084F8090138BF514606D33168C80C00F44070E7
-:20263000C1F384510143282012F0AAFDB8F1200F26BF3068C0F301505046B8F1220F4FEACA
-:20265000400040F0600084F80C0126BF2868C0F3C0605046B8F1220F4FEAC00040F08000B0
-:2026700084F8010126BF2868C0F345505046B8F1200F4FEA800040F47C40A4F89C0138BFC8
-:2026900070490AD3306801038A15920501F47C1100F00F00114341EA0031082012F070FDFA
-:2026B0004FF48000A5F1D0012060674A886D40F21E236FF31F40834216D90868030E13F04E
-:2026D0000F0F03F00F01C0F3034018BF491E072805D006280EBF0720801C00F00F0041EAA9
-:2026F0000011A2F108000170DDF804C0CCF381477F1E13D07F1E3BD036E0C046940222434E
-:2027100000600C40B03F005040100940AC3F00501562084088130050000020432846006807
-:20273000810C21D24FF480412160D2F80210430AC0F3033703F0800321F08F010B4347EAD8
-:202750000301C2F80210D2F80130060A66F30303C2F80130116800F0E70721F0E70147EAC3
-:20277000010004E02C2009404FF00040224610603B480068C0F3C0070FB94020A0624FF4A6
-:202790000070206428684027C0F3C14040F0300084F8C800CCF3815050B3401E03D0401EC4
-:2027B0001FD002211EE0012013F090F90646042031460FF095FF042013F088F98642FAD197
-:2027D0002248066826F07F4012F04EFFD9F81400036807214FF06022300E98474FF4806074
-:2027F0002060032104200FF07BFF08E000000940042001210FF074FF154812F035FF203DAF
-:202810002868144947F6180600F03F0084F8CB0F144B0E80D9F800201868D1680220884753
-:2028300011480D4D076001212960BDE8FE8FC04694042A43FCFCFC008C13005040A00C4077
-:202850009813005000803F400A600840A83F0050BD37860070B00C4094046042A4010010B0
-:20287000B03F00502C20094000600C402DE9F04F0320ADF15C0D12F027FFD14D00240220BD
-:2028900005F11C0141F80C4F401E8C60FAD105F14000062701467F1E21F80C4BFBD14FF0AA
-:2028B0000808C849A0F80080C74E8160C749361D26F003000B1A2B62A861E861AA6905F150
-:2028D0001C09B44607460E46914200F2E581991000EB810121F8044CE8233B804FF6FC7700
-:2028F00007EA0C0200F1E803B61A2B6107EA0601EC39A0F8E81020460DF03AFE6861C9496E
-:20291000D9F80000DFF8C89228610A6809F10C00026049684160C4498246424613F0B4FCE0
-:2029300028B9C24801685246116040685060C048C14FC24EC24BC764BE490665C14A43654D
-:20295000C14F816400F1480B8265C04EC765C04B0666816C436609B1204688470FF056F9C3
-:202970002146D24E15910C220E9106F120000EF004FACF4F0222ADF8208041F270737762C4
-:20299000708CADF82220696AB3621027099740F01900708408A8884700280CBF0A9F271CEA
-:2029B0000120ADF82C80696AADF82E000BA888479DF830004D4628700D9969605FB1D0210D
-:2029D00039707C70B870FC703C713946BC600220FC6011F09BFFB749182001220DF0F4F918
-:2029F000E220514614F050FC182012F07BFB68706868B246CAF808000BF02EFC0AF1700034
-:202A1000AD4EA860DAF80870C6F824B0AB4DB76005F10C0105F118000DF00EF8A8600D206F
-:202A300014F030FB00B1A0460E2014F02BFB08B948F01008A249A86814F05AFDA149C8222D
-:202A500005F1240011F034FA9F48B8F1100F68604BD113F07DF8706A002846D0C268002AA6
-:202A700043D006278DF810700220ADF8120004ADADF8144095E80300904725468DF81070B7
-:202A90000320ADF81200706AC268ADF8145004AB93E8030090476D1CB5F5FA7FF3DB756AE2
-:202AB0008DF81070042004ABADF81200EA68ADF8144093E8030090478DF81070052004ABFE
-:202AD000756AADF81200EA68ADF8144093E80300904704AD8DF81070706AADF81270C268CF
-:202AF000ADF8144095E803009047DFF8E09109F1140009F108010CF09FFFC9F80400204658
-:202B100014F014FD25464FF006084FF0040B1490A9F1020707F8024F02207870284614F077
-:202B300076FD0146149AD9F80400C9B212F072F96D1C022DEEDB664909F120004FF4FA7267
-:202B500011F0B6F9706A00284FD00769DFF884916FB10096494612A80A688988026012AD95
-:202B7000818095E8030001232246B847706A00283BD0C26852B1494612A80B6889880360CF
-:202B900012AF818097E803009047706A68B307695FB38DF80880ADF80A8010A8ADF80C40AE
-:202BB00002AD009095E8030022460223ADF84020B847756ABDF840006F69B080AFB109E090
-:202BD0008C140020D164010021320020004B0020101A0020BDF8400002AD401CADF84000E2
-:202BF00095E80300022210ABB8472DA014F0F4FA706A00283ED00769002F3BD08DF81880D1
-:202C1000ADF81AB00EA8ADF81C4006AD009095E8030022465B46B847E0B90E981930159086
-:202C300028E0C046C8FF0100D88A0100F0120050080200209D9E0000A9450100A12A0100D9
-:202C5000F5140100110C010051020100FD0D0100B93601008DF818802046776AADF81AB01A
-:202C700006ADADF81C407C690F9095E803005A460FABA04715980E900DF008FFE0200E21CD
-:202C900013F0DCFF13F078FE0AF10200012113F09DFE01F093F9FCE722F8024B14E6C04649
-:202CB00054492053656E736F7200C0469012002020BF020009890000A41000201417002073
-:202CD000955201006D6D0100056F0100A8170020D9020100FE8A01002DE9F04FADF18C0DDC
-:202CF0001C911E93CC491D920A6806460DF156000260496841603046694612F0A3F90028F1
-:202D10001F9004BF0020229000F0F78102200027B61CDFF84CB32090D34D2297304602A95C
-:202D300010F0A7FB5FEA000900F0E48122990EA816220EF022F89DF809707F1E00F08280DC
-:202D50007F1E40F0CF81B9F10A0F40F3D681B61C316804A80160361D318805AF42F20B0082
-:202D700039800DF1160110F005FEBDF81600BDF81410884200F3C181B61C16F8010B16F8D5
-:202D9000017B16F8014B8DF8380016F8011B8DF839700EAA8DF83A40304605F01FFBBF49F4
-:202DB00009780028064400F0A8811F9C012904F1020400F091814FF400500DF14E0110F035
-:202DD000D9FD0DF14E000DF15601082213F05CFA40B11C990DF14E00082213F055FA002853
-:202DF00040F07A8142F2010004A907F0FFF842F20B0005A907F0FAF842F205000EA907F00B
-:202E1000F5F80DF1390142F2060007F0EFF80DF13A0142F2070007F0E9F80DF13B0142F2AB
-:202E3000090007F0E3F89DF83B0028B1022840F0538142F2030001E042F20D000FA907F0C8
-:202E5000D5F849E1B9F1040F40F35781B61C16F8010B16F8017B16F8014B8DF8380016F808
-:202E7000011B8DF839700EAA8DF83A40304605F0B5FA0028064400F040811C9806A909F0A8
-:202E9000A7F99DF83600002840F00A819DF83B0000287AD195F82D70002F00F0FD8095F83E
-:202EB0002F00874207D095F888000A2801D10AF063F9686B1EE06F6B4FF400500DF15E0129
-:202ED00010F058FD13F0DCFA4FF0FF08229C2190A24695F82D00A04240DC686BB8F1FF0FD5
-:202EF00008D008EB88040019007912F0FDFA686B071923D195F82D300746002B08BF229C12
-:202F100019D05846229C40681946D8467F1F7F1DFA782AB1491E04F10104F8D17F1D0AE000
-:202F3000804795F82F10491C85F82F10D8F80810884795F82D30A34200F094801C980BF094
-:202F50008BFF38710120F870FC788DF8364038798DF83700229B8DF82330A1E0387910F002
-:202F7000F3FE014608220DF15E0013F08DF940B138880104219814F0CEFB82453CBF824634
-:202F9000A046641C7F1DA4B2A3E795F82C70002F00F0828095F82E00874207D095F8880085
-:202FB0000A2801D10AF0E8F8286B1EE02F6B4FF400500DF1660110F0DDFC13F061FA4FF08A
-:202FD000FF08229C2190A24695F82C00A0424DDC286BB8F1FF0F08D04FEA48140019C07FB0
-:202FF00012F082FA286B071925D195F82C300746002B08BF229C1CD0DBF80400229C1946D4
-:20301000D846203F2037BA7F42B1491E04F10104F8D120370DE0C046C88A0100804795F885
-:203030002E10491C85F82E10D8F80810884795F82C30A34216D02299384620220DF09DFEA4
-:203050001C980BF009FFF8770123FF2039462022BB770446787206A8FC720CF021FB1FE09D
-:203070008C140020612055E0A42E0020F87F10F06BFE014608220DF1660013F005F938B139
-:203090007968219814F047FB82453CBF8246A046641C2037A4B297E764203BE0ED13002066
-:2030B0009DF836000EA9162240F004008DF8360008A80CF0F5FA1F9C9DF83B00A41C40B180
-:2030D0009DF84D700FA839460FF024FE3F1A8DF8357006A80FF0AEF820984844801C80B24F
-:2030F000209003E01F9C4E44B61CA41C209884423FF714AE2098022803DC229A672011467D
-:2031100004E01F9A911C121A2298921C1D9B19801E990A8023B0BDE8F08F70472DE9F04F2C
-:203130000F46C64E42680168ADF14C0D726080687162C54CB06077B1C1487A68C761BD69FD
-:203150004262BA68026225B1BE4D14302860BA690260F86820604FF008084FF0010AADF8E5
-:20317000188006A8ADF81AA08847B84D9DF81C10089B69706B6108B113F056FB3868804749
-:20319000706880474FF400578346ADF800801E200197716AADF802006846884711F076FDAF
-:2031B0002068406880472068C16810A888472068836810AA002001469847606008B913F0D9
-:2031D00033FB13F047FDA248A34FA24A2861A34C1760A4495460A24BD160A34FA448936023
-:2031F000A24C1761A34F546100F118013964BA64A14B3B651439796403F140029F4B7B613B
-:2032100003F16A01B9619E4BFA649F497B629D4B19609E4959603B669D4999600024AC6068
-:2032300080F838409B49D9609B4999619B4999629B499C4A99639D4B13619D4B53619D4B0E
-:20325000D3619D4B13629D4B1C635C634FF0FF0983F8389083F83B4083F83C4083F83D4038
-:20327000AF49C0F89C10904B53601123BB81944AC263944B0364944A4264944B8364944A73
-:20329000C264944B0365944A4265944B8365944AC265944B0366944A4266944B8366944AEC
-:2032B000C266944B0367944A4267944B8367944AC267944BC0F88030934AC0F88420934BD8
-:2032D000C0F88830924AC0F88C20924BC0F89030914AC0F89420914BC0F89830914A1460E7
-:2032F000914B83F800A05C80022012F04BFE0222E862494614F027FAE81C0222494614F0A1
-:2033100022FA022012F03EFE8849086008680222214614F018FA11A80FA911F0D3FCE86A44
-:203330009DF84410421C01709DF8440010703C709DF84400A87013F063F8A861716AADF8E8
-:2033500008801420ADF80A0002A888471527ADF810800398ADF81270716AE86104A88847A7
-:20337000744F05983C70801E2862734B1C70704D6C70AC7040F60D00EC6013F0A1FE40F2A7
-:20339000FF7907468DF8284009A94246ADF82A909DF829002F6100F0F0008DF82900286965
-:2033B000099713F09BFD2C62EF616448A0F8009011F0B2F9624D2878012803D0204601466C
-:2033D00004F098FB5F4804705F4F3C702878012803D02046014604F08DFBB1685846884796
-:2033F00002F046FC13F026FD5848007811F07EFB5046214604F07EFB11F04EF9544804700F
-:203410002878012803D02046014604F073FB0FF0A1F81820ADF830804E4FADF832004E4DBD
-:203430000D97716A0E950CA8884708B113F03CFF01F074FD13B0BDE8F08FC0468C140020D1
-:20345000281600205C1700200432002064180020C73C0100B030002055870000B1270100C0
-:20347000A7670100DDC0000055DF000055100100EC1300201415002038300020AE830100D4
-:2034900029E300001C31002049AF0000B1A20000A9370100054F010011280100BDEB000040
-:2034B000F3760100640E0020AD6D00004DCC0000CD5E0100650F0100854A0100EC17002039
-:2034D000E9F7000075750000251301008D5001007580000061EA0000614C0000E92C0000F9
-:2034F00095FF0000A97E000069CB000045700100FD9F000085390100C560010011D40000B1
-:2035100011B500001DAE0000E367010001E90000C9350100A1600100B54001003129010083
-:203530007D740100003200206C0A0020242D0020883100201C3200201E320020F00D00205C
-:20355000E41A002020320020183200204F1200201D320020E7F70000DC1900202DE9FF4722
-:20357000D64C0F460546F80B80F08B81B80880F07881F80A80F05181DFF84483DFF844A331
-:20359000B80F80F0D080207A002854D1380954D3002525700126A671284612F0C1FFD14804
-:2035B00013F06AFFD0492A4604F1580014F0A8F804F1400090E8000313F05AFD2379B0EBD4
-:2035D00008004FEA103071EB09010905012B40EA0100E0640DD194F85010B0EBC12F08D816
-:2035F000E07830B904F1D4004FF0005113F0BEFC17E040F609002671BC49208504F12803CD
-:2036100094F83500E57000F0F00040F0010084F8350094F834000B6000F0F00084F8340007
-:20363000E5622846294604F1400282E80300E06427F008074DE1380972D2B80B5ED2780B1F
-:20365000C0F04781AE69CEB14046B04216D0A86843681BB105F1200199424DD1407B10F09C
-:203670000F0F0BD1688C40F60901814206D128466FF4807100224FF00073B04704F1580098
-:203690005146002214F03CF8A96800264FF0010840F602026672088884F80080824207D071
-:2036B0000A8B4FF61F60104040F43470088306E00A8A4FF61F60104040F4347008826E741C
-:2036D00013F0D6FCD4F83C21E36804F59E719A4208BFB046A56C45B1854226BF281A401E9D
-:2036F000401B01EB8801000B8860A664192013F033FE27F48057ECE01846A9E704F11800C7
-:2037100014F013F8061C08D0706830B17568F068B6F9241000222023A84727F40057D8E041
-:203730000020207284E7A968088840F60209814507D00A8B4FF61F60104040F434700883D1
-:2037500006E00A8A4FF61F60104040F43470088204F1400090E80C00002B08BF002A1AD0AA
-:20377000042012F0B3F9B0B1266C13F081FC864226BF801B401E801B000BE860E968688A1D
-:20379000401840F6C411E860814203D340F2EE22824200D9E960AE699EB14046B04210D0EF
-:2037B00094F8350010F00F0F0BD1698C09F10700884206D128466FF4807100224FF0007311
-:2037D000B04704F158005146002213F099FFB4F8AC004FF6FF71814209D10220ADF80000D0
-:2037F000684612F0F3FABDF80800A4F8AC000120207013F0B3F84FF00008192084F8058037
-:2038100013F0AAFD6E692EB1414628464FF080630A46B04727F000575BE014F077F8054673
-:2038300004F1140013F081FF061C15D0E06810B1703012F035FFF068E060284614F062F8A2
-:2038500013F016FCA0642A4813F016FE4FF4006104F1D40013F08AFB002027F4806720720D
-:2038700037E004F12005284613F05FFF07F0B6FD284613F05AFF27F0020708B147F00207AB
-:2038900027E014F043F8014604F11C0013F04DFF0646B569A80817D2B6B125EA0500B0619C
-:2038B000084614F02FF8706888B185B12A46F068B6F9241075680023A84708E0700A00201C
-:2038D000738000009DBA0000084614F01BF827F4804727B104F1D400394613F047FB009052
-:2038F000BDE8FF8791E70000796101000010044045A90000B0B50446BC480768ADF1480DE3
-:20391000002F00F0AC812078401E112800F2A781DFE810F06E0156013C0127011F010801E7
-:20393000F100E300C300B2008D005D0053004200A5012A001C001200F86B002800F08F8126
-:20395000684621460CF0ACFBF96B86E1386C002800F085816846002101220DF00EFA607843
-:203970008DF80000396C78E1F86A002800F07781684600210E220DF000FAA11C684613F0DE
-:2039900005FAA57BA1890022ADF80A1005B101228DF80C20F96A61E1B86B002800F05F81A3
-:2039B0006846002102220DF0E8F9A5788DF8015060788DF80000B96B4FE1786B002800F087
-:2039D0004E81684621460CF06BFB796B45E1386B08B36846002114220DF0CFF9A5788DF8BD
-:2039F0000150A3680193A289ADF80820A17B8DF80A1060788DF80000E57B8DF80B50237CD8
-:203A10008DF80C3094F911208DF80D2061690491396B684688476068002800F0208101461D
-:203A3000F22008700020487010F070FF17E1B86A002800F014816846002124220DF09DF936
-:203A50006078A11C8DF800000DF1020013F09EF904F10C0103A813F099F9257EE08A04F15E
-:203A700019018DF818500B22ADF816000DF119000BF016FEB96AF0E0786A002800F0EF80C5
-:203A90006846002102220DF078F9A5788DF8015060788DF80000796ADFE0386A002800F009
-:203AB000DE806846002112220DF067F9658862796078ADF8025023798DF80520E11D8DF8D8
-:203AD0000000A5798DF804300B220DF107008DF806500BF0E5FD396ABFE0F869002800F05A
-:203AF000BE806846002101220DF047F960788DF80000F969B1E0B86910B120460FF066FC50
-:203B1000A07D002800F0AB80A07820B9A069002800F0A58003E0A069002800F0A08012F0D8
-:203B30004FFC9CE07869002800F099806846002113220DF022F96D46A01C01684068296077
-:203B50000B22686004F10A0102A80BF0A9FD796983E03869002800F0828020460BF07CF840
-:203B70007DE0F86800287AD0684600210E220DF004F96078A11C8DF800000DF1020013F0F0
-:203B900005F9A089ADF80C00F96866E0B868002865D06846002114220DF0EFF8A01C01680B
-:203BB0006D46296040686860A07A0B2204F10B018DF808000DF109000BF072FDB9684CE0B6
-:203BD000786800284BD06846002110220DF0D5F860786588211D8DF800000B22ADF802503B
-:203BF00001A80BF05DFD796837E0C046181A00203868A0B36846002119220DF0BEF8A01CFB
-:203C100001686D46296040686860A07A410824BF01218DF80810810824BF01218DF809104E
-:203C3000C10824BF01218DF80A10010924BF01218DF80B10C10924BF01218DF80C1030F0C8
-:203C50007F001CBF01208DF80D000B220DF10E0004F10B010BF024FD39686846884712B011
-:203C7000B0BD70472DE9F04FDFF8B4C292F808B009AF88460646ADF1240D049338F07F0548
-:203C9000039206BF604600884FF6FF700590F08A800934BF002008203076F08AC00834BF2A
-:203CB000102080207076F08A400903D260460E30007800E00020B076F08A41082CBF202432
-:203CD0000024000928BF44F010047568002108F07F08307D06916D1E02280EDB0C2808DC01
-:203CF0000C2803D1022044F40854069044F0030404E00D280CBF02200120044396F88800A1
-:203D100008B144F00804210900D328B1DFF89C9299F89C3013B908B1DF203BE121096DD358
-:203D300096F88950DFF888A206F1240133891AF8052007910AEB0001097908908918491D4D
-:203D5000C9B2C918B1F5006F80F2268100284CD0049A039906F1800009F0FAFE079900281B
-:203D700008603FD0806AB0F1FF3F39D070680023401E8DB196F88A10524600F80119515DD3
-:203D9000491EC9B241B1721892F87F20491EC9B2002900F80129F6D1079970660968896ABE
-:203DB000B162090E00F8011996F82A1000F8011996F82910089A00F8011996F8281005F0A7
-:203DD000030500F8011902F0070141EAC501017071683289091AC9B270608918318105E023
-:203DF000DB2700E0F3277770D7E00023F08A7370C00828BF44F0100475686D1E336DA3B93E
-:203E1000B36D93B999F8B510012903D13089B0F5EE7F06DA200904D202290AD144F4005496
-:203E300001E044F48054012002E044F408540220069044EA8834B8F1020FA4B20AD0B8F1B9
-:203E5000030F10D1ED1F09F1A801284613F055FC6D1E08E0B9F88E00001205F8010999F892
-:203E70008E0005F80109069802280CD0B8F1000F15D0BBF1000F0CD004990598814208D1EF
-:203E900044F040040BE0BBF1000F08D1B8F1000F05D00599081205F8010905F8011944EA8A
-:203EB0008B24BBF1020FA4B209D0BBF1030F0ED10399ED1F284613F020FC6D1E07E0039977
-:203ED0000888001205F80109087805F80109BBF1000F05D00498011205F8011905F8010945
-:203EF0003878F8B933480178307D0D2814D068B9306D28B999F87800411C89F878100AE09F
-:203F100099F89D00411C89F89D1004E099F88600411C89F88610014605F8011904E0C04621
-:203F30003212002044F48074201205F801092C7070683189401B7560C0B2401830812009A6
-:203F500027D3B06D00B130621B48007810B1307D0D281ED1726A12F1150002D113F0A4F923
-:203F7000726A916A481C9062306A3289B162471B0092D21B019090B20290706A96F8882046
-:203F90002B46153007F0DAFB00281CBF7070071C07D10020707005E0E5277770F32012F0C4
-:203FB0001AFEF8B209B0BDE8F08FC046A8110020A08A01008D310020241400202DE9F041CB
-:203FD000CB4CCC4DDFF834836088ADF1600D4108C0F08C800CA808A90DF0C0FF012879D187
-:203FF000404624300068D8B10769CFB1062002268DF808000022ADF80A600FABADF80C205F
-:2040100002AE009396E803000C23B84740B9BDF83C006084109F67621198A06213F014F89E
-:204030009DF82D00012805D002202077BDF82210A1820AE0032009AF20773A6804F11401E5
-:204050000A6078684860BDF82210BDF8200009AA00230EF0C1FC011C02D0A1A013F02FFBB4
-:20407000022011F0ABF9BDF830009DF82C7028870DA985F83A7005F1480013F0C3FABDF814
-:20409000320005F13E0609A9A5F84600304613F0B9FABDF82200298FA887502012F0C2FDF4
-:2040B000B5F84610532012F0BDFD4A20314613F0EBF895F83A10E12012F0C0FDA98F4B20BD
-:2040D00012F0B0FD05F10800102112F07FFC0120207005E0012011F071F9002013F068F8D0
-:2040F000A01C012112F064FC2046408880080DD3606A11F019FB11F055FE00B2A081E08173
-:2041100001F0E0FEA01C022112F052FC2889410805D305F10800012112F04AFC288981081D
-:2041300005D305F10800022112F042FC288901094BD395F8540005F1080600283DD0401EE5
-:2041500039D0401E02D0401E33D039E095F85010472012F073FD95F85110542012F06EFD07
-:20417000A98F4B2012F05EFD298F502012F05AFD0927032395F83A008DF8597016AA8DF8FE
-:204190005A305D498DF8580001278DF85B7018200BF01AFEB4F84E00B4F84C1088420FD193
-:2041B00095F8520001280BD13046202112F00EFC06E0032002E0022000E001200EF006F83E
-:2041D0003046082112F0F4FB2889410911D395F8520005F10806032818BF042802D1A86D67
-:2041F00011F08AFA10F0FAFC3046102112F0E0FB2889810907D30CF0D9FF05F10800202188
-:2042100012F0D6FB2889C10907D30CF0FBFA05F10800402112F0CCFB2889400A0DD395F8E5
-:20423000550012F0C5FF41F2883011F095FA05F108004FF4807112F0BBFB4546E8884008AB
-:204250000DD368780026000904D3A878012801D110F098FB6E70A81D012112F0A9FB608887
-:20427000002839D10A200825254CADF812004FF0FF37ADF81050616A059704A888470028F9
-:204290002AD10720ADF84850616AADF84A0012A88847149E1596F8B91A499DF84E20087878
-:2042B00090420ED19DF84C004A78824206D089684B6C33B100213246984702E03046FFF7AE
-:2042D00019FB159840B1ADF818500320ADF81A00616A079606A8884718B0BDE8F081C04664
-:2042F00041757468204572726F723A20307800C090120020481300204D760100A41000205B
-:204310008C140020101A00202DE9F04F09AFADF13C0D08900A92388809911E46ADF81800E0
-:20433000101C08BF002000F08481002700F101094FF0FF3A4FF0010BB8466CE1252940F0B7
-:2043500063811078521C0A922D2818BFADF8068005D15846551CADF8060010780A95302871
-:204370001CBF4246434605D10A9908785A465B46491C0A912A28CDF80080554616D1306856
-:2043900004930A99CDF808A0C01C4B1C20F00300001D306050F8044C0A93002C08780094EE
-:2043B00018D5ADF806B06442009413E044460AE0610001EBC40140180A99A0F130040878B2
-:2043D0000094491C0A91302801DB3A28F0DBCDF808A004932E282BD10A9908782A2801F11B
-:2043F00001010A9111D13068CDF80880C01C20F00300001D306050F8045C002D48BF454646
-:2044100008782B46491C0A9111E0454643460AE0690001EBC50140180A99A0F13005087850
-:204430002B46491C0A91302801DB3A28F0DB02930AB1224604926C2804D04C2818BFADF8F4
-:20445000048005D10A990878ADF804B0491C0A910BA9CDF80C800FAB07916428059300F00B
-:204470008B80692800F08880BDF818C0752872D078286ED06F286AD0702850D063283DD02D
-:2044900073281ED009980A990128A1F101010A9115D96B490C68B5F1FF3F03D0A84288BFE9
-:2044B0006D1C00D8099D029508A80AA932466B46A047C7190A99039801F1010974E04046E7
-:2044D0002AE030680A99C01C20F00300001D306050F8040CBCF1000F01F10109014608B9D3
-:2044F00055A00146079112F045FE0390B5F1FF3F5BD0A842C4BF281C039056E03068C01C03
-:2045100020F00300001D306010F8040C5D468DF82C000A990395584601F1010945E008203D
-:2045300035680490E81C20F00300001D306050F8041C082210230FA80DF030FB401E0790DD
-:20455000402101700A99079801F1010929E0082302E0102300E00A230A99306801F10109AE
-:20457000C01C20F00300001D306050F8041CAA42BCBF2A1C049210E00A99306801F10109BD
-:20459000C01C20F00300001D306050F8041CAA42BCBF2A1C04926FF009030FA80DF0FEFAAD
-:2045B0000790059D281A0390009C241ABDF8065000945DB906E008A8202109AA11F078FB50
-:2045D000009C7F1C641E0094F5D503980546401E039075B9BDF80600E8B10098401E0090D5
-:2045F00019D408A8202109AA11F062FB00987F1CF4E70798411C0791017809AA08A811F03D
-:2046100057FB03987F1CE1E708A809AA11F050FB7F1C09F101094A460A9812F8011C401C37
-:2046300000290A907FF48AAE089808B14146017038460FB0BDE8F08F286E756C6C2900C07E
-:20465000208B0100BA492DE9F84F00254820C1F8F35FB84CC1F8FF0F94F8E200002800F055
-:204670006381012800F02F81B34E02283CD0032840F05A8151F8310CD4F8B8100029A0F538
-:20469000C060C4F8D400B8BF49420028B8BF4042814226DA4FF08057D7F8A4014568B4F891
-:2046B000BC0030214FF47F42082300903046A847D7F8A4014568B4F8C00004214FF4F802CA
-:2046D000122300903046A847D7F8A401B4F8D070456820214FF440620A2330460097A84744
-:2046F000012584F8D8501AE151F8318C12F0EEFE2F4600B901273946904F38680028FCD0A9
-:20471000B146012609F10409D9F82CA03E6009B112F0E2FECAF30720C4F8BC0012F0D6FE5B
-:20473000AA4600B9B2463B68002BFCD0D9F800B0BAF1000F3E6001D012F0CEFECBF3844034
-:20475000C4F8C00012F0C2FEAA4600B9B2463B68002BFCD0D9F81C90BAF1000F3E6001D02A
-:2047700012F0BAFEC9F38120C4F8D000B8F5C061C4F8B81000F09C8094F8D80068B9C4F8E7
-:20479000D410D4F8C000C4F8C800D4F8BC70C4F8C470D4F8D030C4F8CC30D4F8D410D4F82D
-:2047B000BC30002954BF02206FF0010004F1C802176801EB41014018411000EB917107EB4B
-:2047D000A1001060D4F8C810C4F8C43000291CDD1E293CDDD4F8CC0030B93429B4BF153943
-:2047F0001E21C4F8C81025E02A29BABFD4F8C8000B381E20C4F8C800D4F8C4003F28B4BF02
-:20481000401C3F20C4F8C4001FE0D4F8CC00032812D011F10B0FC6BFD4F8C8000B30301CED
-:20483000C4F8C800D4F8C4000028C4BF401E051CC4F8C450032508E011F1150FC6BFD4F8D3
-:20485000C8001530301CC4F8C800C4F8CC504FF08057D7F8A401B4F8C43030214FF47F4214
-:204870004568354800930823A847D7F8A40104214FF40032112345682F480096A847B4F8BA
-:20489000C860D7F8A40104214FF4F8021223456829480096A847D7F8A40120214FF4406298
-:2048B0000A23B4F8CC60456823480096A84701E084F8D85040F2FF50404502D8801C4045C0
-:2048D0002DD208202EE051F8311C1D4F4BF2F5204843060A3868C0F3814001280AD111F08B
-:2048F00061FA10F06DF812F0FDFD3111C010484306EBE03694F8E50030B91248006820F01C
-:204910007F408019460801E084F8E5500E48310C0660012741600D4D8760287808B90B20C0
-:2049300000E0052084F8E40004F090F9BDE8F88F39400C40940F002000A00C4000800C4019
-:20495000B43F0050102009403C600C408E8A01002DE9F04FAF4E82463068ADF1140D08B958
-:2049700012F0A2FCAC490120AC4F08703978012902D0002103F0BEF830680489456812F0B3
-:20499000B6FEDFF89C922888000937D399F83800002833D031684A6A4F6E906AC846B0F1E4
-:2049B000FF3F25D027B3431C93628862030E07F80139306890F82A0007F80109306890F8DF
-:2049D000290007F80109306890F8280038703268106A00940190401B201A80B20290916A18
-:2049F000506A92F888202B46153006F0A7FE00E0DB20D8F87C10002840F000812146284685
-:204A10000BF03AFE642003A90FF0E6F9854999F838700878884637B98348007809F0C0FF05
-:204A3000012805D0E6E009F0BBFF012840F0E280DFF8F8C1A01C241D6D1EA1B2ACF87800AD
-:204A5000C1F3022040F0080005F8010929709DF80C70CCF88450002F4FF00005ACF86A501E
-:204A70000CBF49F24E0047F60E206446C4F8C0006F4EC4F8800070688047B3466D4E049061
-:204A9000BAF1010F6BD0BAF1040F68D0BAF1000F65D094F84000BAF1050F04F13007C0F3C1
-:204AB000C0003ED0E8200DF10D010FF095F999F8380030B39DF80D00032822D1787B3B7C61
-:204AD00000F0F00007F1110140F00300787343F018003874F4200FF07FF9D9F89C00804708
-:204AF000A064306A544BD0F808C06586294602208DE80300D8F80C002A463946E047374676
-:204B100067E0306A87684C4BA4F86A50294602208DE80300D8F80C002A4604F16801B84716
-:204B3000EDE728B9787B00F0F00040F0010004E0787B00F0F00040F003007873B146294671
-:204B5000D9F820003E4B8668658602208DE80300D8F80C002A463946B0474E46CFE794F8C0
-:204B70003D0000F0F00040F0030084F83D0094F8400004F130018A46113140F0180084F854
-:204B90004000F4200FF028F999F83800002808BF4FF4FA5002D0D9F89C0080472949A064D0
-:204BB0003746D8F80C000B783E6A43B9A4F84E5002212A468DE8060004F14C0105E065860B
-:204BD00002212A468DE8060051462A461A4BB568A8471A490880DBF80810002808D41A4A01
-:204BF00092F900006834401C10700498FC600DE0049888471A200BF077FC08E0002908BFD2
-:204C1000E420F8D0114A00201070E420884705B0BDE8F08F640E0020CB1A0020E41A00205C
-:204C3000EC130020841900204F120020280D00208C14002028160020399D000094180020F2
-:204C500091C90000C6180020CD1A0020203200202DE9F04F002898461546ADF12C0D00F0F6
-:204C7000F58011F47C1F40F0EE8011F00F0F00F0ED8007460591002006900A904FF0000A79
-:204C90000990544608944FF0010BCDF810B0044650460790059805990BEA000021EA0B01A7
-:204CB0004FEA4B0B401E059100F0AD80401E69D0801E56D0001F40F0C08005B12F660720E8
-:204CD000152642F2D002022307F8010B01A907F8016BA2F1CF0007F8013B0EF04BFE6846AC
-:204CF00003A90AF04FFB8B48019A018842F2D0064FF47A63701890FBF3F0009B3E46C018A6
-:204D10000090824206D8801ABDF80C300090581CADF80C00009B5008514681460904180497
-:204D3000030C19430004534610EB090041EB0A0102F02CFA0090BDF80C309DF80C009DF851
-:204D500000209DF8011006F8010B181206F8010B9DF8023006F8012B9DF803200934BF1D7D
-:204D70004BE00220152607F8010B042307F8016BB8F1000F07F8013B0CBF099898F800000F
-:204D9000241D57E01DB1EF6595F86B0006900520152642F2D002049B07F8010B0DF10E01BE
-:204DB00007F8016BA2F1CC0007F8013B0EF0E2FD02A80FF06FFD5848029AB0F8B61042F20E
-:204DD000D00670189DF80E604FF47A6390FBF3F150189DF80E30069AE41D000200EB6600A4
-:204DF000B0FBF3F03E4602903F1D06F8012B9DF808109DF809309DF80A2006F8011B06F827
-:204E1000013B327018E00320152607F8010BB8F1000F07F8016B034607F8013B04BF0A9837
-:204E300007F8010B05D098F8000007F8010B98F80100641D07F8010BA4B2059800287FF43C
-:204E500029AF264661E011F00F0F01D000205DE080468A4602264FF4803908F1020509EAC3
-:204E70000A002AEA090A4FEA4909B0F580301AD0B0F5803014D0B0F500300ED0B0F58020F6
-:204E900009D0B0F5002004D0B0F580102AD1072404E0062402E0052400E00424002704E009
-:204EB0000224012701E001242746A81C214600F047FC47B104F00F04C0F30A0141EAC421F6
-:204ED00041F4004105E004F07F0400F0FF0141EA042105F8011B36180912B61C2970B6B25B
-:204EF00045196D1CBAF1000FB9D1022ED8BF00260BDDB01E4FF6FE7708F8010BB819C0F38A
-:204F1000022040F0A00088F8000030460BB0BDE8F08FC0469E2E0020E82D00202DE9F04F3E
-:204F3000AC4C04F128000068ADF1240D0FF0D4FA08B111F06BFCA248DFF89CA2DFF888B217
-:204F50000068A24E089011F031F811F059FAE569A769B5F57A7F13D0C01B4FF47A720023C2
-:204F7000A5FB000102F012F980464FF47A72002311F0D8FF2A46002302F008F9C01901E053
-:204F9000A0EB0708A0618D488C49006820F00200086070688047DBF80010DBF804304546C6
-:204FB0006918B1F57A7F0DD34FF47A72B1FBF2F2D2184FF47A73CBF804201F46B1FBF7F227
-:204FD0005A43891ACBF80010B168884770688047DAF8041002466818B168CAF80400104644
-:204FF0008847DAF8000000285FD007464FF00009706880474FF000081FFAA5F3079083B9AA
-:205010005FFA95F36BB93979E8B2884204DD79682846884209D20AE03879E9B2401A387157
-:2050300008E079682846884201D3414601E07968091A7960B88878B9FB8853B9FB6843B1EF
-:205050003B8933B1B87A19460AF0FAF8F8687860B88808B9FB880BB13B896BB9B9F1000F02
-:2050700004BF3868CAF8000003D03868C9F800003868B846074601E0B9463F68B16807989D
-:205090008847B8F1000F0ED0B8F8043043B9B8F806302BB998F80A00B8F808100AF0D0F8CD
-:2050B000404611F07DF9002FA2D144484349006840F002000860E06828B3804723E015F82D
-:2050D000060C2169A5F10C07032819D0E16A9DF816000978884210D115F8080C10F09CFB8D
-:2050F000B979012903D0022908BFA87000E02870002029460DF0B4FB05E011F087FB02E06A
-:2051100009B12846884708200727ADF81000716AADF8127004A88847069D0028CFD0294825
-:2051300000680088C8B1706880472649096800220D880A80B1688847089A0020294620708D
-:2051500090470546FF202070706880471D4909680A8815430D80B168884710F027FF074626
-:20517000B7F1FF3F1CD0706807B9194F216AB94238BF0F1C80471C230546626AADF80230B1
-:205190000820ADF80000716A019268468847A16A3846491CA1620FF0D7FBB168284688472F
-:2051B00008200A27ADF808004FF0FF35ADF80A70716A039502A88847C5E6C04610E000E0DA
-:2051D0000C8B0100242D0020501A00208C1400208EC2F52864180020FC3100202DE9F04FC1
-:2051F0008146002000212022ADF1540D009003A80BF0C3FDD9F82400B9F8221001236A46B4
-:2052100007F08EFD0024A046002876D10098002873D006467079042869D100200190F188BB
-:20523000B06801AA002307F07BFD00285FD1019800285CD007467879BD68001F3AD0401EDA
-:2052500004D0401E2FD0401E10D04AE0F888202847DC03A8002120220BF08FFDFA8803A8F8
-:2052700029460AF01DFA44F002043AE00BA86B682968436005F1080201600DAB1168506846
-:20529000196002F10805586029686B680FAA083553602846116011AB026841681A6044F064
-:2052B000080459601DE029880DF10A0044F00404018016E0298802A80180BDF8081042F2D3
-:2052D0000E0012F071F815F8028F44F0010408F00100C8F3800BC8F3401A1390C8F3400379
-:2052F00014933F68002FA6D1019811F08EFE3668002E8FD1009811F088FE99F82870634D60
-:20531000022F18D0A008C0F0BC805F4903A8202210F0BAFF002840F0B480012F04D1E87891
-:20533000401CE87099F82870032F04D12879401C287199F82870002F4DD1A86A401CA862F5
-:20535000600820D3B8F1000F04D105F13E00494612F058F942F20F00414612F02CF81399A3
-:2053700042F20A0012F027F8149942F2100012F022F842F21100594612F01DF842F2120070
-:20539000514612F018F84FF40050494612F0BBF9B9F81A10502011F045FCB9F81A00B9F873
-:2053B0000010D9F82C304A460DF016FBB9F81A004946288705F13E0012F024F9687801289D
-:2053D0005AD0002001210CF075F941F2707003210CF070F950E0022F4ED1E00805D3BDF856
-:2053F0000A1042F2140011F0DFFF200913D342F215000BA912F087F942F216000DA912F0CC
-:2054100082F942F217000FA912F07DF942F2180011A912F078F9286B4946401C28634FF4C1
-:20543000005012F070F9002003210CF043F96878012821D0012000276870154C6F7104F1D5
-:20545000E000064611F060FF012802D1304612F070F911F0E5FD074611F0E2FD42F210710E
-:2054700000EB07200DF02CFA206A01F57A6112F0EDF8304612F05BF9D5F8981009B148461C
-:20549000884715B0BDE8F08F8586010048130020A41000202DE9F04706460020ADF1380D4D
-:2054B000DFF89092ADF80C00A0480F460168A34D097D252900F00E81006805A96C3006F0A1
-:2054D00087FE002818BFC0B240F02D8197480068C18AC9080DD3007D03280AD09DF81F006F
-:2054F00038B99DF820004C463870B5342070002019E101A804A909F045FFA5F12F018A4600
-:2055100091F82F30019A3468DAF808104FF47A78404641F208155843891A08FB120008FB11
-:2055300001F1001B091B8D42C8BF002965DC854205DD002803DD346804F5915434609DF816
-:205550001F00002857D042F204000DF135010EF011FA10F0A5FF044606980DA9241A42F2A4
-:2055700006000EF007FA9DF834109DF81D00FF2904BF0A218DF83410FF2808BF0A209DF8FF
-:2055900034206B499DF81C30B4FBF1F1801880B24843991008FB01F1814298BF081C2D180B
-:2055B00005A810F02AFD9DF81C203468C446B0FBF2F15143411A8BB20CFB02F26146594398
-:2055D000531A521A1B1B121B954201D9002A08D56942994216D2002B14D5B5FBFCF109B2ED
-:2055F00003E06900B1FBFCF189B232684FF4916303FB012405E0002004E0306841F630346B
-:205610002418346005460DF1120102A809F0BAFE0298DAF80810B4FBF8F210180290814259
-:2056300003D99AF82F30834204D94B4603F15804267836BB9DF81C0055190004A84298BF17
-:205650002D1A9DF81F00002808BF9DF8200016D09DF81C00B5FBF0F084B29DF833000EF078
-:2056700073FB9DF83120014620460EF0B1FC044610F0B0FC024608A920460EF0F7FA4C4698
-:205690000DE0814204D8BDF81200401CADF812004C46BDF8120094F85B100CF066F9387041
-:2056B000224E84F8B5003068007D05287FF41FAF2148007800287FF41AAF387803A9ADF870
-:2056D0000C0042F20C0004F091FCBDF80C00A4F8B0000CE768460DF10E0109F053FE306850
-:2056F000009A2B7841F208144FF47A7101FB0202009259438A1A944210DCA1F5FA61914288
-:20571000BCBF00F5FA6030604C4694F85B10208F0CF02BF901460020397002E039784C4692
-:20573000652084F8B5100EB0BDE8F087640E0020A0860100E82D0020351200205F2F0020B6
-:20575000F0B504460846ADF16C0D401E6BD0401E0DD0801E00F00381401E00F0E980401EEA
-:2057700000F0DB80401E00F0A88000203CE142F2010007A90EF0FEF842F20B0008A90EF054
-:20579000F9F842F206000DF165010EF0F3F842F207000DF166010EF0EDF842F2050019A903
-:2057B0000EF0E8F804A809F0A7FC05460DF1670142F209000EF0DEF89DF86700002808BF06
-:2057D000002303D0022010F0FDF8034607A8006808A920600988271D3C46B81C218005F05A
-:2057F00007079DF865609DF864109DF8662000F8011B9DF8674000F8016B03F0030600F865
-:20581000012B620747EA926104AC41EA8611012700F8011B9DF8672000942946019706F064
-:205830004FFE0A3099E042F206000DF165010EF0A1F842F207000DF166010EF09BF842F2BE
-:20585000040019A90EF096F804A809F055FC05460DF1670142F208000EF08CF89DF8670085
-:20587000002808BF002303D0012010F0ABF803469DF864009DF8657004F8010B9DF8666060
-:2058900004F8017B9DF867209DF86770790704F8016B03F0030705F0070646EA916004AE3E
-:2058B00040EA8710294604F8010B002700962046019706F005FE001D4FE042F2150011A99D
-:2058D0000EF058F813AD42F2160029460EF052F815AE42F2170031460EF04CF817AF42F2E8
-:2058F000180039460EF046F811A801682160406860606A6804F108035A602868186030688E
-:2059100003F10801086074684C60386801F1080528607A686A60202066E042F214000DF1EB
-:2059300022010EF027F8BDF8221002200A1258E009A8002120220BF020FA42F2130009A998
-:205950000EF018F809A811F015FC024609A9204609F0A6FE09A811F00DFC80B244E042F224
-:205970000E0002A90EF006F80DF10A0142F20F000EF000F80DF10B0142F20A000DF0FAFFE2
-:2059900003A942F210000DF0F5FF0DF10D0142F211000DF0EFFF0DF10E0142F212000DF08A
-:2059B000E9FFBDF808009DF80B209DF80C709DF80D609DF80E509DF80A1004F8010B02F0C3
-:2059D0000102001204F8010B07F0010042EA400206F0010042EA800205F0070042EA401215
-:2059F000042004F8011B22701BB0F0BD2DE9F04F06469E48001D0068ADF1340D80470B9004
-:205A10000AA9822004F0A0FB9DF8280018BB00248DF828404FF6FF75ADF804509DF8280082
-:205A3000ADF80650FF2108228DF8000002A811F08AFE8DF81840D420694601F06FFF9DF8E5
-:205A50002800401CC0B28DF828003228E4DB82200AA901F063FF0020DFF808A2DFF80882D0
-:205A70008DF8280081469DF828008DF8019069468DF80000D02004F067FB01274D46E8B9F9
-:205A90009DF80B30012B07D19DF80A0020B90DF1020011F00BFA88B9747B002C0CBF052256
-:205AB00009224F469C4209D10DF1020006F10E0110F0A6FD002818BF012507D1002F40F059
-:205AD000BF801DB9707F002800F0BA804C469DF828008DF8214008A98DF82000D12004F0F0
-:205AF00033FB002832D19DF82200FF282ED08DF800006946D42004F027FB002833D102A84D
-:205B1000311D082210F07CFD00B330887788ADF80400ADF8067045B1307B9DF82810B769C8
-:205B30008DF818000DEB81010F61D420694601F0F5FE75B1307F9DF82310884209D08DF882
-:205B5000230008A9D12001F0E9FE02E0641C322CBDDB322C74D14F468DF80070D420694670
-:205B700004F0F2FA28B1DAF808100B988847192074E002AB184611F099F94C4600B101246D
-:205B90002046341D30B918462146082210F038FD00284AD030887388327BADF804009DF851
-:205BB0002810ADF80630002D8DF818200DEB810000F110000CBF4946B1690822016002A8B5
-:205BD000214611F08BF998F8380030B1D8F888201AB19DF80010204690474C469DF82800AC
-:205BF0008DF8214008A98DF82000D12004F0ACFAE82807D09DF82200FF2803D0641C322C58
-:205C1000ECDB10E09DF800008DF82490337F8DF8220069468DF82330D42001F07FFE08A9FC
-:205C3000D12001F07BFE322C02DB7F1C322F93DB322F05D1DAF808100B9888471A200DE09A
-:205C50009DF82800401CC0B202288DF82800FFF60AAFDAF808100B98884748460DB0BDE8D8
-:205C7000F08FC0468C140020EC1300208C1400202DE9FF47854FDFF830828C4CF8680028D7
-:205C90003ED18F4D8249843D2868814210D0814981420DD0804981420AD08049814207D017
-:205CB0007F49814204D07F49814201D011F0FCFA10F0D6FD29684FF0FF32012805D1C1F39B
-:205CD0000330083805D0C01F01D0012A01D1012000E00020F8700EF03FFC142804D1404666
-:205CF00000F1E001C0F8A4100FF08AFF216A19B911F0DAFA2046016A096A07F11000884781
-:205D1000632002A90EF068F8DFF8A49109F1B70000780FF05FFF06464046D0F8981090F88B
-:205D30009D20B0F896C041F00F0102F03F02C0F898102CF0070C80F89D204CF0010CA0F87F
-:205D500096C0B37A4FF0000A00F188057BB99DF8083002F0C0023F3303F03F0313436B7557
-:205D7000EB8A4FF6C0721A4042F018020DE09DF8083002F0C00203F03F0313436B75EB8A33
-:205D90004FF6E0721A4042F02002EA82307B052814BF2420292088F89C00F27A307B401D7A
-:205DB0005043E2690A230CF0010C90FBF3F0C0044CEA1040E881F07A1923800390FBF3F007
-:205DD00060F31C212961288B117D4FF6F77361F3020003EA00012883107D00F008000843EA
-:205DF000288399F9A6000DF05DFEA8F8A200716833683089401EA8F88AA0414303EB5100FE
-:205E10004FF47A71B0FBF1F0A8F8A800C8F88CA0687B00F0F00040F00100687311F098FB21
-:205E3000A0B9F07A234A99F8B730B1FBF0F01070F07A022BB1FBF0F0C0B2B1FBF0F0787095
-:205E500004D11D4802214170A8260670F86850B9206A0668616A194807F110032A46B047E1
-:205E70003C4605460DE050460BF028F9206A86684FF002098DE80006F868524629461346A9
-:205E9000B047E5600090BDE8FF87C0468419002000F0022000F0012000F000200080022063
-:205EB0000080012000800020280D002028160020A8110020C8190020C4180020282D002093
-:205ED00018130050F0B500214422ADF1540D02A80AF053FFF22013A911F0CEF9834DBDF8FB
-:205EF0004C0013A9A5F86800F32011F0C5F9BDF84C000DF10901A5F86A00E22011F0ACF9FB
-:205F1000688CADF81200410806D305F10C01096805A80160BDF81200810805D3291D098823
-:205F300006A80180BDF81200C10807D305F1100109680DF11A000160BDF81200010908D31B
-:205F50000DF11E0005F14C01242209F0A9FBBDF81200400903D3A86A12906F6A1197644828
-:205F7000007800280CBF0121002101200BF026FFBDF8120041082CBF0F240B24810824BF59
-:205F9000A41CA4B2C10824BF241DA4B2010924BF2434A4B2400924BF0834A4B220460FF0DA
-:205FB000D9FE071C00F09F8005260DF1090100F8016B0A68026049684160BDF812100830FC
-:205FD00011F0AEFABDF81210844648080BD3BDF81410604611F0A4FABDF8161011F0A0FAA5
-:205FF000BDF812108446880807D3BDF81810604611F096FABDF812108446C8080BD3BDF86E
-:206010001A10604611F08CFABDF81C1011F088FA8446BDF81210374A9388080949D3BDF896
-:206030001E10604611F07CFABDF8201011F078FABDF8221011F074FABDF8241011F070FA03
-:20605000BDF8261011F06CFABDF8281011F068FABDF82A1011F064FABDF82C1011F060FAF4
-:20607000BDF82E1011F05CFABDF8301011F058FABDF8321011F054FABDF8341011F050FAF4
-:20609000BDF8361011F04CFABDF8381011F048FABDF83A1011F044FABDF83C1011F040FAF4
-:2060B000194611F03DFA117811F03AFABDF812108446480906D3119960460EF0CAFD1299F0
-:2060D0000EF0C7FD05F11401224630463B4605F0F1F80820ADF80260074D01972968ADF855
-:2060F00000006846884715B0F0BDC04690120020AA170020A4100020B01400202DE9F04FEB
-:206110000128ADF1140D40F0F180DFF81882D8F8DC00012840F0E7800220C8F8DC0011F04A
-:20613000EDFB029001200EF011F9061C06D00120C8F8DC00029811F0DDFBD9E011F0D6FBF9
-:2061500003906D484FF00009C0F8009001200FF0BDFC012818BFCDF8009004D148460DF0C9
-:2061700063F8012000906548654FC0F800903868112011F0C9F900280CBF4F4601271020E6
-:2061900011F0C2F908B147F002070F2011F0BCF908B147F004070B2011F0B6F928B1594805
-:2061B0000068594D016B288888470A2011F0ACF94D4600B101254FF0805B28460BF5DC75C3
-:2061D00020B12868514C016B208888475048012404602868816947F0200088474D48046014
-:2061F00011F08CF900F001010191400814D24A4811F019F98246BAF1040FF8D0BAF1010FA9
-:2062100005D1DBF8D80142684348032190474349086820F003000860484600F085F83848CA
-:206230002B680068986B8047019801280DD0BAF1010F05D1DBF8D801426837482146904746
-:206250003649086840F0030008602C48046028684169384688470B2011F056F920B1286869
-:20627000294BC16A188888470A2011F04DF920B12868264BC16A188888472548046003222D
-:20629000C8F8DC20234BC3F800902868416B384688470128F9D104200EF058F80546184FD9
-:2062B00015481F490460386808688009FCD30098012802D120460CF0B7FF11F00DF9082062
-:2062D0000EF044F807460398C8F8DC4011F00AFB0CF0B0FB029811F00DFB57EA050018BF43
-:2062F0004FF0FF3604E06FF0040601E06FF00106304605B0BDE8F08F0C400940000222433B
-:206310002C200940B8010010428801003E88010028200860800104430040034024220840F4
-:2063300014100940940F00202DE9F047DFF80CA20746AAF13500DFF8F8810068800880F07E
-:20635000E7800FF02FFD814908310B6800261C17641C990D0AD2C0F13E0110F10A0F4FEA87
-:20637000E101D8BF08218C42B8BF0C1CDFF8C4C1990E0FD2590E0DD36246143A1168C1F3B0
-:2063900004211629A8BF20391268C2F30462162A0EDB0CE0634AD2F87C11C1F304611629C3
-:2063B000A8BF20391268C2F30442162A00DB203A61189146162905DA11F10A0FB8BF6FF0C4
-:2063D000090100E01521584C584D01F01F0242F4F85222802A6812F0030F18BF0126D20892
-:2063F00028BF46F002060FB146F00406424692F90740041B052C04DA9479B44208BF9188FD
-:2064100066D00F28A0F10F0827DB08EB0014A4F1F0084FEA282EBEF1070F88BF4FF0070ED2
-:206430007546062D88BF06255CF82570042404EB850465462C59E41B04F0FF05F70824BF5A
-:20645000C4F307273D44B70824BFC4F307473D44770828BF05EB146501E00025AE465CF881
-:206470002EC0F7080CF0FF0424BFCCF307273C44B70824BFCCF307473C44770828BF04EB4C
-:206490001C64ADB2A8EB0E27B9EB010105FB07F505F1800504EB1524D8BF012103F0FF0352
-:2064B00034254D43A9B259434FF6FF73B1FBF4F18B4238BF191C802889B2918005DA10F1D7
-:2064D000800FB8BF6FF07F0000E07F20D0719671194800681F2910604FF0000008D340F234
-:2064F000FF128A4206D24908401C8A42FBD301E01F219180124F0F39090940EAC10047EA87
-:206510000001CAF8FB1F0026CAF8FF6FBDE8F0870C490D4F424608200F60921D1070BDE878
-:20653000F087C0463C1100506E620840242208400C3200209C13005008200940350009403F
-:2065500000E7A48030100940FDFDA400AC3F00502DE9FE4F0646824AF07B20B91146491C43
-:206570000978022908DB012803D110460078022802DBF120BDE8FE8F346AB6F8289096F8D5
-:20659000347096F835B0B58B4FF000085FEA040A17D0744890F83830002B2ED0016D0029A3
-:2065B0002BD004F0FF0088476E49096D04B20AF47F008847001900B2001D00B2C43084B21B
-:2065D00000E0C4240DB12D1DADB267480078012809D147B16548C11991F8048010F80B00B3
-:2065F0002418641DA4B205EB090020184044801C80B20FF037FE071C02D11A20BDE8FE8F5F
-:2066100008EB09002B193881002D07EB030078600EBF0020E019801C00217422C7F8A000DF
-:2066300007F10C0011F08FF84C442D1907F13C00FF211022A7F84C5011F085F807F12C0085
-:206650000F21102211F07FF800243C707C707868716A328D09F024F807F1800006F12C0169
-:206670000B2209F01DF807F18C00314610F0A6FA7089A7F89600307B87F89800707B06F162
-:206690000E0587F899002A6869460A60AB888B80AA798A719DF800102046012908BF01209B
-:2066B0009DF80110012908BF40F004009DF80210012908BF40F008009DF80310012908BF96
-:2066D00040F010009DF80410012908BF40F020009DF80510012908BF40F040009DF80610CA
-:2066F000012908BF40F08000A7F89A00707D87F89C00B07D87F89D00B28BA7F8A42022B1EC
-:20671000D7F8A000B16908F0CBFFB07F87F8A600306AC7F8A800B7F8A400C0B1D7F8A00096
-:20673000A8B17868401E7860F82101707868401E78600470B7F8A410B7F8A4607868401A76
-:20675000786039897018801C38817868B8650848007839460CF084F82046BDE8FE8FC04658
-:20677000920E0020EC13002044120020A08A0100141500202DE9F043002B08BF002A10D1FA
-:206790000029BCBF00204FF0004106DB50EA01071CBF6FF000006FF000410AF0BAFDBDE852
-:2067B000F0835FEA530898EA610803D50026404266EB01015FF0000913F0004E03D0002652
-:2067D000524266EB03031C461546002C08BF8D429CBF2C1C0025070C47EA01470E0CB442DB
-:2067F00008BFBD429EBF240444EA15442D04070A47EA01670E0AB44208BFBD429EBF240285
-:2068100044EA15642D02470847EAC1774E08B44208BFBD4200F29280870847EA81778E0876
-:20683000B44208BFBD427BD8C70847EA4177CE08B44208BFBD4265D8070947EA01770E09E2
-:20685000B44208BFBD424FD8470947EAC1674E09B44208BFBD4239D8870947EA81678E0938
-:20687000B44208BFBD4223D8C70947EA4167CE09B44208BFBD420DD8E60146EA5566EF016E
-:20689000B14208BFB84201D3C01BB14159EB09094EEB0E0EA60146EA9566AF01B14208BFAC
-:2068B000B84201D3C01BB14159EB09094EEB0E0E660146EAD5666F01B14208BFB84201D3B8
-:2068D000C01BB14159EB09094EEB0E0E260146EA15762F01B14208BFB84201D3C01BB141C9
-:2068F00059EB09094EEB0E0EE60046EA5576EF00B14208BFB84201D3C01BB14159EB090962
-:206910004EEB0E0EA60046EA9576AF00B14208BFB84201D3C01BB14159EB09094EEB0E0E82
-:20693000660046EAD5766F00B14208BFB84201D3C01BB14159EB09094EEB0E0EA14208BF4D
-:20695000A84201D3401BA14159EB09094EEB0E0EA34208BFAA423EBF2D0A45EA0465240AEF
-:206970008AD373464A465FEA080803D50026404266EB01015FEA480803D50026524266EBB9
-:2069900003031E4617460B46024631463846BDE8F0832DE9F043044694F830900F46984668
-:2069B00015468B20ADF1340D0DF10A0103F0CCFB8A20694603F0C8FB94F8250000283ED128
-:2069D000B9F1000F19D1BDF80A104FF6FE70884205DCBDF80A1088422FD1694615E0B4F8EE
-:2069F00044009DF80A608DF80C0000128DF80D00BDF80A008DF80E601BE0B9F1020F09D0CE
-:206A1000B9F1030F19D104F1280103A810F075FE092612E0207CC00934BFB4F84200B4F871
-:206A300044008DF80C0000128DF80D00208D8DF80E00001205268DF80F00002013E002287F
-:206A50000CBF05260926012818BF04F11C0104D1892006A903F078FB06A9324603A810F08A
-:206A70003DFA94F8260006EB0D01C8723A4603A831460AF013FC002840F08E80B9F1000F1A
-:206A900019D1BDF80A104FF6FE70884205DCBDF80A1088422FD1694615E0B4F844009DF80D
-:206AB0000A608DF8200000128DF82100BDF80A008DF822601BE0B9F1020F09D0B9F1030FEE
-:206AD00019D104F1280108A810F017FE082012E0207CC00934BFB4F84200B4F844008DF804
-:206AF000200000128DF82100208D8DF8220000128DF8230004203E6881460BA9822003F0C6
-:206B100023FB9DF82C10307B8142D8BF9DF82C00002841D007460024722029460FF02EF9DF
-:206B3000B0689DF82C102018C8F80000007881422EDD2B68C10001EB0011D8F80000C9181C
-:206B500029604278012A1FD0807828BBB9F1040F06D0091D08A80FF0EFFF012816D017E091
-:206B700008884B888DF82800042208A98DF82A3000128DF8290018128DF82B000AA80FF0F4
-:206B90003FFD012802D003E0807828B9002004E07F1E04F10304BFD1F3200DB0BDE8F083DD
-:206BB0002DE9F047064637680C465FEA0208ADF1180D14BF00214FF0FF3107F148008146BB
-:206BD00010F08CFE002808BF0B2000F0DF80002565707148FC60B8F1010F057004D06570CC
-:206BF0000220FC600EF070FD2078012840F29080801E012857D9801E01282CD9801E01280F
-:206C100000F2B88010F082FE8246A078009021782846062908BF0120019001200290A068E0
-:206C3000228A6368E16806F061FE0746504610F069FE002F40F0A080B8F1000F02D010F0DC
-:206C5000B1F802E030460FF0EBF9002800F0878010F069FD21E010F059FE012782460097DC
-:206C7000A168A278606824782B46042C08BF3B1C08F094FA0746504610F044FE002F7BD198
-:206C9000B8F1000F02D010F08DF802E030460FF0C7F9002863D00EF09FFC3E49C1F8B05189
-:206CB0000D60074668E010F031FE8246E08A0090E0680190208B0290A0780390207D0490DF
-:206CD0000121059122782846022A08BF081CA368E178626802F0F2FD0746504610F012FECB
-:206CF000002F49D1B8F1000F02D010F05BF802E030460FF095F9002831D00EF09DFC071C96
-:206D10003AD1E078A168E28A236909F0FDFEC8E710F0FCFD8246E08A0090E0680190208B1D
-:206D30000290A0780390207D049001200590277807B90546E1786268A368284602F07CFE6D
-:206D50000746504610F0DEFDB7B9B8F1000F02D010F028F802E030460FF062F908B91420A4
-:206D700014E00EF051FC071C06D1E07821690CF04BFC96E74FF0FF37B8F1010F02D0022006
-:206D90000EF08AFC484610F0A5FD384606B0BDE8F087C046504502401A3200202DE9FE4F33
-:206DB000794C074694F83D00002800F0DA80DFF8DC81B7F84210B8F88A00884240F0D180BC
-:206DD00007F128000FF08EF8002800F0CA80002598F88D0084F83D5010B102200FF0F0FB84
-:206DF0006148007810B101200FF0EAFB387C400905D310200FF0E4FB802010F0A5FA20203A
-:206E10000DF056FE594E06F120000CF03DFD7A6851781078334600EB0120C0F30321C0F3DB
-:206E3000003684F8391000F00F0184F83A60C0F3031684F83E1098F8B30088F890600F28B1
-:206E500004D0884202DDD67806B9014688F8711098F871A083F84050BAF10F0F09D194F875
-:206E70003B0002287DD10EF041FA07F071FBBDE8FE8F3F480078012803D00120294600F006
-:206E900039FE43484068804700900FF0D9F93948DFF80091DFF8E0B0066898F8712099F8E0
-:206EB0000030D9F80400311A980091FBF0F05BF822100DF091FCC9F804605BF82A0001912B
-:206ED0002E4EB060F0600CF05FFE019831680EF027FA09F081FA2E4900988968884794F84D
-:206EF0003B0002280DD127480CF0CEFC98F8712034F812004FF470719140091A21480FF02B
-:206F10002DF898F89030388929460FF028FA20630F2B14D098F8711094F83900994208D071
-:206F3000401C6FF00F0598408101A1EB80016D1805E0401C98408501A5EB8005A03D65632D
-:206F5000022004F1200584F8380028460CF09CFC0B48A062616B28460FF000F8102010F079
-:206F7000F3F9BDE8FE8FC046773000201C310020E41A002060160020E8880100241A002026
-:206F9000910701002C310020EC170020A81100208C140020C81900202DE9F04F7A4C80462D
-:206FB00008460026ADF1440D0028089004F105010E701ABF006800684FF0FF30B8F11D0F39
-:206FD0000C900CBF1E201D20099009F0DBFD24224046314610F090F915250D9605210E96E2
-:206FF00020460F96C0880A9104460B94A1427EDA65484779002F6AD1641F404602AAA4B28D
-:2070100021460AF079FCBDF814709DF81130781D1FFA80FAD80951D233F07F035AD0029AE4
-:207030000C98904256D0099829460AF095FA002850DC8EB9611E40463A4689B20FF080FA37
-:2070500050B90299E01B80B2B1F5805F0B9041D10F904FF0040906E0A9460AEB0500B9F1B9
-:20707000000F85B236D007EB09001FFA80FB2146052206AB40460FF094FD099806AA5946E0
-:207090000CF0ECFF26B90E98401C80B20E9006E0E01B81B209984A4653460CF0DDFA0D98F2
-:2070B0009DF818205946401C22F0400280B20D9009988DF8182010F01FF90BE098080CD2F6
-:2070D000544507DA3049052048710F4638714FF0FF3056E0E41BA4B204E0404621460DF00A
-:2070F00025F804460A98A04282DB2748C0880B99761C0446022E0A91FFF678AF0C98B0F1D5
-:20711000FF3F14D020480899C58008890090C86801908A88CB880868099904F055FF1A48EC
-:207130000D9E0746C588FC80701C80B20D900F98C0B101460C2202AB40460FF032FD0D9F89
-:2071500002980E9EC5F5805404210C22ADF80E4002ABADF81070401C02900998ADF812608D
-:207170000AF034FA09980CF051FC074840790028ADD10548C580404609F004FDC5F580579C
-:2071900038B211B0BDE8F08F441A00202DE9F0411C4615468C4208BF854282BF00230022AC
-:2071B000E5E0002C08BF002D0AD100290EBF00286FF000006FF0000100F0E1F8BDE8F08143
-:2071D0005FF000085FF0000E002C08BF8D429CBF2C1C0025070C47EA01470E0CB44208BFFE
-:2071F000BD429EBF5FEA044444EA15445FEA0545070A47EA01670E0AB44208BFBD429EBF9D
-:207210005FEA042444EA15645FEA0525470847EAC1774E08B44208BFBD4200F29380870875
-:2072300047EA81778E08B44208BFBD427CD8C70847EA4177CE08B44208BFBD4266D80709D7
-:2072500047EA01770E09B44208BFBD4250D8470947EAC1674E09B44208BFBD423AD887091C
-:2072700047EA81678E09B44208BFBD4224D8C70947EA4167CE09B44208BFBD420DD8E6018E
-:2072900046EA5566EF01B14208BFB84201D3C01BB14158EB08085EEB0E0EA60146EA956624
-:2072B0004FEA8517B14208BFB84201D3C01BB14158EB08084EEB0E0E660146EAD5666F01AA
-:2072D000B14208BFB84201D3C01BB14158EB08084EEB0E0E260146EA15762F01B14208BFD5
-:2072F000B84201D3C01BB14158EB08085EEB0E0EE60046EA5576EF00B14208BFB84201D3D3
-:20731000C01BB14158EB08084EEB0E0EA60046EA9576AF00B14208BFB84201D3C01BB14103
-:2073300058EB08084EEB0E0E660046EAD5766F00B14208BFB84201D3C01BB14158EB08089D
-:207350005EEB0E0EA14208BFA84201D3401BA14158EB08085EEB0E0EA34208BFAA423EBFC6
-:207370002D0A45EA0465240A89D3734642461E4617460B46024631463846BDE8F081704747
-:207390002DE9F04306467078ADF1140D002840F0D78096F8961002291CBF0329E82096F8F6
-:2073B0008B108029C8BFE82096F88C10092901DB0A2900DDE82096F88D10002900F0BF8017
-:2073D000042980F2BC80002840F0BA80614C04F1B7000078884204D006F18D01E82001F043
-:2073F0005FFF06F18C01E72001F05AFF06F18B01E12001F055FF06F19801502001F050FF41
-:2074100096F8960002280CD04FF6FE70A4F8840006F18E0104F17A0010F06FF906F18E0578
-:2074300004E006F18E052888A4F884004A4806F180010B220FF052FD4FF001080220A6F871
-:2074500016802946307501A80FF0B8FB96F89A70B6F89890706806F19A01002FA0F101007E
-:2074700070600CBF002040464F780FB140F002008F780FB140F00400CF780FB140F00800C8
-:207490000F790FB140F040004F790FB140F0800071684A1E7260314B0870377D7168002533
-:2074B000481C3062781E087030893565801C30811878B565A0B30427F08A86F8695006F148
-:2074D0008E0186F86B70C00934BF94F8890094F8B20086F86A0006F16C0010F00EF9204CE7
-:2074F000206810F47F0F0CD086F82C70206806F12C01424600F47F003063304602F01CF9B5
-:20751000206810F0FF0F0BD02A2086F83C00206806F13C0100F0FF003064304606F0AEFC91
-:2075300000953046832101AA4B46FCF79BFB071C02D1304606F02EFE381C01D106E0E82025
-:2075500070701820307030460BF068FC05B0BDE8F083C046A81100206C30002024140020CE
-:2075700010870100F0B542F20400ADF11C0D0DF115010CF0FFF942F2050005A90CF0FAF9E1
-:20759000664C67489DF81510A0666420414321666449C4F884109DF814104843E0676248F9
-:2075B000C4F8A0006148007880B942F2020069460CF0E0F968460EF0E3FE04F15C000BF072
-:2075D0008BFD04F134000BF0CFFF27E042F2030069460CF0CFF90EF0FDFC05466846294611
-:2075F0000BF098FB2D1A04F1780084F85B500BF073FD04F134000BF019FD012742F202000F
-:20761000694684F854700CF0B5F968460EF0B8FE04F15C000BF060FD84F85870E8200DF16C
-:2076300016010CF0D9FB9DF81600032804BF012084F8B40094F8B80000286DD13C4D002115
-:20765000302205F1080009F098FB20460021332209F093FB3748E861374F6F6105F11000B7
-:207670000BF03AFD42F21B000DF117010CF082F99DF817000DF1170185F82C0042F21C0031
-:207690000CF078F99DF817109DF8170085F82D1095F82C10012641B148010EF073FC286328
-:2076B00008B910F036F895F82D0040B100EB800080B20EF067FC686308B910F02AF81F490C
-:2076D00005F138000A270A684B6802607F1E436000F10800F7D1002195F82C7085F8881054
-:2076F00047B1286BFF220346C2777F1E997703F12000F8D195F82D7047B1686BFF22034663
-:2077100002717F1ED97003F10500F8D12846062209F033FB84F8B86007B0F0BDE82D002054
-:2077300039390100F5F200009F760100ED130020A42E002075B00000002A7515D08A010083
-:207750002DE9FE4F0CAF8A4699460446D7F804B00292594603F0C2FA06466A480578002EF4
-:2077700000F0CB803888F082DFF8AC8134751DB1012C04BF1520307506F1800059460B2204
-:207790000FF0ACFB012C04D00D2C1CBF7068401C00D170683062002598F838003565002800
-:2077B000B56543D0DFF864B1052C18BF012C38D14FF0040AF18A86F86BA0534886F869503F
-:2077D000C90938BF29380078029986F86A0006F16C000FF092FF0BEB8407386810F47F0FCE
-:2077F0000CD086F82CA0386806F12C01012200F47F003063304601F09FFF386810F0FF0FB3
-:207810004FF0030A0BD02A2086F83C00386806F13C0100F0FF003064304606F02FFB98F8B0
-:20783000380018B1D8F898100D2C13D00095029A4B4630465146FCF715FA071C5ED1E41F7D
-:20785000012C03D8707E40F020007076304606F0A1FC53E005205C4686F86B00343409B1DE
-:20787000FF208847206810F0F70F12D02A2086F83C0098F80120206806F13C01012A00F00E
-:20789000FF0030641CBF20F008003064304606F0F5FA0095029A4B4630460321FCF7E2F939
-:2078B000071C2BD11A4806603489756801A964200CF092FA174E6D1E231DA01C99B2A6F8AC
-:2078D0007800C1F3022040F0080005F801090A1F297091B2AA1CC6F88450104608F0CCFE96
-:2078F0009DF8040000280CBF49F24E0047F60E20C6F8C000C6F8800000E01A27F8B2BDE8CC
-:20791000FE8FC046241400205A1200200887010098180020280D0020EC1300202DE9F041C5
-:20793000724B734ADFF8C0810C46D128014610DCD12879D0713800F0B280401E00F0AA80A2
-:20795000401E00F0A380113810D04C3800F0878007E0D23853D0401E40D0401E33D0401EC1
-:2079700028D008460FF05DFC0B2802D1F420BDE8F0815B4D05EB8005A97809B9E87850B1C8
-:20799000E878884208BFFB2000F0A880227891426ADC904268DB534E7068804729786A7828
-:2079B00007464046401821460FF098FAB1683846884792E02178022956DA1846641C0422C4
-:2079D00000EB810086E0207832284DDA1746C100241D182201EB001178187BE02678304617
-:2079F000022841DA2C2505FB0680611C102239300FF074FA616905FB0680C1646DE022787A
-:207A10006178022A30DA02292EDA40462C2301EB42064F1C03FB0205022285F8387000EB67
-:207A3000460000F5DE7018E022786178022A1BDA322919DA2C23404603FB020595F830300C
-:207A50009942A4BF4B1C85F83030322303FB021101EB4101032240189030A41C3AE0207851
-:207A70006778022800DA17B1E820BDE8F08141462C22C5197E1C02FB00136A0083F8286063
-:207A900002EBC50288180A227C30E6E72CB3184608221FE00CB310464FF496621AE0B4B9C0
-:207AB000404600F17C04A0F1080200F1900300F5DE71022042F82C4F9360401E116104F1CD
-:207AD0000A0403F1960301F10401F3D105E040465822243021460FF001FA0020BDE8F08170
-:207AF000247901008C140020A021002014280020642300202DE9FF47604C804660680F4649
-:207B10008047A246674E684D654C8146B8F1010F5AD00FF0A7F9002851D0594800780028B8
-:207B30004DD158480078002849D157480078002845D156480078002841D1554800780028DB
-:207B50003DD154480078002839D153480078002835D152480078002831D1002009F0EAFA47
-:207B700068BB207858BB012FA0461FD04F4F326AE86897F90010344611F1020F05D0926B99
-:207B900097F900109047E868226A494E96F9001011F1020F05D0926B96F900109047E868A1
-:207BB000226A6FF001013170397003E00C35203628683268012188F80010D1698847DAF84D
-:207BD00008104846884755E0012009F0B3FADAF8081048468847207801283DD1DFF8D490D3
-:207BF00099F8BA000028FBD1306A436CE868022102AA98479DF80800A84660B199F8BA0008
-:207C100048B92078012827D10020012F207023D00FF034F920E0DAF804008047264F022166
-:207C3000814600222170306A7A81244B85688DE80600D8F80C0008373946A847002801D5C7
-:207C50000FF032FB1E4991F90000401C0870DAF80810F7604846884720781A4D022803D188
-:207C7000287808B10FF020FB2878012802D020780228FCD00090BDE8FF87C0468C140020D7
-:207C90001C3200201E320020203200201D3200201F320020CA1A0020CB1A0020CC1A002095
-:207CB000E51A00202816002084190020C81A0020C91A0020282D0020280D0020DD2E01009F
-:207CD000CD1A0020E41A00202DE9F843644C0746207808B10FF0E8FAA0460120614988F8BE
-:207CF00000000978012902D00021FFF703FF5F4D60495F485C4C012F2A68D1F800900078A7
-:207D1000A77035D9BF1E52D07F1E13D07F1E02D0781E47D043E092F86900207192F86A00F8
-:207D3000E0700020607102F0A3FE2A68002A64D1BDE8F883002860D0564ED6F8981021B10A
-:207D5000032088472A6896F83800002855D0776D002F52D0D06D20B102210023B8472A6862
-:207D7000776D106E002848D008210023B84743E000202071D18A4048C90934BF90F8891069
-:207D900090F8B210E170A77837B990F867701FB10229C4BF0220E07002F06AFE2CE00FF075
-:207DB00083FA29E0002020710FF0D5FC24E0334F38788600D9F83C00804779683C22401A83
-:207DD000B0FBF6F0B0FBF2F151436278401A9101A1EB8201091AD9F83C003C318FB2804766
-:207DF000274906FB0700086791F8740000F0F00040F0020081F874002A682248007878B9EB
-:207E100012B90FF051FA2A685168087800F02000E0718878A0710878800901D20FF09EFB8C
-:207E3000A078042819D0184D68688047A17802290CD016490F7817B915490F7837B1022143
-:207E500088F80010A9688847BDE8F883832188F80010A96888470EF033FCBDE8F883C0461B
-:207E700020320020E41A0020C4180020640E00202414002048160020A8110020C819002024
-:207E9000280D0020183200208C1400201C3200201E320020EC1300202DE9F04389461446E4
-:207EB0000546ADF12C0D69460DF0CCF85FEA000800F0C480AD1C0226284602A90BF0D9FAC3
-:207ED000071C00F0BB809DF80900814509D0F6197D1908F10200B61CAD1CB6B2B042EBDCAB
-:207EF000ACE0401E05F1020500F08B80401E52D0801E38D0401E2BD0401E24D0401E18BF8A
-:207F1000622040F0AB80202F40F0988028686F6805F10801206004F10806676001F108052E
-:207F30000A684B68326004F1100773602A6868683A6005F108067860306804F118010860B5
-:207F500073684B6089E0022F78D12888208084E0202F73DC20460021202208F00EFF3A4608
-:207F70002046294677E0042F68D12888AD1C208015F8010BA070287800F00100E070287896
-:207F9000C0F3400020712878C0F38000607128784011A07161E00A2F50DD0DF112000021CF
-:207FB000162208F0EAFE28682D1D20602988271D42F20B00398004A90BF0DCFCBDF810000D
-:207FD000A18888423ADCA81C10F8011BA17110F8011BE17110F8011B217210F8011B012319
-:207FF000C1F3C202A2720DF1120200F0F7F928B39DF82700A0819DF81670E78104F11000B3
-:2080100026E0042F1ADD0DF112000021162208F0B4FE15F8010B207015F8010B607015F86E
-:20803000010BA07015F8011B0DF112020023C1F3C2002071284600F0D1F908B967200DE052
-:208050009DF82700E0809DF81670278104F10A000DF11601112207F023FB00200BB0BDE855
-:20807000F083FEE72DE9F04F674C2068ADF12C0D002840F0C58004F124063068002800F0C5
-:20809000BF8062480078022800F0BA80614D281D006880470A90606AB046074678B35C4E7D
-:2080B0004FF0000A4FF01D093B7D0820711E11F8012F9A421ED0401EF9D1404639465246CB
-:2080D0000CF050FD787E30F07F0005D194F82F00401E84F82F0004E094F82E00401E84F8A0
-:2080F0002E0087F8019057F80CBC384609F0FAFD5F4602E0BA4657F80C7C002FD4D1352026
-:2081100007F0B6FB444EA968002849D1452007F0AFFBA96800283DD1D8F8000038B1017D3E
-:20813000252904D050F80C0C0028F8D110E078B196F8580050B3684601A907F023F93748D0
-:2081500000990078001F884213D8012086F85500152007F08DFBA96848B10A98884720687F
-:208170000DF106016C3004F033F858B10FE00A9845E0252007F07CFBA9680A98884700201B
-:2081900086F855000420FFF79FFD39E0192001F04DF935E00A98884708200BF0F9FD2FE00F
-:2081B0000A98884796F8B400A8B10EF049F9317800290EBF0921491EC9B201EB81017118C1
-:2081D000D1F802100FF0A7FA42F21071814284BF6431081A00D800206968002808BF0620C4
-:2081F000DBD0C6F8980088470446D6F8A010D6F8980006F1A8020CF0A9FFA96820468847E6
-:208210000BB0BDE8F08FC046640E00207F160020E08A01008C140020E82D00205F2F002014
-:20823000BCB50546694800880021820804D2B5F89A20D20828BFE82110F0600F04D1B5F896
-:208250009A00800828BFE8212889B0F5006FA8BFE82195F8980030B995F89400002808BFA9
-:20827000F52100F0AF80002940F0AC80DFF860E1D5F8A870DFF860C19EF8381017B9012967
-:2082900003D028E0002900F09C80D5F8A81060468D3041F002010778C5F8A8101FB141F0AD
-:2082B0000801C5F8A810D5F8A81011F0FF0F05D02A2085F83C0001F0FF072F6411F47F0FA7
-:2082D00007D00420D5F8A87085F82C0007F47F0028639EF83810002059B33E4995F89470DE
-:2082F0000B6804226FB925232B750968C98AC90934BF9CF889109CF8B21085F86A10891C1D
-:2083100008E015212975D98AC90934BF9CF889109CF8B21085F86A1085F86B2005F18C075E
-:2083300085F869003B6805F16C010B607A684A6001E00121297595F89C70EF760446AC6550
-:20835000B5F89A102C6595F89D30E9826A682B7795F82C702A620F2F09D00246B5F8A40087
-:2083700005F12C0100B90122284601F0E5F928BB95F83C10FF2901D1AF6D27B105F13C01D4
-:20839000284605F07BFDC8B9009495F89810B5F8963005F18C022846FBF764FC071C0CD1F1
-:2083B0002889B0F5006F03DA284605F0F3FE04E0E5206870284609F095FC3846011C01D191
-:2083D000BCBD1821284607F049FDBCBD20150020EC130020640E0020A81100202DE9F04F83
-:2083F000154601F00708C1F3C2074FEAA119044683460C22ADF1240D0021684608F0BDFC12
-:208410006248B8F1000F36D0B8F1010F7ED1228801A9A6780A80E41C8E7014F8011B01F0C9
-:208430000F018DF8081022880DF10A031A80BDF80A30A41C4FF0000C6B75019ECDF818C01A
-:208450004168B14207D1017A9DF80820914202D14189994208D006990C30491C0629069137
-:20847000EED96046614601E0017840788DF800108DF8010022E014F8013B14F8016B8DF864
-:20849000003000228DF801600C38079210F80C1F994202D14178B14207D00799491C06291F
-:2084B0000791F3D91046014603E04168027A4089687501918DF80820ADF80A0003A806F06E
-:2084D0001BFE9DF800109DF80100B8F1000F11D0B8F1010F1AD1019904989DF808209DF873
-:2084F0001460484086EA02010918BDF80A20BDF8160004E09DF80C2051409DF80D205040AA
-:20851000401803D1EF701FB1022F05D0002039E02188281DA41C0180B9F1010F27D0B9F127
-:20853000020F2CD1BDF80A10281DC91DCA10214607F0B6F8BDF80A00C11D04EBE104F0B12B
-:20855000401E811000EB5171C910C9B26D182B798710012600EB577121F00701401AC0B29C
-:20857000401C06FA00F0FF301840287107E0291D20460AF055FF207804EB8004641CA4EB84
-:208590000B04A0B209B0BDE8F08FC046D41500202DE9F04FADF1840D209002F005FB0EF05A
-:2085B0005FF90026012804D10EF090FB022808BF01265B490868C0F38150012806D151F8AD
-:2085D0000C0C0127010E07FA01F00643554800780DF0A6FD544D2C46286038B1FF2204F1B2
-:2085F000400107467F1E01F8012BFBD1209909684FF0000901F0FF02FE2A1DD0DDF880C0C1
-:2086100001F0FF074A460123FF2F0ED0B84203D903FA07F73E4201D002207EE001F0FF0100
-:2086300047EA0909611881F840205CF8041F521C01F0FF07FE2FE7D1092005F049FD2098B8
-:20865000002124220823606017A80FF03FF94FF0010804F1240017AA8DF8748041460FF0A1
-:2086700031F9236843B3002794354FF0040BBA4608FA07F0064219D119EA000F04BF07F00A
-:20869000FF0141F4C04105D0E019209B90F8401053F82110254804F025FCF8B24FF0FF311C
-:2086B0000EF016F92368C5F800A001E0C5F800B07F1C2D1D9F42DBD301A8002130220823AC
-:2086D0000FF0FCF81A4E30780025102101AB0990184A009504F108000FF0ECF80DA8282216
-:2086F000082329460FF0E2F80DAA7068124914952B46139004F160000FF0D4F80F4951F88F
-:208710000D0C474620F4F85040F4005041F80D0C0B4EC1F8FF7F2846376021B0BDE8F08FE7
-:20873000B43F0050193200204C2B0020007FC767E88A0100FD680100814101000D30094015
-:20875000080009402DE9F843644C002605466676687D0628A4BFE8216176A97D0E2903DDD7
-:2087700003281CBFE8216176032805D15C48008840083CBFE820607695F8280008B1E8203F
-:208790006076E87D092801DB0A2801DDE8206076287E08B1042801DBE820607604F118073A
-:2087B000294638460CF056FE291D112207F12C0006F076FF95F8280004F11809002804BFAE
-:2087D00084F86060A87D04D095F8290084F86000688DA4F85600687E84F85800A87EDFF824
-:2087F000048184F85900E87E822784F85A00287F98F8A76084F85B0098F8B63084F85C7057
-:20881000394F84F85D6005F11D01E763042684F8406098F8B72084F85E3009F1490084F8B3
-:208830005F200B220EF05AFB607E00284ED1687800284BD1287EA77E8DF800000FB1EA20C6
-:20885000607605F11701E72000F02AFD94F8600028B1287E022808BF01208DF8000098F874
-:20887000B7009DF80010884203D0E820694600F017FDA77E1E4C601C007808B10EF014FDE9
-:20889000B8F88A0019490880C7B1032F12D0052F05D0012F03D0022F01D00EF005FD0220E8
-:2088B00060700BF039FF4FF6FF70A8F88A001149088005E00BF030FF032000E001206070E2
-:2088D0002720287030460DF07BFE01E02A20287028460AF0A3FABDE8F883C046B0300020CF
-:2088F00020150020A8110020597301008C19002088310020721600202DE9FE4F544E0746D5
-:20891000301D00688047534C00258346A01C05701FB10DF075F90AF045F994F83800B046E0
-:2089300010B1E06B00B1804709F014FEDFF8749109F11C0090F900000EF0F4FB0DF0FAFA3F
-:208950000EF0E6FB0EF06AFA0EF05CFADFF808A107270AF1240656F8040B00B180477F1E2D
-:20897000F9D13E480560456005614FF470018160C1600AF1040007680FB10BF0EDFE3848DD
-:208990004E4600688AF80E508A3EC0B112E048460CF0E8FA029002A80BF0DEFE21E04846B2
-:2089B0000CF0E0FA019001A80BF0D6FE14E068460BF0D2FE07F054FD00280090F7D1294822
-:2089D0000078012803D028460146FFF793F82648264F057007F12409786A0028DFD109F1AC
-:2089F0000409B86A0028D2D17D62BD622048A06187F82E501F4BE36187F82F501E4A226271
-:208A10001E4961621E4B87F830501E4AA362204BE2621D4963601F4A21631C4FA260204BAA
-:208A300065701D4967631D4FE16058462761D8F808106361884706F18D01522000F030FCC0
-:208A500096F8A7000AF0F8FE2846BDE8FE8FC0468C140020EC13002014150020241A0020B5
-:208A7000242D0020E41A00201B320020640E00200FEB0000ED7601009D6101003182000048
-:208A900039D30000916501003973010031B60000D7BF00009DB100003533010075F5000078
-:208AB0009D240100321200202DE9F041071CADF1200D00F0C180F86B002800F0BD80B7F8B3
-:208AD0004020002A00F0B880007817F130014FF0000603D097F83810052902D0002E00F016
-:208AF000AB80584C401E2BD0801E18D0C01E40F0A380012A40F0A080514C0725E0788DF866
-:208B10001C5000280CBF0121311C3046E17009F055F9E07802228DF81D0028460BE0012AC7
-:208B300040F08A80B4F854000122401CA4F8540004208DF81C00394607AB02F0BBFB7BE083
-:208B5000684631460C2208F018F9B7F840000B284CD1FD6B15F8010B84F820002B786878CA
-:208B7000AD1C03EB002328460EF039FA8046281D0EF035FA0546387A2077022806D03968FF
-:208B900004F1140001607A68426001E03888A08203F00100190928BF40F00800590928BF96
-:208BB00040F010006084834218BF0226B8F57A7FADF8020008D32448404505D3C4F824806C
-:208BD00040460CF0B1FD00E00226606AB5F57A7F019007D342F21070A84203D3A5620EF0FC
-:208BF00033FA00E00226A06A029000E0012602258DF8016068468DF800500AF02DFF0DF1D9
-:208C10000D009DF801108DF80C500EF089FCBDF802100EF085FC01990CF01BF802990CF0A7
-:208C300018F839460D2203AB284602F043FBB4F85A00401CA4F85A0008B0BDE8F081C046EE
-:208C5000A410002090120020407E05002DE9F843634C5C4D5C4EDFF87881604F94F8E41059
-:208C70000846401E0B2864D8DFE800F07E2C43062343062343067967042907D001220A290D
-:208C900045F8212C14BF0220032004E0202045F8210C0120024684F8E200002045F8390C2B
-:208CB0000827C5F8FF7FC5F8F37F45F8392CBDE8F883052914BF09200620002784F8E40072
-:208CD000376078E094F8E170383D0120002FC5F81B0004BF0620002102D00021F1600320AA
-:208CF00084F8E400032045F8010C31603068800861D294F8E4103548012703290ED000681C
-:208D1000456800216022052300914046A84794F8E400062814BF0A200720CFE70068456838
-:208D3000002160220523022000904046A8470420C4E70EF0B3FDBDE8F8832648264F00268B
-:208D5000012506600E203D6004F036FE02200CF0A3FC84F8E45084F8E360BDE8F883002018
-:208D700038600C25786024E04FF08059D9F8A0010168202088472C3D0F2045F8010C41F623
-:208D90001D56C5F80360D9F8A401466800214FF4C0720723022540460095B047D9F8A4019D
-:208DB000C66800214FF4C07207234046B0470120386084F8E45004F178000EF06BFDBDE857
-:208DD000F883C04639400C4038600C40A401001000A00C402C500C4004800C4034600C4040
-:208DF000940F00202DE9F04304466668A7680D46ADF1340D0EF08AFD3178012903D10EF0D4
-:208E100081FD0020A9E04FF0010886F800800EF079FD287870706878B07068687060A86831
-:208E3000B060E868F06028693061287D3075687D7075A87DB075A869B061287F3077687F9B
-:208E50007077A87FB0774FF00009C6F82090C6F830904D4675627563B562B56386F82C502E
-:208E7000102386F83C3086F82D5086F83D50786805F02EF9204605F0AFFA204606F028FE3D
-:208E900070B937480068C16838688847786804F093FD0EF03BFD35700EF034FD2C465BE0FF
-:208EB00001A82946302208230EF008FD0694387BCDF800902B4A0990B96801AB06F1800016
-:208ED0000EF0F8FC01A82946282208230EF0EEFC05942549386901AA2B46079006F19C002D
-:208EF0000EF0E0FC01A82946242208230EF0EEFC8DF81C80B07838B906F1D000294601AAFC
-:208F10000EF0E0FC19483061707838B906F1EC00294601AA0EF0D6FC1548F06001A829460A
-:208F3000242208230EF0B2FC0695ADF814501149079406F584700A2201AB0EF0A3FCB969E5
-:208F5000FA6906F140000EF063F90B4A06F16C00042123460CF062FF20460DB0BDE8F0832F
-:208F7000D0010010B5BB00005D4E01007D7601007576010001FF0000797301002DE9FE43C0
-:208F9000604C614D0E46B00959D35D4800F1280980464DE00178D0290EDBD02909D181784D
-:208FB0003970C17879700179B97085687D60C168B9600EF03FF947E004F10805286009F047
-:208FD0002DFF28460BF0C8FB3EE0884798F83010491E88F83010A9688847009801788DF8CF
-:208FF0000410A0604778CFB1DC2F0DD0DD2F0BD0E42F09D0F32F07D0DE2F05D0DF2F03D097
-:20901000E82F18BFDB2F0BD104F08EF99DF80400162805D168460BF09FFB01E009F0FEFE2B
-:209030009DF80400162803D004F108000BF094FB48460BF097FF002869680090C5D1F00BB6
-:20905000A846C00305D0314F07F00AFA00280090A0D1700905D32E208DF8040001A809F00C
-:20907000DDFE700805D325208DF8040001A809F0D5FEB00805D326208DF8040001A809F071
-:20909000CDFEF00805D327208DF8040001A809F0C5FE300905D329208DF8040001A809F06B
-:2090B000BDFEF00908D300208DF805002D278DF8047001A809F0B2FE300A08D300208DF80E
-:2090D000050030278DF8047001A809F0A7FE6068D8F8041080B18847616800270091D8F8E7
-:2090F000081067608847009804F10806306009F095FE30460BF030FB0020BDE8FE83C04613
-:20911000640E0020141500208C140020381A00202DE9F04F0746880FADF1140DC0F0B28058
-:20913000002009F04FFE5B4D4FF000081C35C5F80080564845F81C0C01200DF0F1F9564893
-:209150000EF09AF955482838BC6890F8342040F60A06C34600F1280189468246A0F82A802F
-:2091700090F835300E8002F0F002C0F82CB003F0F00180F8342041F00101A4F802809AF859
-:20919000042080F83510012A01D17B7CABB1B8680088A6F10801814205D0218B4FF60F406E
-:2091B0000840208304E0218A4FF60F4008402082B86887F8118004F04BF8B868694604F07D
-:2091D00089F968460EF090F83346D91F4A1C00E03446666836B13088834203D0814218BFF9
-:2091F0008242F5D1C4F80490607B00F0F00060730AF114000EF099FA80680088814220D034
-:2092100082421ED03E8C0EB397F82C0097F82D60C7F824B000F0F00087F82C0006F0F00026
-:2092300040F0010087F82D0007F12003CAF82C3099F80D00A7F8228000F0F00089F80D00BB
-:2092500004E0D9460AF1400080E8000328680028FCD0C5F8008001200CF038FC012808D042
-:20927000607B00F0F00040F00100607308480EF003F9B9680A8A4FF6FF3010400882B868B2
-:2092900045F81C0C05B0BDE8F08FC04601010E04592B0100001004406D350000980A002029
-:2092B0002DE9F0475E4E80460F46B8F1450F07D106F13004342220460DF010FEF466ACE0DD
-:2092D0000DF05AFA3A2808BFF42000F0A780554C04EB8004A07810B9E178002938D0E17801
-:2092F000814208BFFB2000F09980B8F1580F25D0B8F1600F1BD0B8F1E00F0FD0B8F1E80F91
-:2093100005D03A78904220DC91421EDB20E006F1B7003978007881421AD17EE097F90000A9
-:209330000AF0C0FB4FF6FF7181420ED010E038880A280ADBB0F5804F07DA09E038888F2896
-:2093500003DB46F2B041814202DAE820BDE8F087354D6868804721786278824606F1640084
-:209370008146401839460DF0B9FDA96850468847404650384FD0801E37D0401E48D08D3809
-:2093900041D0401E28D0401E3AD0801F45D16868804704460DF04EFDFCF76AFC96F9A60082
-:2093B0000DF0C0FE0CF0C6FD0DF0B2FE0DF036FD0DF028FDA9682046884796F8A7000AF0AF
-:2093D0003BFA09F129015220FFF76AFF0EF0C0F818BB09F0BFF820E096F8A7000AF02CFAC5
-:2093F00001281AD01A20BDE8F08796F88D0018B902200BF05DFB10E002200DF09DFF0CE0FC
-:209410000DF000FD09E096F9A6000DF08BFE04E00DF004FD01E00DF07BFE0020BDE8F08729
-:20943000A81100202C8201008C1400202DE9F8435B4D804695F83800002798B12A6F8AB10C
-:20945000D5F8900070B142F21A0069469047D5F89000804730B19DF8000018B1B8F1E10FAE
-:2094700008BF01274F4A02F1B70000780CF0B2FB407B02280CBF052601264D4C206800283E
-:2094900000F08B80B8F1000F91466ED0B8F11B0F02D1017D052968D1B8F1E90F25D027BBF1
-:2094B000B8F1E10F16D10DF0D9FD90B12068C18AC9080FD299F89810817699F886104A1CC6
-:2094D00089F88620406881703046FEF7FDFBBDE8F8832068B8F11C0F16D1216A002949D029
-:2094F000884700202060BDE8F883F1200DF073FB2768B87E50B90DF0B1FD20B12068C18A34
-:20951000C90801D2D6E7206847462FE07868398907F0B2F878680088000905D395F8380065
-:2095300010B10BF001FB2768F88AC00811D3387E00F07F003876387D032803D1787E40F0F9
-:2095500004007876F0200DF046FBE168206888470FE015490126B87E0E70401EB876F02057
-:209570000DF039FB11480078AFE70027477008F0B9FB2068C08A000A0AD395F8380018B96A
-:2095900099F8A7000AF058F999F9A6000DF0CAFD0020206010200DF0D7FEBDE8F883C04674
-:2095B000EC130020A811002018320020C6180020640E00202DE9FE4F5E4C814604F1140AC2
-:2095D00050460EF0B2F890468B46074608F0010000900EF09BF98425BBF1FF3F019017D122
-:2095F000A6692EB1A069C068814508BFA0690DD00EF08CF9DAF800608AE0F168894540F053
-:2096100086800EF07FF9301C00F08780B0F924B058460CF0C9FA00287FD0A16981425CD031
-:20963000B84217D104F1B0000DF03AF860690068606197F82700394640F0040087F8270063
-:209650000AF10C000BF004FE5FEA980021D3676901221AE00FB905B31CE0396888423AD142
-:2096700004F1B0000DF01CF839680868386091F8270040F0040081F827000AF10C000BF0F5
-:20969000E7FD5FEA980004D300224846394608F001FD002501980EF035F9A179627A607940
-:2096B00041EA0203184310D1012939D0012A37D026691D480DF0E0FE022104F1D4000DF011
-:2096D00055FC30460DF0D8FE2AE004F1D40002210DF04CFC24E03F68BCE7009F90F82720E9
-:2096F000012505FA07F13E1C41EA020180F8271014BF0E480E480CF069FB5FEA980004D36F
-:20971000616948462A4608F0C5FC002505E03668002E7FF472AF0EF0F5F801980EF0F2F8E2
-:209730002846BDE8FE8FC0466D3500000100020401000104700A00202DE9FE4F0746104624
-:20975000002F00910CBF4FF0E80B4FF0000B002900F0AB80BBF1000F40F0A98060B17868A9
-:20977000401E7860F82101707868401E7860002606703889801C3881009C4FF000094FF02E
-:20979000020ADFF83081CDF80490083C14F8080F00F00F010F2900F08580012820D00428F3
-:2097B0007AD1454D95F83800002875D0296D60688847061C26D03889B7F84C103018801C95
-:2097D00081421FDB78686D6D6168019B3A46801BA847B8B178683D89801B786076195AE048
-:2097F0000098019E042309EB0001C91C11F8010FFF2841D021283DD13889B7F84C200B3062
-:20981000824202DA1A20BDE8FE8F7868B8F8A020401E7860121202707868401E786098F86A
-:20983000A02002707868401E7860019D057098F8A2007A68107098F89E2078681201401E8A
-:20985000786042F00F02027098F890C098F871207868401E786042EA0C1202707868401E5A
-:209870007860212505707868F61DB6B2401E7860052505705B1EB9D17868C6F30121401EF9
-:20989000786041F0880101707868401E7860067038893618B61C3E81BAF1010A09F10809C8
-:2098B0007FF474AF7868B86501E04FF0E80B5846BDE8FE8FA8110020EC1300202DE9F04FD5
-:2098D0008A4609AF4FF08051ADF11C0D90463D69059001F5D8700490D1F8B001D7F808B035
-:2098F0004169069327208847524C4FF00309143CC4F884970126C4F87C67C4F88097022034
-:20991000C4F8FC06F868C4F8080430460DF0D1FED4F808040008F8D2D4F88C07800F28BF90
-:20993000B14655D2681E41460C238DF800000DF1010011F8012B5B1E00F8012BF9D1022D6E
-:2099500019BF0020011C98F80C1000208DF80D108DF80E008DF80F000099C4F83C15019B0B
-:20997000C4F84035029AC4F84425039BC4F848353968BAF1020F4FEAC542A1EB0A08A2F53C
-:20999000002106D34FEA4A52A2F580026FF315021143264A0A43C4F84C258246C4F85085BF
-:2099B000BBF1000FC4F854A5214DC4F858B511D02E6078682060C4F808B030460DF079FEC3
-:2099D000D4F88C078008F8D3D4F88C07000801D3CA4627E0C4F88497D4F88C0710F0030F2B
-:2099F000FAD1D4F8800720F00200C4F880073F7D47B1049F3868016A272088473868016962
-:209A100027208847C4F87C670598C4F8806748B12E6006982060C4F80880C5F800642062B5
-:209A3000C4F82880504607B0BDE8F08FC801042000004842184002402DE9F04F894609AF54
-:209A50004FF08051ADF1240D9246059038683D69079001F5D8700490D1F8B001D7F808B0FA
-:209A70004169069327208847504C4FF00308143CC4F884870126C4F87C67C4F880870220D5
-:209A9000C4F8FC06F868C4F8080430460DF011FED4F808040008F8D2D4F88C07800F28BFCF
-:209AB000B04653D2681E51460C238DF800000DF1010011F8012B5B1E00F8012BF9D1022DE0
-:209AD00019BF0020011C9AF80C1000208DF80D10019B8DF80E0000998DF80F00029AC4F83D
-:209AF0003C15B9F1020FC4F84035039BC4F844254FEAC542C4F84835A2F5002106D34FEA13
-:209B10004952A2F580026FF315021143254A079D0A43C4F84C258146C4F85055BBF1000F44
-:209B3000C4F85495204DC4F858B511D02E6078682060C4F808B030460DF0BBFDD4F88C076D
-:209B50008008F8D3D4F88C07000801D3C14624E0C4F88487D4F88C0710F0030FFAD1D4F88D
-:209B7000800720F00200C4F880073F7D47B1049F3868016A27208847386801692720884761
-:209B90000598C4F8806740B12E6006982060C5F800642062079FA760A762484609B0BDE893
-:209BB000F08FC046CC01042000004842184002402DE9FE4F524D286808B90DF075FB554C9A
-:209BD00004F13800DFF83C91DFF840A1DFF8408107789FB94D46686880474B490F7847B938
-:209BF0005246A96817782FB983234246137088476DE0A96802234246137075E0D4F898105E
-:209C100009B104208847676D2A685FB1D06D20B102210023B8472A68676D106E10B10821F0
-:209C30000023B8473C4E306A3C4F016CF86888474D46834668688047029033480578002DFD
-:209C500048D150460078002844D1D4F8841000208847F42001A90AF0BFF89DF90400304DBB
-:209C700058451ADC6B79C3B9D9F8081002988847A878042801D00DF017FB042140466F79D0
-:209C90000170D4F88410781C687109B1032088470320688100F006FD27E083214046346AFC
-:209CB0000170636CF8686A4600219847B6F90400BDF90010884214BF0020012007F0FEF9FF
-:209CD000D9F80810029888470835287838700CF0F7FC0AE0022140460170D9F80810029827
-:209CF0008847D4F88410042088470E480078012803D000200146FDF7FDFEBDE8FE8FC046DA
-:209D1000640E00208C1400201C3200201E32002020320020EC130020281600208419002057
-:209D3000C4180020E41A00202DE9F8434F4E84460120002430704E48504D04704D48DFF849
-:209D50003881047005F14E00008804EA0307B146002F4FF0020606EA020608BF002E14D1C3
-:209D70004FF0E04720461F401040002F08BF002803D11D2006F0B8FB54E0454695F9000033
-:209D9000401E28700DF086F84CE0424692F900303C4E5B1E137043F20842824207D06F8E36
-:209DB000931C834203D0BA4218BFBB4217D1304608300068826C60469047008843F603014E
-:209DD00081420BD0204601F0F7FF98F9000000283FD098F90000002838DD42E06F8EB5F826
-:209DF0006A1043F60400884205D0B84203D0B5F84E20904203D12248007803281AD1B1F5D1
-:209E1000505F05D0080B0BD31D2006F06DFB07E01D480168304601F5C071016005F070F812
-:209E30000DF014F898F9000098B198F9000000280CDD16E0022811D0204601F0BDFF98F9E8
-:209E5000000030B198F9000000280ADC0DF02CFA07E020460146FDF74DFE02E0204606F03E
-:209E700043FB89F80040BDE8F883C046E41A0020CC1A0020CB1A0020CD1A0020280D002028
-:209E9000C6180020401600200C0100212DE9F041554C2079ADF1400D032818BF607140F0A1
-:209EB0009E8000256571A84601A824220823294684F804800DF00AFD032001A98DF81C0090
-:209ED0002A4601200DF0DAFC1D27A0602E46A5700AAB3846414604220CF063FE9DF8281037
-:209EF000E378A52907D19DF82900FE2803DC9DF82B20962A09D0242902D0B72918D11FE02E
-:209F10003E46EBB99DF8290019E0B5B1984203DAFE2B18BF01280BD1984203DD012B08BF83
-:209F3000FE2805D0284606F02DFE9DF8290004E0384606F027FEA57802E03D46A570E07065
-:209F50007F1C1E2FC4DD8DB926B91D2009F05EFD042015E0A67030464FF480510AF0E6F821
-:209F7000E08041463046FDF717F80AE01EB1304606F008FEA57828464FF480510AF0D6F8DF
-:209F9000E0800AAF174D00970EA82968AE8801600EAB868093E8030042460C2306F030FEA7
-:209FB000E6880A2809D1384641460C2206F0E5FE40F6EF70801BADF82E00BDF82C000EAF6A
-:209FD000401CADF82C002968AE8839600EABBE8093E803000C220AAB06F032F9607910B0D2
-:209FF000BDE8F081F88A0100441A00202DE9F84F0F4605460CF0FBFB4FF6FF71814208BF0C
-:20A01000682000F096804C4C410001EBC0002418D4F8026016B9D4F80630F3B1D4F806105C
-:20A03000B14208BF692000F084806078401E0FD0401E07D0801E10D13868864273D881429A
-:20A0500071D30AE0388886426DD881426BD304E03878864267D8814265D3384E7068804739
-:20A0700042F20208B346DFF8D8A00090A5EB0800012816D9113831D1207862785646002190
-:20A09000301806F07AFE637838460DF073F8834298BF181C02D938460DF06CF80246304671
-:20A0B0001EE00BF097FF06463846314608F032FE361A5FFA86F9DBF80860B9F1000F30D07C
-:20A0D000207862783946504405F0EAFA1D484146A94218BF401C80F8009008E050466278A8
-:20A0F00021784018394605F0DBFADBF8086008F11900A84204BF00208AF8870008F11A00E0
-:20A11000A84213D19AF887009AF886104218322A01DC08430AD102208AF8860030278AF864
-:20A1300087700098B0476A20BDE8F88F0098B0470020BDE8F88FC046548001008C1400205D
-:20A15000302F0020422E00202DE9F0410C4601467138022840F29680133824D04D4F4C3886
-:20A170007AD0401E61D0401E48D0401E36D0401E29D0401E1AD008460DF053F806460B2E62
-:20A1900011D0424D6868804741498046B000425CBF1840184278394620460CF09FFEA96892
-:20A1B000404688470CE0F420BDE8F0812278022A68DA3949601C01EB820104220CF08EFE01
-:20A1D0000020BDE8F081217832295BDA334FCA00201D02EB0112B9181822EFE72678022ED8
-:20A1F00050DA2C25601C05FB0671102239310CF075FE05FB0670C06C6061E1E720780228E9
-:20A2100040DA2C2101FB0070667890F83800B04238DD23786278394602EB430201EB420161
-:20A23000022201F5DE71A01CC8E72078022829DA2C2101FB0070667890F83000B04221DD36
-:20A25000227860783223394603FB020000EB4000032209189031E6E72078022812DA2C21AE
-:20A2700001FB0070667890F82800B0420ADD6278207839468018420002EBC00289180A22B4
-:20A290007C31D0E7E820BDE8F081C0468C14002024790100A02100201428002064230020E4
-:20A2B0002DE9F0434D4CDFF8388194F83F600027ADF1140D002E57D198F86660002E53D00E
-:20A2D000C768007A454600F00701C0F3021900E0BF1C0E46701EC1B24EB17A783878B5F816
-:20A2F0008E6000EB0220B042F2D1022710E005F16406443600E008374846411E5FFA81F9CC
-:20A31000A0B3304639460CF017FC0028F3D0032794F83F0040F0040084F83F0002A80BF062
-:20A33000F5FD01200CF04CF904F134018720FFF70BFF04F13C018520FFF706FF04F13D01E3
-:20A350008620FFF701FF04F13E018820FFF7FCFE0120009004F134060196B5F88A30394628
-:20A3700002AA0520FDF7ECF9002F33D198F871100F292FD0404690F890208A422AD090F89C
-:20A390008D0038BB1748007820BB17480078012803D001200021FDF7ADFB144C60688047DB
-:20A3B0002146134C94F83B20022A11D194F83820FF2A0DD00F4A176857B9576A47B989684E
-:20A3D000884704F1200009F05FFA06F0D9F901E08968884705B0BDE8F083C0463830002073
-:20A3F000A811002022150020E41A00208C140020EC170020640E00202DE9F04F474C6068DA
-:20A41000ADF1140D8047464A92461178DFF8148102919AF80020A168A146012A0CD00124E8
-:20A430008AF80040884798F80000012805D020460021FDF75FFB00E088473C4C3A4DDFF883
-:20A45000F0B0E06805F1B001814206D1594691F90000002818BF00274AD1D9F804008047BD
-:20A4700000270390374EA5F8B27006F138000578002D07BF4FF48600391C2E482021226ACE
-:20A4900095688DE8030031492B4A2C4B10683A46A847D9F808506080002827D45946767831
-:20A4B00091F90000264B294A401C087093F90000E260401C187006B18027234EA08FB6F8EC
-:20A4D0008E304FF67F7101400F433843A087B6F88A00082204F13F0706F1A801A4F84A0021
-:20A4F0003846A4F848300CF0F9FC01270398A847D9F804008047D9F8081017B9029A8AF8A4
-:20A510000020884798F80000012803D000200146FDF7F0FA384605B0BDE8F08F8C14002054
-:20A53000CA1A0020E41A0020280D002028160020CE1A002000004F8C90190020F114000085
-:20A55000CD1A0020EC130020A8110020D80D00202DE9F84F994692468B4606460DF0D6F9EA
-:20A570004D4C0090B4F92610B4F924000AAF401A40F6F871014008297ADAB4F92400401C49
-:20A590006FF31F30A084B4F924800BF0DBFD054606F170000CF084F8C5F808B085F826A0D0
-:20A5B000C5F80490A5F824803C48EE6097E80C00202100271940104005F1100383E8030014
-:20A5D00004F1140085F827700368002B43D129460AF03EFE002844D0A6F8B88095F8270039
-:20A5F00040F0800085F8270086F8BA70E07920B1207810B1E7710120207200980DF082F9B1
-:20A61000A069002844D12078F0B9607901283FD00DF07CF90646A07988B9A86807F0A0FED5
-:20A6300040B930460DF06EF904F1D40004210CF09DFC2DE004F1B0000DF02CF902E018499D
-:20A6500001200870304621E001200CF087F919200CF082FE1CE004F1140029460AF0F8FD25
-:20A6700048B9B4F9240000F6FF706FF31F30A0846FF0010809E0A6F8B88095F8270040F0B3
-:20A69000800085F8270086F8BA7000980DF03AF94046BDE8F88FC046700A0020F1EFFF9F46
-:20A6B000173200202DE9FC414648474C474F48490378A57862893878042D6DD101F13C06B0
-:20A6D0003578884605F0F005357000268E63414908335A43424391F838500092002D50D072
-:20A6F0000D46AA6F002A4CD0EB6F002B49D004F10801684690478446374BE178DFF8E8E033
-:20A7100020791A68BCF1650F31D0BCF1000F28D1107D052811D13148017871B9186890F877
-:20A730002C00042809D119686D6D906D096B3346A847002808BF1A2016D0294D6868804787
-:20A7500028490E68002E08BFA96807D0A96804F10C02964213D03668002EFAD18847387840
-:20A770000FE0704606706046FEF760FE22E082F8690082F86A107046E96F06701C2088474D
-:20A7900018E01A49009E04F10C076161B6FBF0F138460CF08BF90DE091F83C4008338000A9
-:20A7B0005A43884604F0F0045043886344F0030481F83C4098F8740000F0F00088F87400B0
-:20A7D000BDE8FC8185190020C4180020C8190020280D0020EC130020640E0020351200201F
-:20A7F0008C140020241A002020320020C19B00002DE9F04706464FF00108ADF1600D092246
-:20A81000B07D8DF84C8006F117018DF84D000DF14E000CF063FB464D68688047814616A973
-:20A830008120FFF791FC707D002854D09DF85800022817DA042000238DF80300347D8DF89E
-:20A8500002809DF858708DF8013069468DF80040781C8DF85800D220FDF760F8812016A9D0
-:20A87000FDF75CF800274FF0FF0A3C46307D8DF8217008A980F001008DF82000D120FFF71E
-:20A8900063FCC0B99DF82200FF2814D08DF800006946D420FFF758FC20B1A968484688475D
-:20A8B000192042E0307D69460DEB80000461D420FDF734F801E08DF822A08DF82440307D22
-:20A8D0008DF8234008A98DF82000D120FDF726F87F1C322FCADB307D00279DF84D208DF82B
-:20A8F00040000DF14E018DF841700DF142000CF0F5FA8DF84B80D02010A9FDF70FF8071C43
-:20A910000FD1307D314610228DF828000DF129000CF0E4FA30690AA90F90D320FCF7FEFF75
-:20A930000746A96848468847F8B218B0BDE8F0878C1400202DE9FF410546080BC0F0868094
-:20A95000484E4449002401272246347006F1580077720CF0D5FE40480CF08EFDF068416855
-:20A970008868B04608B9C86828B13F483F491C38C46150310160384608F024FA374E346000
-:20A99000374846F81C0CA9684C80AA68128840F60200904205D00B8B4FF60F421A400A8347
-:20A9B00004E00B8A4FF60F421A400A8200F1080C6F74ACF10702531C00E039464F6837B197
-:20A9D0003888844503D0824218BF8342F5D127464F60487B00F0F00040F00100487308F141
-:20A9F00014000CF0A2FE8068008882421BD0834219D0288CC8B195F82C006C8495F82D300A
-:20AA10006F6200F0F00085F82C0003F0F00040F0010085F82D0005F120024A60487B00F099
-:20AA3000F000487301E0C8F84840A868694602F051FD68460CF058FCA86802F009FC306896
-:20AA50000028FCD03460A86846F81C0C0090BDE8FF81C046156A01006D3500001C1004409B
-:20AA700001010E04700A00201C100440010007062DE9F84300204A4C8DF800000CF0CCFD49
-:20AA9000E278484E414DDFF80C91012191404FF6FF725218024096F83800628120B3326F42
-:20AAB00012B342F21A0069469047374827790378A3B19FB99DF8003083B1D6F8940068B133
-:20AAD00080474946491C2A78097830B1678908314A43B0FBF2F0C019608127799DF8001065
-:20AAF000608907FB01006081A078002847D1284F386AC06B80474E46804664892978707846
-:20AB10003B6A08304443D86B8F0080476968224D2A787578214E3C23401AB0FBF7F103FAA1
-:20AB300002F0B1FBF0F205F108034243891AB1FBF3F25A43891A05F10803691A641896F8FD
-:20AB5000581096F83C5098B2083401F0F00107FB048341F0020107FB0032736596F87440F0
-:20AB700086F8581005F0F000B26340F0020086F83C0004F0F00086F87400BDE8F883FFF70D
-:20AB900091FDBDE8F883C04618320020C8190020281600208419002038120020280D0020AC
-:20ABB000C4180020EC1300202DE9F0434A4D95F8E700ADF12C0D00287AD13F4F387B012466
-:20ABD0000021242285F8E7407E6885F8E6000823C5F80C6101A80CF059FE002605F10C0098
-:20ABF000069601ABADF814603449079632460CF049FE334905F1300001AB32460CF042FE0D
-:20AC1000304905F1540001AB32460CF03BFEB96820468847DFF8BC802B4808F104037A7B37
-:20AC300000781868C0F3815922B1B9F1030F04D185F8E140B9F1030F1ED0B9F1020F1BD02D
-:20AC5000B9F1010F2DD14FF08059D9F8A4011F4F456831464FF040521C23032000903846CB
-:20AC7000A847D9F8A40131464FF400720923456800943846A84714E002200AF025FDB9F17D
-:20AC9000030F0CBF4FF47A7142F21071104800685435B1FBF0F128460CF0ECFD28460CF051
-:20ACB000F9FD40460068C00802D230460AF00CFD0BB00020BDE8F083808A0100BFBC000012
-:20ACD00099080100610301001932002000A00C40108B0100B03F0050940F00202DE9F84F0B
-:20ACF00005464448DFF8109183462E18093699F8380034788846B0B1D9F8501099B10BEB92
-:20AD10008507786B00F0FF0088478246D9F85010786B00F47F008847504480B218B13178A0
-:20AD30004018001DC4B238481230007801280CD198F808704FB1314898F80930C1190E792D
-:20AD5000C05C0019401DC4B200E000260D2D09D106EB0408B8F1F80FD8BF294F1CDD0CF010
-:20AD7000A3FA05E030198046801C0BF07BFA074697B902200BF076FA011C0AD00BEB05000A
-:20AD900090F825001A2708701E4E4F70307807F067FD0020BDE8F88F08F102023846002127
-:20ADB0000CF0D1FC07F10C00002174220CF0CBFC07F13C00FF2110220CF0C5FC07F12C00D5
-:20ADD0000F2110220CF0BFFCE0197860022D3E810BDB0B2D09DA7868401E78606D1E057074
-:20ADF0003889641EE4B2401C3881A7F84C403846BDE8F88FD4860100EC130020A08A0100DB
-:20AE1000980E0020141500203212002046492DE9F0410A680646ADF1280D08A80260496885
-:20AE30004160424C94F8B30006F12805002877D07078002874D1706E002871D0012102AA97
-:20AE500005F0A0F800286BD19DF80800B073F06C38B1294605AA0DF11603F7F73DFF002865
-:20AE70005ED10DF116000090706E294605AB01F073FE002854D12E48007801284DD04FF4CC
-:20AE9000005006A908F076FD06A808A908220BF0FBF930B106A8294608220BF0F5F9002887
-:20AEB0003BD194F85900002837D0A66CB4F8445042F2010004A908F05DFD049A4FF00041BE
-:20AED0000020E2FB0610061C206D0CF08FF987190498B84202D86D1C3F1AADB2154E706890
-:20AEF00080475FFA80F8206CB84204D1208FA84208BF002708D027642587002084F83500E8
-:20AF10000BF0CEFA0127E064B168404688470FB106F000FA012084F85800002084F85900EA
-:20AF30000AB0BDE8F081C046C08A0100E82D0020ED1300208C1400202DE9F84F0646307979
-:20AF50008028D4BF0020E82071790027092901DB0A2900DDE820B179002975D0042973DA35
-:20AF7000002871D1DFF8F48098F871000F286BD0B8F88A104FF6FF70884265D0B8F8841058
-:20AF9000884261D0F079314C01280BD040B1FF285AD194F83B00002856D101252F4602E0E6
-:20AFB000012500E00225DFF8A8A00AF12000834608F06AFC0AF1100008F066FC04F1200079
-:20AFD00008F062FCDFF8989009F1040000688047204B84F83B500246FF21002060631D689D
-:20AFF00084F83810002D0CBF0121011C012F84F83D10554684F83C7008BF032085F84000E3
-:20B010004846816810468847B11DE820FEF748F9711DE720FEF744F9311DE120FEF740F934
-:20B0300094F83D00012802D120200CF085F90A4898F871104FF47077A86207FA01F000F206
-:20B05000636158460BF032FDBDE8F88FEC1700201C310020640E002075210100A811002096
-:20B070008C1400202DE9FE4F0BF00AFA434C04F1080202901168E0604FF40050491C11605C
-:20B09000694608F077FCDFF8FCA0DFF8FC9094F82F0000285FD0666B94F82D0000254FF0B0
-:20B0B000FF0BA0462F4654E0B07F800821D3F07F08F04AFE0146082268460BF0E5F8C0B125
-:20B0D000716802980CF027FB2D49814211D8F07FB7770AF009FA86F81FB0DAF8000080472D
-:20B0F00094F82E3013B15B1E84F82E30D9F80810884798F82C006D1C2036ADB236E0F0780F
-:20B11000800822D3307908F01FFE0146082268460BF0BAF8C8B13088010402980CF0FBFA57
-:20B130001749814211D83079F7700AF0DDF986F804B0DAF80000804794F82F3013B15B1E20
-:20B1500084F82F30D9F80810884798F82D006D1CADB2A842D3DC94F82E0048B1A046266BE4
-:20B1700098F82C0000254FF0FF0B2F46A8429BDC04F1100007F0B0FFBDE8FE8FA42E0020F0
-:20B1900000A493D6901400208C1400202DE9F04105466C78ADF1180D002C7CD14248B5F825
-:20B1B00096100088884218BFE82405F18C0101A80F460BF003FD01A80AF094FE3B4B40B974
-:20B1D00095F8990040B1A3F13800007820B9E82461E0002085F89900002C5CD195F8990029
-:20B1F00000280CBF0120052004262E753946E8820DF10E000BF0E2FC686895F89840401ED8
-:20B210006860411E6960B5F8968004702F7D69680024481C2862781E087028892C651A7886
-:20B23000AC65801C288142B305F16C0005F18C010CF063FA1E4F85F86B60386810F47F0F8E
-:20B250000CD085F82C60386805F12C01012200F47F0028632846FEF76FFA386810F0FF0F9B
-:20B270000BD02A2085F83C00386805F13C0100F0FF002864284602F001FE0094284603210D
-:20B290000DF10E024346F8F7EDFC041C02D1284602F080FF2CB16C701A202870284607F06D
-:20B2B000BDFD06B0BDE8F0813212002024140020188701002DE9F04F0C4692468046994678
-:20B2D00000213822ADF13C0D684605F056FD20686D4628606068686020892881207A03289C
-:20B2F00004D0022003268DF80C0002E003268DF80C60374C207818B104F12C000BF0B4FFDF
-:20B31000A08DADF80A0060781F28B4BF411C00210027B8F1050F617040F080000BD0B8F148
-:20B33000040F05D0B8F1020F08BF40F0600004E040F0200001E040F040008DF80D00ADF848
-:20B3500028A04FF0010BCDF8249022498DF80EB00A680BA802604968416005238DF8356088
-:20B37000B8F1050F8DF83660B4F850008DF8343012D0B4F85600B8F1040F08D0B8F1020FCE
-:20B390000ED1B4F85C00401CA4F85C0008E0401C80B2A4F8560003E0401C80B2A4F850009D
-:20B3B0000D4918206A4604F00FFDC0B258B1B8F1050F09D1606A0AF0B7F9B4F85000401C61
-:20B3D000A4F8500000E05F4638460FB0BDE8F08F901200205986010061650000F8B5071C53
-:20B3F00000F08880B86840F6030120264A1C02E04068761EF6B260B15EB10388994218BF1C
-:20B410009A42F5D1F9681CC820311CC149C881E849007868BA690025BD6138B397F827005D
-:20B4300042F00202002300F00700401E09D0401E04D0801E08D14FF0805304E04FF08043D4
-:20B4500001E04FF000532A4697F82700000908D397F8270010F0070F03D04FF080702A4324
-:20B4700003437C68F868B7F92410A0470CF04EFA214C0646B4F92600401C6FF31F30E08426
-:20B4900004F12000016881F827500BF09DFD30460CF038FAB4F92400B4F92610884229D17D
-:20B4B000F86890F8BA0000280CBF0520072005F0A1F8F86890F8BA60BEB90668AEB1E2687D
-:20B4D0000E4912680968B2F1FF3F13D0B6FBF1F2012A8CBFB6FBF1F1012170300CF0CAF938
-:20B4F000F86870300CF0D6F9F8BD80F8BA50012008F060FEF8BDC046700A0020108B0100D2
-:20B510002DE9F041414C0746206800287BD0DFF80081002F18BFE92F17D10AF081FF45469C
-:20B53000297801EB81016918C1F8020095F8B560287800EB800029184E702878401C287070
-:20B55000C0B20A28A4BF00202870324D68681C2F32D0314E4FB1F079032806D1E12F04D0B2
-:20B57000002088F8B200072000E0052008F010FC2468F07903280ED06CB1002084F8690019
-:20B59000E18A2648C90938BF2938007884F86A003846FDF74BFF98F85700012833D168689A
-:20B5B0008047044606F03EFCA96820468847002088F85700BDE8F08180470646A96894F837
-:20B5D0002F0002281ADA216804F124000BF028F894F82F00A968401C84F82F003046884739
-:20B5F0002068007D252819BF012088F85600012088F8550000202060BDE8F0813046884729
-:20B61000F120FDF713FFBDE8F081C046640E0020E82D00208C140020781600205A12002026
-:20B630004549B0B5044601F13800007800287FD094F88B00002871D13520207504F18D01B6
-:20B65000112204F16C000BF049FC04F13C00FF2110220CF078F804F12C000F2110220CF098
-:20B6700072F894F88C0004F13C0500283ED0401E29D0401E14D0401E58D12A2028700227A1
-:20B690002764042305F8103C4FF410222263032184F86B10204606F0C1FF071C3BD137E028
-:20B6B0002A200A272870042327644FF44C1205F8103C02212263204684F86B1006F0AEFF23
-:20B6D000071C28D124E02A2002272870042327644FF4102205F8103C01212263204684F836
-:20B6F0006B1006F09BFF071C15D111E02A2002272870042327644FF4502205F8103C002159
-:20B710002263204684F86B1006F088FF071C02D1204602F03FFD381C0BD1B0BD01280AD18F
-:20B73000886C8047002808BF002002D0192000E018200BF00BFDB0BDEC1300202DE9F04F28
-:20B7500009AF9A4616468846ADF1440D3C893D88D7F8049010900020AC428DF83C0001DAF1
-:20B77000CA4501D30BF0A0FD002E6AD03748875D042EA4EB07044FF00000A4B2B8BF01207A
-:20B790005FEA000B0EBF2D1BA1440024314807A90823ED1B2530ADB210F801295B1E01F873
-:20B7B000012BF9D14FEA186001F8010B4FEA184301F8013B4FEA182201F8012B01F8018BE7
-:20B7D0000E70234E109A30689DF83C104369706898478046B8F1FF3F24D00BA904910120D9
-:20B7F0008DF801009DF83C308DF8023007AA01928DF800B08DF80370CDF80890CDF80CA0BC
-:20B81000ADF816403168ADF81850022370680A6A8DF8143069469047804630688269706896
-:20B830000FA99047B8F1000F18BFE4200AD147B14C4438460BA911F8012B401E04F8012B86
-:20B85000F9D1002011B0BDE8F08FC046A48A0100043200203212002070B5ADF1380DFFF71C
-:20B87000A3F93A4908682822082340F00200086001A800210CF01AF8354E3D4C3549B07890
-:20B89000002301AA079004F1D4000CF00BF800213022082301A80CF011F830780025192118
-:20B8B000ADF81C502C4A099001AB009504F158000CF000F82822082301A829460BF0F6FF59
-:20B8D000F078264901AA2B46079004F584700BF0E9FF01A82946302208230BF0EFFF01205F
-:20B8F0007278ADF81C001A2101AB099204F174001B4A00950BF0DEFF1A492A4604F1B00058
-:20B9100013460BF0BFFF18480BF0B6FD2E46052384F8503004F1400181E860004FF6FF70AC
-:20B93000A4F8AC00334684F8AF3023716371A371E371237263720D4A13704FF4FA76C4F858
-:20B950004461C4F848610EB070BDC04600200940048B01004D6F0100796101003D0101000C
-:20B970008D32010099570100A5E4000016320020700A00202DE9FC410746BE6833687D6835
-:20B99000986B20F4FA609863AC6B44B13168886B40F4FA6088634FF0FF30BDE8FC81AA637D
-:20B9B00029630024EC776C630CE09DF80000296B08706B6B286BAA6B401C2863581C686364
-:20B9D000501EA863A86B90B93168886B40F4FA6088636A6B6878296B0128A1EB02012963F0
-:20B9F00003D1EB68384698476A6B144646E005F14000694608F010FF0028D6D50BF086FF1F
-:20BA1000204F8046387820B9022009F05DFE0120387040460BF076FF1B49086840F40070AB
-:20BA300008603168886B40F4FA6088636878D8B9696805F1EC000BF051FF90B9AC630BF0C7
-:20BA500065FF0646387818B1022009F025FE3C7030460BF057FF1027696B286BEF77401A9E
-:20BA70002863686BBDE8FC8195F82D0030B1686B20B1AC6305F19C000BF0F8FE2046BDE85A
-:20BA9000FC81C0461432002030100040F8B50BF035F9434E414F0446A00822D3B96901B379
-:20BAB0003D460020A8618A69086906F108032040104340F0020088610A6918689043186058
-:20BAD00001F1100090E80C0030681A1C9043306005F1200009F0BCFB022105F1D4000BF0F1
-:20BAF00045FAB869A10815D200F110020CCA002122400B40002B08BF002A0BD00169856950
-:20BB10000C40F8612C434FF48041846107F1D4000BF02CFAB86900283ED107F1140420465D
-:20BB30000BF003FE051C37D0F868E96888422DD1A86806F015FC60B1012008F03BFB58BBCE
-:20BB5000F86870300AF0ACFD07F1B0000BF0A2FEF8BD06F1080128690A68104308603268E2
-:20BB700005F1100393E80300081C1043306000233361A86846F80C0C06F110000068002873
-:20BB9000FAD020460BF020FABD61F8BD07F1D4004FF480610BF0EAF9F8BDC046700A00205A
-:20BBB0000C1004402DE9F8438146D9F808703868066CD9F8045046646A6CAB6CA86B16F4C9
-:20BBD000F06F0146A2EB03082AD1F00911D270095DD301B395F83C40641EA14298BF0C1CF6
-:20BBF0004846214609F0DAF9A86B001BA8630DD04DE081B1484609F0D1F995F82D10A863D9
-:20BC100011B9002843D101E00020A86305F19C000BF02CFE3BE04846414609F015FE36E0F9
-:20BC3000F20A19D24FF00008444602E0A86B401EA86340B34846012109F0B0F9386844684D
-:20BC500014F00F04C0F80480F0D0286B401E2863686B401E686316E038684468002220299C
-:20BC700004F00F044260CCBF20270F1C4846394609F094F9C7F12007B845C8BFB84648468C
-:20BC9000414609F0E1FDEC77484606F09BF9B0090BD3A96A49B10F46484609F0B7F9A86281
-:20BCB00018B94846391D07F017FEBDE8F88370472DE9F04105463E4804780F46002DADF128
-:20BCD000280D42D03B48466A002F3ED08046D6B17069C0B10123ADF8223006208DF8200020