From 32d9bb3021bc24fd9437eb3f85357fcaaddef9bb Mon Sep 17 00:00:00 2001 From: Edvard Pettersen Date: Thu, 30 Aug 2018 17:02:08 +0200 Subject: [PATCH] Removed simplelink examples for now --- .../cc13xx-cc26xx/start-demo/Makefile | 8 - .../cc13xx-cc26xx/start-demo/README.md | 14 - .../cc13xx-cc26xx/start-demo/project-conf.h | 43 - .../cc13xx-cc26xx/start-demo/start-demo.c | 425 ------ .../cc13xx-cc26xx/very-sleepy-demo/Makefile | 10 - .../cc13xx-cc26xx/very-sleepy-demo/README.md | 91 -- .../very-sleepy-demo/project-conf.h | 61 - .../very-sleepy-demo/very-sleepy-demo.c | 424 ------ .../very-sleepy-demo.simplelink | Bin 592244 -> 0 bytes .../cc13xx-cc26xx/web-demo/Makefile | 23 - .../cc13xx-cc26xx/web-demo/README.md | 185 --- .../web-demo/cetic-6lbr-client.c | 204 --- .../cc13xx-cc26xx/web-demo/coap-server.c | 169 --- .../cc13xx-cc26xx/web-demo/coap-server.h | 52 - .../cc13xx-cc26xx/web-demo/httpd-simple.c | 1351 ----------------- .../cc13xx-cc26xx/web-demo/httpd-simple.h | 102 -- .../cc13xx-cc26xx/web-demo/img/6lbr-web.png | Bin 81741 -> 0 bytes .../ibm-watson-iot-platform-tls-optional.png | Bin 86462 -> 0 bytes .../web-demo/img/quickstart-sensortag.png | Bin 158808 -> 0 bytes .../web-demo/img/sensor-readings-config.png | Bin 33000 -> 0 bytes .../web-demo/img/well-known-core.png | Bin 9102 -> 0 bytes .../cc13xx-cc26xx/web-demo/mqtt-client.c | 927 ----------- .../cc13xx-cc26xx/web-demo/mqtt-client.h | 71 - .../cc13xx-cc26xx/web-demo/net-uart.c | 321 ---- .../cc13xx-cc26xx/web-demo/net-uart.h | 48 - .../cc13xx-cc26xx/web-demo/project-conf.h | 88 -- .../web-demo/resources/res-ble-advd.c | 115 -- .../web-demo/resources/res-device.c | 207 --- .../web-demo/resources/res-leds.c | 111 -- .../web-demo/resources/res-net.c | 129 -- .../web-demo/resources/res-sensors.c | 302 ---- .../web-demo/resources/res-toggle-leds.c | 118 -- .../cc13xx-cc26xx/web-demo/web-demo.c | 1054 ------------- .../cc13xx-cc26xx/web-demo/web-demo.h | 235 --- 34 files changed, 6888 deletions(-) delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/Makefile delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/README.md delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/project-conf.h delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/start-demo.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/Makefile delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/README.md delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/project-conf.h delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/very-sleepy-demo.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/very-sleepy-demo.simplelink delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/Makefile delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/README.md delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/cetic-6lbr-client.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.h delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.h delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/6lbr-web.png delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/ibm-watson-iot-platform-tls-optional.png delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/quickstart-sensortag.png delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/sensor-readings-config.png delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/well-known-core.png delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/mqtt-client.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/mqtt-client.h delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.h delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/project-conf.h delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-ble-advd.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-device.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-leds.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-net.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-sensors.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-toggle-leds.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.c delete mode 100644 examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.h diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/Makefile b/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/Makefile deleted file mode 100644 index bffecb99c..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -CONTIKI_PROJECT = start-demo - -PLATFORMS_ONLY = simplelink - -all: $(CONTIKI_PROJECT) - -CONTIKI = ../../../../.. -include $(CONTIKI)/Makefile.include diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/README.md b/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/README.md deleted file mode 100644 index af20f6e3f..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/README.md +++ /dev/null @@ -1,14 +0,0 @@ -CC26xx Demo -=========== -This example demonstrates basic functionality for the two supported CC26xx -boards. More specifically, the example demonstrates: - -* How to take sensor readings -* How to use buttons and the reed relay (triggered by holding a magnet near S3 - on the SensorTag). -* How to send out BLE advertisements, if the chip has BLE capability. The - device will periodically send out BLE beacons with the platform name as - payload. Those beacons/BLE ADV packets can be captured with any BLE-capable - device. Two such applications for iOS are the TI Multitool and the TI - Sensortag app. They can be found in the Apple App Store. If you have a - BLE-capable Mac, you can also use LightBlue for OS X. diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/project-conf.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/project-conf.h deleted file mode 100644 index 17bd2ce29..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/project-conf.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -#ifndef PROJECT_CONF_H_ -#define PROJECT_CONF_H_ -/*---------------------------------------------------------------------------*/ -/* Enable the ROM bootloader */ -#define ROM_BOOTLOADER_ENABLE 1 -/*---------------------------------------------------------------------------*/ -/* Change to match your configuration */ -#define IEEE802154_CONF_PANID 0xABCD -#define IEEE802154_CONF_DEFAULT_CHANNEL 25 -#define RF_BLE_CONF_ENABLED 1 -/*---------------------------------------------------------------------------*/ -#endif /* PROJECT_CONF_H_ */ -/*---------------------------------------------------------------------------*/ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/start-demo.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/start-demo.c deleted file mode 100644 index 9ed3f32cb..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/start-demo/start-demo.c +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -/** - * \addtogroup cc26xx-platforms - * @{ - * - * \defgroup cc26xx-examples CC26xx Example Projects - * - * Example projects for CC26xx-based platforms. - * @{ - * - * \defgroup cc26xx-demo CC26xx Demo Project - * - * Example project demonstrating the CC13xx/CC26xx platforms - * - * This example will work for the following boards: - * - srf06-cc26xx: SmartRF06EB + CC13xx/CC26xx EM - * - CC2650 and CC1350 SensorTag - * - CC1310, CC1350, CC2650 LaunchPads - * - * This is an IPv6/RPL-enabled example. Thus, if you have a border router in - * your installation (same RDC layer, same PAN ID and RF channel), you should - * be able to ping6 this demo node. - * - * This example also demonstrates CC26xx BLE operation. The process starts - * the BLE beacon daemon (implemented in the RF driver). The daemon will - * send out a BLE beacon periodically. Use any BLE-enabled application (e.g. - * LightBlue on OS X or the TI BLE Multitool smartphone app) and after a few - * seconds the cc26xx device will be discovered. - * - * - etimer/clock : Every CC26XX_DEMO_LOOP_INTERVAL clock ticks the LED defined - * as CC26XX_DEMO_LEDS_PERIODIC will toggle and the device - * will print out readings from some supported sensors - * - sensors : Some sensortag sensors are read asynchronously (see sensor - * documentation). For those, this example will print out - * readings in a staggered fashion at a random interval - * - Buttons : CC26XX_DEMO_TRIGGER_1 button will toggle CC26XX_DEMO_LEDS_BUTTON - * - CC26XX_DEMO_TRIGGER_2 turns on LEDS_REBOOT and causes a - * watchdog reboot - * - The remaining buttons will just print something - * - The example also shows how to retrieve the duration of a - * button press (in ticks). The driver will generate a - * sensors_changed event upon button release - * - Reed Relay : Will toggle the sensortag buzzer on/off - * - * @{ - * - * \file - * Example demonstrating the cc26xx platforms - */ -#include "contiki.h" -#include "sys/etimer.h" -#include "sys/ctimer.h" -#include "dev/leds.h" -#include "dev/watchdog.h" -#include "dev/button-hal.h" -#include "random.h" -#include "button-sensor.h" -#include "batmon-sensor.h" -#include "board-peripherals.h" - -#include "rf/ble-beacond.h" - -#include -#include -/*---------------------------------------------------------------------------*/ -#define CC26XX_DEMO_LOOP_INTERVAL (CLOCK_SECOND * 20) -#define CC26XX_DEMO_LEDS_PERIODIC LEDS_YELLOW -#define CC26XX_DEMO_LEDS_BUTTON LEDS_RED -#define CC26XX_DEMO_LEDS_REBOOT LEDS_ALL -/*---------------------------------------------------------------------------*/ -#define CC26XX_DEMO_TRIGGER_1 BUTTON_HAL_ID_KEY_LEFT -#define CC26XX_DEMO_TRIGGER_2 BUTTON_HAL_ID_KEY_RIGHT - -#if BOARD_SENSORTAG -#define CC26XX_DEMO_TRIGGER_3 BUTTON_HAL_ID_REED_RELAY -#endif -/*---------------------------------------------------------------------------*/ -static struct etimer et; -/*---------------------------------------------------------------------------*/ -PROCESS(cc26xx_demo_process, "cc26xx demo process"); -AUTOSTART_PROCESSES(&cc26xx_demo_process); -/*---------------------------------------------------------------------------*/ -#if BOARD_SENSORTAG -/*---------------------------------------------------------------------------*/ -/* - * Update sensor readings in a staggered fashion every SENSOR_READING_PERIOD - * ticks + a random interval between 0 and SENSOR_READING_RANDOM ticks - */ -#define SENSOR_READING_PERIOD (CLOCK_SECOND * 20) -#define SENSOR_READING_RANDOM (CLOCK_SECOND << 4) - -static struct ctimer bmp_timer, opt_timer, hdc_timer, tmp_timer, mpu_timer; -/*---------------------------------------------------------------------------*/ -static void init_bmp_reading(void *not_used); -static void init_opt_reading(void *not_used); -static void init_hdc_reading(void *not_used); -static void init_tmp_reading(void *not_used); -static void init_mpu_reading(void *not_used); -/*---------------------------------------------------------------------------*/ -static void -print_mpu_reading(int reading) -{ - if(reading < 0) { - printf("-"); - reading = -reading; - } - - printf("%d.%02d", reading / 100, reading % 100); -} -/*---------------------------------------------------------------------------*/ -static void -get_bmp_reading() -{ - int value; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - value = bmp_280_sensor.value(BMP_280_SENSOR_TYPE_PRESS); - if(value != CC26XX_SENSOR_READING_ERROR) { - printf("BAR: Pressure=%d.%02d hPa\n", value / 100, value % 100); - } else { - printf("BAR: Pressure Read Error\n"); - } - - value = bmp_280_sensor.value(BMP_280_SENSOR_TYPE_TEMP); - if(value != CC26XX_SENSOR_READING_ERROR) { - printf("BAR: Temp=%d.%02d C\n", value / 100, value % 100); - } else { - printf("BAR: Temperature Read Error\n"); - } - - SENSORS_DEACTIVATE(bmp_280_sensor); - - ctimer_set(&bmp_timer, next, init_bmp_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_tmp_reading() -{ - int value; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - value = tmp_007_sensor.value(TMP_007_SENSOR_TYPE_ALL); - - if(value == CC26XX_SENSOR_READING_ERROR) { - printf("TMP: Ambient Read Error\n"); - return; - } - - value = tmp_007_sensor.value(TMP_007_SENSOR_TYPE_AMBIENT); - printf("TMP: Ambient=%d.%03d C\n", value / 1000, value % 1000); - - value = tmp_007_sensor.value(TMP_007_SENSOR_TYPE_OBJECT); - printf("TMP: Object=%d.%03d C\n", value / 1000, value % 1000); - - SENSORS_DEACTIVATE(tmp_007_sensor); - - ctimer_set(&tmp_timer, next, init_tmp_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_hdc_reading() -{ - int value; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - value = hdc_1000_sensor.value(HDC_1000_SENSOR_TYPE_TEMP); - if(value != CC26XX_SENSOR_READING_ERROR) { - printf("HDC: Temp=%d.%02d C\n", value / 100, value % 100); - } else { - printf("HDC: Temp Read Error\n"); - } - - value = hdc_1000_sensor.value(HDC_1000_SENSOR_TYPE_HUMIDITY); - if(value != CC26XX_SENSOR_READING_ERROR) { - printf("HDC: Humidity=%d.%02d %%RH\n", value / 100, value % 100); - } else { - printf("HDC: Humidity Read Error\n"); - } - - ctimer_set(&hdc_timer, next, init_hdc_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_light_reading() -{ - int value; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - value = opt_3001_sensor.value(0); - if(value != CC26XX_SENSOR_READING_ERROR) { - printf("OPT: Light=%d.%02d lux\n", value / 100, value % 100); - } else { - printf("OPT: Light Read Error\n"); - } - - /* The OPT will turn itself off, so we don't need to call its DEACTIVATE */ - ctimer_set(&opt_timer, next, init_opt_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_mpu_reading() -{ - int value; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - printf("MPU Gyro: X="); - value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_X); - print_mpu_reading(value); - printf(" deg/sec\n"); - - printf("MPU Gyro: Y="); - value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_Y); - print_mpu_reading(value); - printf(" deg/sec\n"); - - printf("MPU Gyro: Z="); - value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_Z); - print_mpu_reading(value); - printf(" deg/sec\n"); - - printf("MPU Acc: X="); - value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_X); - print_mpu_reading(value); - printf(" G\n"); - - printf("MPU Acc: Y="); - value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_Y); - print_mpu_reading(value); - printf(" G\n"); - - printf("MPU Acc: Z="); - value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_Z); - print_mpu_reading(value); - printf(" G\n"); - - SENSORS_DEACTIVATE(mpu_9250_sensor); - - ctimer_set(&mpu_timer, next, init_mpu_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -init_bmp_reading(void *not_used) -{ - SENSORS_ACTIVATE(bmp_280_sensor); -} -/*---------------------------------------------------------------------------*/ -static void -init_opt_reading(void *not_used) -{ - SENSORS_ACTIVATE(opt_3001_sensor); -} -/*---------------------------------------------------------------------------*/ -static void -init_hdc_reading(void *not_used) -{ - SENSORS_ACTIVATE(hdc_1000_sensor); -} -/*---------------------------------------------------------------------------*/ -static void -init_tmp_reading(void *not_used) -{ - SENSORS_ACTIVATE(tmp_007_sensor); -} -/*---------------------------------------------------------------------------*/ -static void -init_mpu_reading(void *not_used) -{ - mpu_9250_sensor.configure(SENSORS_ACTIVE, MPU_9250_SENSOR_TYPE_ALL); -} -#endif -/*---------------------------------------------------------------------------*/ -static void -get_sync_sensor_readings(void) -{ - int value; - - printf("-----------------------------------------\n"); - - value = batmon_sensor.value(BATMON_SENSOR_TYPE_TEMP); - printf("Bat: Temp=%d C\n", value); - - value = batmon_sensor.value(BATMON_SENSOR_TYPE_VOLT); - printf("Bat: Volt=%d mV\n", (value * 125) >> 5); - -#if BOARD_SMARTRF06EB - SENSORS_ACTIVATE(als_sensor); - - value = als_sensor.value(0); - printf("ALS: %d raw\n", value); - - SENSORS_DEACTIVATE(als_sensor); -#endif - - return; -} -/*---------------------------------------------------------------------------*/ -static void -init_sensors(void) -{ - SENSORS_ACTIVATE(batmon_sensor); -} -/*---------------------------------------------------------------------------*/ -static void -init_sensor_readings(void) -{ -#if BOARD_SENSORTAG - SENSORS_ACTIVATE(hdc_1000_sensor); - SENSORS_ACTIVATE(tmp_007_sensor); - SENSORS_ACTIVATE(opt_3001_sensor); - SENSORS_ACTIVATE(bmp_280_sensor); - - init_mpu_reading(NULL); -#endif -} -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(cc26xx_demo_process, ev, data) -{ - - PROCESS_BEGIN(); - - printf("CC26XX demo\n"); - - init_sensors(); - - /* Init the BLE advertisement daemon */ - rf_ble_beacond_start(0, BOARD_STRING); - - etimer_set(&et, CC26XX_DEMO_LOOP_INTERVAL); - get_sync_sensor_readings(); - init_sensor_readings(); - - while(1) { - - PROCESS_YIELD(); - - if(ev == PROCESS_EVENT_TIMER) { - if(data == &et) { - leds_toggle(CC26XX_DEMO_LEDS_PERIODIC); - - get_sync_sensor_readings(); - - etimer_set(&et, CC26XX_DEMO_LOOP_INTERVAL); - } - } else if(ev == button_hal_periodic_event) { - button_hal_button_t *button = data; - - printf("%s periodic event, duration %d seconds\n", - BUTTON_HAL_GET_DESCRIPTION(button), - button->press_duration_seconds); - } else if(ev == button_hal_release_event) { - button_hal_button_t *btn = (button_hal_button_t *)data; - - printf("%s release event\n", BUTTON_HAL_GET_DESCRIPTION(btn)); - - if(btn->unique_id== CC26XX_DEMO_TRIGGER_1) { - leds_toggle(CC26XX_DEMO_LEDS_BUTTON); - } else if(btn->unique_id == CC26XX_DEMO_TRIGGER_2) { - leds_on(CC26XX_DEMO_LEDS_REBOOT); - watchdog_reboot(); -#if BOARD_SENSORTAG - } else if(btn->unique_id == CC26XX_DEMO_TRIGGER_3) { - if(buzzer_state()) { - buzzer_stop(); - } else { - buzzer_start(1000); - } - } - } else if(ev == sensors_event) { - if(data == &bmp_280_sensor) { - get_bmp_reading(); - } else if(data == &opt_3001_sensor) { - get_light_reading(); - } else if(data == &hdc_1000_sensor) { - get_hdc_reading(); - } else if(data == &tmp_007_sensor) { - get_tmp_reading(); - } else if(data == &mpu_9250_sensor) { - get_mpu_reading(); -#endif - } - } - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ -/** - * @} - * @} - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/Makefile b/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/Makefile deleted file mode 100644 index 97272c9a7..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -CONTIKI_PROJECT = very-sleepy-demo - -PLATFORMS_ONLY = simplelink - -all: $(CONTIKI_PROJECT) - -MODULES += os/net/app-layer/coap - -CONTIKI = ../../../../.. -include $(CONTIKI)/Makefile.include diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/README.md b/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/README.md deleted file mode 100644 index 851150432..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# CC13xx/CC26xx Very Sleepy Demo - -This example demonstrates a way of deploying a very low-consuming, very sleepy -node. The node has two modes of operation: - -* Normal: ContikiMAC duty-cycles the radio as usual. The node is reachable. -* Very Sleepy: Radio cycling mostly off, except when we need to perform network - maintenance tasks. In this mode, the node is unreachable for most of the time. - -The node will operate in RPL leaf mode. This means that it will be reachable -downwards, but it will not advertise the DODAG and it will not participate in -routing. - -After booting, the node will enter "normal" mode. - -The node exposes an OBSERVEable CoAP resource. It will notify subscribers with -a new value for this resource every `interval` seconds. It will then stay in -normal mode for `duration` seconds. During this time window, it will be -reachable over the network in order to e.g. receive a new configuration. -When this time window expires, the node will switch back to very sleepy mode. -This will only happen if very sleepy mode has been enabled by setting `mode=1` -as per the instructions below. - -When the node is duty-cycling the radio, either because it is in normal mode or -because network maintenance is taking place, it will keep its green LED on thus -providing an indication that it is reachable (red LED for the CC1350 tag). - -A normal mode stint can be manually triggered by pressing the left button. - -## Requirements - -To run this example you will need: - -* A border router operating with the same RDC, same channel, same radio mode - (e.g. IEEE or sub-ghz), same PAN ID. Alternatively, you can - use [6lbr](https://github.com/cetic/6lbr) with a suitable slip-radio. -* The [Copper (Cu)](https://addons.mozilla.org/en-US/firefox/addon/copper-270430/) - addon for Firefox - -## Configuration - -To configure the node, send a CoAP POST message to the `very_sleepy_config` -resource. The POST message's payload must specify _at least one_ of: - -* `mode=0|1`: Send `mode=1` to enable very sleepy mode, `mode=0` to disable it. -* `interval=n` where `n` is the number of seconds between two consecutive normal - mode periods. This interval also dictates the OBSERVEr notification period. -* `duration=n` where `n` is the number of seconds that the node will stay in - normal mode before dropping to very sleepy mode. This value is only relevant - if `mode==1`. - -A POST request must contain at least one of the above, but they are otherwise -all optional. So, for example, a POST may simply specify `interval=n`. To send -multiple values, delimit them with `&`. So you can send something like -`mode=1&interval=60&duration=20` - -The current running configuration can be retrieved by sending a GET request to -the same CoAP resource. - -## Running the example - -* Deploy your border router or 6lbr -* Turn on the very sleepy node. -* Fire up the Copper addon -* Select `.well-known/core` and hit `GET` -* Configure very sleepy operation: - * Select the `very_sleepy_config` resource - * In the `Outgoing` pane, type your POST payload as per the instructions - above. For example, you can type: `mode=1&interval=30&duration=10` - * Hit `POST` -* Select the `sen/readings` resource and hit `OBSERVE` - -## Caveats - -If you click on a resource in the Copper resources tree while you are observing -a different resource, the OBSERVEr for the latter will be stopped without -notifying the CoAP server. This will result in the server sending out OBSERVE -notifications that will be responded to with port unreachable ICMPv6 messages. -This will continue for quite a while, until the server detects that the -OBSERVEr has been lost (a test currently performed once every 20 notifications). -In order to prevent this from happening, hit the "Cancel" button for the -OBSERVE before switching views to a different resource. This will unregister -the observer. - -In very sleepy mode, the radio is not truly always off. The contiki core needs -to perform other periodic tasks in order to maintain network connectivity. For -that reason, this example will allow the radio to turn on periodically even -while in very sleepy mode. Thus, you may see that the node becomes briefly -reachable every now and then. However, do not count on those periods of -reachability to perform any tasks, as they will be brief and will be disrupted -without warning. diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/project-conf.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/project-conf.h deleted file mode 100644 index 784a0e9ee..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/project-conf.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -#ifndef PROJECT_CONF_H_ -#define PROJECT_CONF_H_ -/*---------------------------------------------------------------------------*/ -/* Platform configuration */ -#define BOARD_CONF_SENSORS_DISABLE 1 -#define WATCHDOG_CONF_DISABLE 1 -/*---------------------------------------------------------------------------*/ -/* Nestack configuration */ -#define IEEE802154_CONF_PANID 0xABCD -#define IEEE802154_CONF_DEFAULT_CHANNEL 25 -//#define RF_CONF_MODE RF_MODE_SUB_1_GHZ -#define RF_CONF_MODE RF_MODE_2_4_GHZ -#define RF_CONF_BLE_BEACON_ENABLE 0 -/*---------------------------------------------------------------------------*/ -/* TI drivers configuration */ -#define TI_SPI_CONF_ENABLE 0 -#define TI_I2C_CONF_ENABLE 0 -/*---------------------------------------------------------------------------*/ -/* For very sleepy operation */ -#define UIP_DS6_CONF_PERIOD CLOCK_SECOND -#define UIP_CONF_TCP 0 -#define RPL_CONF_LEAF_ONLY 1 - -/* - * We'll fail without RPL probing, so turn it on explicitly even though it's - * on by default - */ -#define RPL_CONF_WITH_PROBING 1 -/*---------------------------------------------------------------------------*/ -#endif /* PROJECT_CONF_H_ */ -/*---------------------------------------------------------------------------*/ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/very-sleepy-demo.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/very-sleepy-demo.c deleted file mode 100644 index 711746f7c..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/very-sleepy-demo.c +++ /dev/null @@ -1,424 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "sys/etimer.h" -#include "sys/stimer.h" -#include "sys/process.h" -#include "lib/sensors.h" -#include "dev/leds.h" -#include "dev/watchdog.h" -#include "dev/button-hal.h" -#include "net/netstack.h" -#include "net/ipv6/uip-ds6-nbr.h" -#include "net/ipv6/uip-ds6-route.h" -#include "net/routing/routing.h" -#include "net/app-layer/coap/coap.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include "board-peripherals.h" -#include "batmon-sensor.h" -/*---------------------------------------------------------------------------*/ -#include -#include -#include -/*---------------------------------------------------------------------------*/ -/* Normal mode duration params in seconds */ -#define NORMAL_OP_DURATION_DEFAULT 10 -#define NORMAL_OP_DURATION_MIN 10 -#define NORMAL_OP_DURATION_MAX 60 -/*---------------------------------------------------------------------------*/ -/* Observer notification period params in seconds */ -#define PERIODIC_INTERVAL_DEFAULT 30 -#define PERIODIC_INTERVAL_MIN 30 -#define PERIODIC_INTERVAL_MAX 86400 /* 1 day */ -/*---------------------------------------------------------------------------*/ -#define VERY_SLEEPY_MODE_OFF 0 -#define VERY_SLEEPY_MODE_ON 1 -/*---------------------------------------------------------------------------*/ -#define BUTTON_TRIGGER BUTTON_HAL_ID_KEY_LEFT -/*---------------------------------------------------------------------------*/ -#define MAC_CAN_BE_TURNED_OFF 0 -#define MAC_MUST_STAY_ON 1 - -#define KEEP_MAC_ON_MIN_PERIOD 10 /* secs */ -/*---------------------------------------------------------------------------*/ -#define PERIODIC_INTERVAL CLOCK_SECOND -/*---------------------------------------------------------------------------*/ -#define POST_STATUS_BAD 0x80 -#define POST_STATUS_HAS_MODE 0x40 -#define POST_STATUS_HAS_DURATION 0x20 -#define POST_STATUS_HAS_INTERVAL 0x10 -#define POST_STATUS_NONE 0x00 -/*---------------------------------------------------------------------------*/ -typedef struct sleepy_config_s { - unsigned long interval; - unsigned long duration; - uint8_t mode; -} sleepy_config_t; - -sleepy_config_t config; -/*---------------------------------------------------------------------------*/ -#define STATE_NORMAL 0 -#define STATE_NOTIFY_OBSERVERS 1 -#define STATE_VERY_SLEEPY 2 -/*---------------------------------------------------------------------------*/ -static struct stimer st_duration; -static struct stimer st_interval; -static struct stimer st_min_mac_on_duration; -static struct etimer et_periodic; -static process_event_t event_new_config; -static uint8_t state; -/*---------------------------------------------------------------------------*/ -const char *not_supported_msg = "Supported:text/plain,application/json"; -/*---------------------------------------------------------------------------*/ -PROCESS(very_sleepy_demo_process, "CC13xx/CC26xx very sleepy process"); -AUTOSTART_PROCESSES(&very_sleepy_demo_process); -/*---------------------------------------------------------------------------*/ -static void -readings_get_handler(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - int temp; - int voltage; - - if(request != NULL) { - coap_get_header_accept(request, &accept); - } - - temp = batmon_sensor.value(BATMON_SENSOR_TYPE_TEMP); - - voltage = batmon_sensor.value(BATMON_SENSOR_TYPE_VOLT); - - if(accept == -1 || accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, - "{\"temp\":{\"v\":%d,\"u\":\"C\"}," - "\"voltage\":{\"v\":%d,\"u\":\"mV\"}}", - temp, (voltage * 125) >> 5); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, "Temp=%dC, Voltage=%dmV", - temp, (voltage * 125) >> 5); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, not_supported_msg, - strlen(not_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -RESOURCE(readings_resource, "title=\"Sensor Readings\";obs", - readings_get_handler, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -static void -conf_get_handler(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - - if(request != NULL) { - coap_get_header_accept(request, &accept); - } - - if(accept == -1 || accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, - "{\"config\":{\"mode\":%u,\"duration\":%lu,\"interval\":%lu}}", - config.mode, config.duration, config.interval); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, - "Mode=%u, Duration=%lusecs, Interval=%lusecs", - config.mode, config.duration, config.interval); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, not_supported_msg, - strlen(not_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -static void -conf_post_handler(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, uint16_t preferred_size, int32_t *offset) -{ - const char *ptr = NULL; - char tmp_buf[16]; - unsigned long interval = 0; - unsigned long duration = 0; - uint8_t mode = VERY_SLEEPY_MODE_OFF; - uint8_t post_status = POST_STATUS_NONE; - int rv; - - rv = coap_get_post_variable(request, "mode", &ptr); - if(rv && rv < 16) { - memset(tmp_buf, 0, sizeof(tmp_buf)); - memcpy(tmp_buf, ptr, rv); - rv = atoi(tmp_buf); - - if(rv == 1) { - mode = VERY_SLEEPY_MODE_ON; - post_status |= POST_STATUS_HAS_MODE; - } else if(rv == 0) { - mode = VERY_SLEEPY_MODE_OFF; - post_status |= POST_STATUS_HAS_MODE; - } else { - post_status = POST_STATUS_BAD; - } - } - - rv = coap_get_post_variable(request, "duration", &ptr); - if(rv && rv < 16) { - memset(tmp_buf, 0, sizeof(tmp_buf)); - memcpy(tmp_buf, ptr, rv); - rv = atoi(tmp_buf); - - duration = (unsigned long)rv; - if(duration < NORMAL_OP_DURATION_MIN || duration > NORMAL_OP_DURATION_MAX) { - post_status = POST_STATUS_BAD; - } else { - post_status |= POST_STATUS_HAS_DURATION; - } - } - - rv = coap_get_post_variable(request, "interval", &ptr); - if(rv && rv < 16) { - memset(tmp_buf, 0, sizeof(tmp_buf)); - memcpy(tmp_buf, ptr, rv); - rv = atoi(tmp_buf); - interval = (unsigned long)rv; - if(interval < PERIODIC_INTERVAL_MIN || interval > PERIODIC_INTERVAL_MAX) { - post_status = POST_STATUS_BAD; - } else { - post_status |= POST_STATUS_HAS_INTERVAL; - } - } - - if((post_status & POST_STATUS_BAD) == POST_STATUS_BAD || - post_status == POST_STATUS_NONE) { - coap_set_status_code(response, BAD_REQUEST_4_00); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, - "mode=0|1&duration=[%u,%u]&interval=[%u,%u]", - NORMAL_OP_DURATION_MIN, NORMAL_OP_DURATION_MAX, - PERIODIC_INTERVAL_MIN, PERIODIC_INTERVAL_MAX); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - return; - } - - /* Values are sane. Update the config and notify the process */ - if(post_status & POST_STATUS_HAS_MODE) { - config.mode = mode; - } - - if(post_status & POST_STATUS_HAS_INTERVAL) { - config.interval = interval; - } - - if(post_status & POST_STATUS_HAS_DURATION) { - config.duration = duration; - } - - process_post(&very_sleepy_demo_process, event_new_config, NULL); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(very_sleepy_conf, - "title=\"Very sleepy conf: " - "GET|POST mode=0|1&interval=&duration=\";rt=\"Control\"", - conf_get_handler, conf_post_handler, NULL, NULL); -/*---------------------------------------------------------------------------*/ -/* - * If our preferred parent is not NBR_REACHABLE in the ND cache, NUD will send - * a unicast NS and wait for NA. If NA fails then the neighbour will be removed - * from the ND cache and the default route will be deleted. To prevent this, - * keep the MAC on until the parent becomes NBR_REACHABLE. We also keep the MAC - * on if we are about to do RPL probing. - * - * In all cases, the radio will be locked on for KEEP_MAC_ON_MIN_PERIOD secs - */ -static uint8_t -keep_mac_on(void) -{ - uip_ds6_nbr_t *nbr; - uint8_t rv = MAC_CAN_BE_TURNED_OFF; - - if(!stimer_expired(&st_min_mac_on_duration)) { - return MAC_MUST_STAY_ON; - } - -#if RPL_WITH_PROBING - /* Determine if we are about to send a RPL probe */ - if(CLOCK_LT(etimer_expiration_time( - &rpl_get_default_instance()->dag.probing_timer.etimer), - (clock_time() + PERIODIC_INTERVAL))) { - rv = MAC_MUST_STAY_ON; - } -#endif - - /* It's OK to pass a NULL pointer, the callee checks and returns NULL */ - nbr = uip_ds6_nbr_lookup(uip_ds6_defrt_choose()); - - if(nbr == NULL) { - /* We don't have a default route, or it's not reachable (NUD likely). */ - rv = MAC_MUST_STAY_ON; - } else { - if(nbr->state != NBR_REACHABLE) { - rv = MAC_MUST_STAY_ON; - } - } - - if(rv == MAC_MUST_STAY_ON && stimer_expired(&st_min_mac_on_duration)) { - stimer_set(&st_min_mac_on_duration, KEEP_MAC_ON_MIN_PERIOD); - } - - return rv; -} -/*---------------------------------------------------------------------------*/ -static void -switch_to_normal(void) -{ - state = STATE_NOTIFY_OBSERVERS; - - /* - * Stay in normal mode for 'duration' secs. - * Transition back to normal in 'interval' secs, _including_ 'duration' - */ - stimer_set(&st_duration, config.duration); - stimer_set(&st_interval, config.interval); -} -/*---------------------------------------------------------------------------*/ -static void -switch_to_very_sleepy(void) -{ - state = STATE_VERY_SLEEPY; -} -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(very_sleepy_demo_process, ev, data) -{ - uint8_t mac_keep_on; - - PROCESS_BEGIN(); - - SENSORS_ACTIVATE(batmon_sensor); - - config.mode = VERY_SLEEPY_MODE_OFF; - config.interval = PERIODIC_INTERVAL_DEFAULT; - config.duration = NORMAL_OP_DURATION_DEFAULT; - - state = STATE_NORMAL; - - event_new_config = process_alloc_event(); - - readings_resource.flags += IS_OBSERVABLE; - coap_activate_resource(&readings_resource, "sen/readings"); - coap_activate_resource(&very_sleepy_conf, "very_sleepy_config"); - - printf("Very Sleepy Demo Process\n"); - - switch_to_normal(); - - etimer_set(&et_periodic, PERIODIC_INTERVAL); - - while(1) { - - PROCESS_YIELD(); - - if(ev == button_hal_release_event && - ((button_hal_button_t *)data)->unique_id == BUTTON_TRIGGER) { - switch_to_normal(); - } - - if(ev == event_new_config) { - stimer_set(&st_interval, config.interval); - stimer_set(&st_duration, config.duration); - } - - if((ev == PROCESS_EVENT_TIMER && data == &et_periodic) || - (ev == button_hal_release_event && - ((button_hal_button_t *)data)->unique_id == BUTTON_TRIGGER) || - (ev == event_new_config)) { - - /* - * Determine if the stack is about to do essential network maintenance - * and, if so, keep the MAC layer on - */ - mac_keep_on = keep_mac_on(); - - if(mac_keep_on == MAC_MUST_STAY_ON || state != STATE_VERY_SLEEPY) { - leds_on(LEDS_GREEN); - NETSTACK_MAC.on(); - } - - /* - * Next, switch between normal and very sleepy mode depending on config, - * send notifications to observers as required. - */ - if(state == STATE_NOTIFY_OBSERVERS) { - coap_notify_observers(&readings_resource); - state = STATE_NORMAL; - } - - if(state == STATE_NORMAL) { - if(stimer_expired(&st_duration)) { - stimer_set(&st_duration, config.duration); - if(config.mode == VERY_SLEEPY_MODE_ON) { - switch_to_very_sleepy(); - } - } - } else if(state == STATE_VERY_SLEEPY) { - if(stimer_expired(&st_interval)) { - switch_to_normal(); - } - } - - if(mac_keep_on == MAC_CAN_BE_TURNED_OFF && state == STATE_VERY_SLEEPY) { - leds_off(LEDS_GREEN); - NETSTACK_MAC.off(); - } else { - leds_on(LEDS_GREEN); - NETSTACK_MAC.on(); - } - - /* Schedule next pass */ - etimer_set(&et_periodic, PERIODIC_INTERVAL); - } - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/very-sleepy-demo.simplelink b/examples/platform-specific/simplelink/cc13xx-cc26xx/very-sleepy-demo/very-sleepy-demo.simplelink deleted file mode 100644 index a405a2444edd79e75e3e58269ce3b74b87b469fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592244 zcmeGEi+@u^`Uj5Bx#XU-=>_Nw$fbp}p%N%)1y(~EPA@4Gfprme4T2hl)d2e0fV&bd zY5{etWp{z|_>k%Ki%HmH$~27Wx`sO7GBMHW;t*`S~g$eoMf=!1#IJ%R`tl=RKzcqQVM z#PoJGLk94chHuCJ|11A;{=-{2a(JsE8&)DO4YYoj;|G*H83276=-Z`NenX!=%RdjT(uGU>^gEOD!#n%9AidUXc1NXR*|TP zRXodHuU_!rIY#l&IY#;5NaMvrBM)DEXr%Gd^CJ&mdaUoOsQ4PC%Ze&?b|^=4$2o>8 z3Q197@;5T|{zg)(49^v~dR6@dk;zv@8OMa7;8r$F@5irY9H2l`g_rlW^pR?HnAj@9 zZDM8?f`f<;^!+BG*8kv3{x3vSN~a}0cKS=!%6I!4Yrhm59})5dUQj

`SA&U6X|M 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%0DZB>VN+&uUWzOZ*47*hI6BTHn=WDlK%yIF@UE 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

g|^YxT`_;&!p>oh?lWHcdYhi5 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 Sz5Mq-lzoG5?Z%(j-~R&^;Q2oQ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/Makefile b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/Makefile deleted file mode 100644 index aa310465d..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -CONTIKI_PROJECT = web-demo - -PLATFORMS_ONLY = simplelink - -all: $(CONTIKI_PROJECT) - -MODULES_REL += ./resources - -PROJECT_SOURCEFILES += coap-server.c net-uart.c mqtt-client.c -PROJECT_SOURCEFILES += httpd-simple.c - -ifeq ($(MAKE_ROUTING),MAKE_ROUTING_RPL_CLASSIC) -# 6lbr only supports RPL Classic -PROJECT_SOURCEFILES += cetic-6lbr-client.c -endif - -# REST Engine shall use Erbium CoAP implementation -MODULES += os/net/app-layer/mqtt -MODULES += os/net/app-layer/coap -MODULES += arch/dev/ext-flash - -CONTIKI = ../../../../.. -include $(CONTIKI)/Makefile.include diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/README.md b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/README.md deleted file mode 100644 index 912fcb72a..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/README.md +++ /dev/null @@ -1,185 +0,0 @@ -CC26xx Web Demo Readme -====================== -This demo project combines a number of web-based applications aiming to -demonstrate the CC26xx capability. The applications are: - -* A network-based UART -* A client for [6lbr](http://cetic.github.io/6lbr/) -* A CoAP server -* An MQTT client -* A web server which can be used to display sensor readings but also to - configure MQTT functionality - -The example has been configured to run for all CC26xx-based boards. - -To change between target boards, follow the instructions in the wiki. -Do not forget to `make clean` when switching between the boards. - -Specifically for some older CC2650 SensorTags, you may also need to change -`project-conf.h` such that `SENSORTAG_CC2650_REV_1_2_0` is defined as 1. To -check if your sensortag is one of those older ones, look for "REV: 1.2" -printed on the PCB. There may also be a sticker that reads "HW Rev 1.2.0". An -indication that you may need to do this is if you get a "Could not open flash -to load config" error on device startup. - -You can disable some of those individual components by changing the respective -defines in `project-conf.h`. For instance, to disable the CoAP functionality, -set `#define CC26XX_WEB_DEMO_CONF_COAP_SERVER 0`. The web server cannot be -disabled, all other aforementioned applications can. - -Network UART (net-uart) ------------------------ -This example only makes sense if you are using the Srf or if you have taken -the sensortag out of its case and you have it connected over JTAG to the Srf. - -The net-uart does two things: - -* When you type a string to the UART console, the string will be sent verbatim - to a remote UDP port 7777 listener. This can be for example a netcat listener - on a linux or OS X PC: - `nc -6ulkw 1 7777` -* The net-uart also listens to UDP port 7777 and when it receives a string over - UDP, it will print it verbatim over UART. - -The example will initially send packets to a hard-coded IPv6 address. This can -be changed very easily by entering a different IPv6 address to the console. -Thus, when the serial input string is an IPv6 address, it will not be sent as -any other string would, but instead it will configure the example to send to a -different remote address. This new IPv6 address is not persistent across -device reboots. - -6lbr Client ------------ -This will periodically send a UDP packet to your 6lbr, containing network -information, which will be used by 6lbr to construct a network graph. To see -this in action, fire up a browser and navigate to the 6lbr web page. The -default address is http://[bbbb::100]. Once the page loads, click the 'sensors' -tab, as per the image below. - -![6lbr](img/6lbr-web.png) - -CoAP Server ------------ -For this functionality to work, you will need to install a CoAP client. -You can achieve this by following the guides on how to set up your system -[in the wiki](https://github.com/contiki-ng/contiki-ng/wiki#setting-up-contiki-ng). - -You should start by sending a CoAP GET request for the `.well-known/core` -resource. If you are using libcoap's CoAP client, this can be achieved by: - -``` -coap-client -m get coap://[]/.well-known/core -``` - -Adjust the above command to match the command line arguments of your CoAP -client. - -The Device will respond with a list of all available CoAP resources. This list -will be different between the various CC13x0/CC26x0 boards. - -Send a CoAP GET request for any of those resrouces to retrieve its value. - -Send a CoAP POST to the `lt/g` or `lt/r` to toggle the green/red LED -respectively. - -You can also use CoAP to enable/disable BLE advertisements! This can be done -by sending a PUT or POST request to the `dev/ble_advd` resource. Your request -should contain the desired payload, which can be: - -* `mode=on|off` -* `name=` -* `interval=` - -or a combination of the above delimited with an amp. For example, you can set -as payload `mode=on&name=My CC26xx Device 4&interval=5`. - -Bear in mind that you must set `name` at least once before enabling BLE -advertisements. If you fail to do so, the RF will refuse to enter BLE mode and -the CoAP engine will return 4.03 forbidden. The values of `name` and `interval` -persist across BLE on/off cycles, so you only have to set them once. The values -do _not_ persist through device powercycles. - -HTTPD ------ -Back on the 6lbr page, hit the 'web' link corresponding to your device. This -will take you to a web page served by the CC26xx. The HTTPD serves two pages: - -* index.html: Provides sensor readings and network information -* config.html: Can be used to configure the MQTT client (more below) - -In the navigation bar at the top there is also a third link, which will take -you directly to your device's page on IBM's quickstart service. - -IBM Quickstart / MQTT Client ----------------------------- -The MQTT client can be used to: - -* Publish sensor readings to an MQTT broker. -* Subscribe to a topic and as a result receive commands from an MQTT broker - -The device will try to connect to IBM's quickstart over NAT64, so you will -need a NAT64 gateway in your network to make this work. A guide on how to -setup NAT64 is out of scope here. If this is not an option for you, you can -configure the device to publish to a local MQTT broker over end-to-end IPv6. -See below on how to change the destination broker's address. - -By default the device will publish readings to IBM's quickstart service. The -publish messages include sensor readings but also some other information such -as device uptime in seconds and a message sequence number. Click the "IBM -Quickstart" link in the web page to go directly to your device's page -on Quickstart. After a few seconds, you will see something like this: - -![A SensorTag on IBM Quickstart](img/quickstart-sensortag.png) - -Sensor readings are only published if they have changed since the previous -reading (BatMon is an exception and always gets published). Additionally, you -can turn on/off individual readings from the config.html web page, as per the -figure below. - -![Sensor Readings Configuration](img/sensor-readings-config.png) - -Some of the MQTT client functionality can be configured even further: - -* You can change the broker IP and port. This is useful if you want to use your - own MQTT broker instead of IBM's quickstart. The example has been tested - successfully with [mosquitto](http://mosquitto.org/) -* You can change the publish interval. Recommended values are 10secs or higher. - You will not be allowed to set this to anything less than 5 seconds. -* If you want to use IBM's cloud service with a registered device, change - 'Org ID' and provide an 'Auth Token', which acts as a 'password', but bear in - mind that it gets transported in clear text, both over the web configuration - page as well as inside MQTT messages. -* The remaining configuration options are related to the content of MQTT - messages and in general you won't have to modify them. - -For the SensorTag, changes to the MQTT configuration get saved in external -flash and persist across device restarts. The same does not hold true for -Srf+EM builds. - -You can also subscribe to topics and receive commands, but this will only -work if you use "Org ID" != 'quickstart'. Thus, if you provide a different -Org ID (do not forget the auth token!), the device will subscribe to: - -`iot-2/cmd/+/fmt/json` - -You can then use this to toggle LEDs or to turn the buzzer on and off. -The buzzer is only available on the SensorTag. To do this, you can for example -use mosquitto client to publish to `iot-2/cmd/leds/fmt/json`. So, to turn -the buzzer on, you would do this: - -`mosquitto_pub -h -m "1" -t iot-2/cmd/buzz/fmt/json` - -Where `broker IP` should be replaced with the IP address of your mosquitto -broker (the one where you device has subscribed). Replace `-m "1'` with `-m "0"` -to turn the buzzer back off. Replace `buzz` with `leds` in the topic to change -the state of the LED. - -Bear in mind that, even though the topic suggests that messages are of json -format, they are in fact not. This was done in order to avoid linking a json -parser into the firmware. - -IBM Watson IoT Platform ----------------------------- -To use IBM Watson IoT Platform, you have to go to SECURITY tab of Device page to select "TLS Optional". This step is critical. If you don't do this, you need to use TLS for connection and default cc26xx-web-demo won't work. - -![IBM Watson IoT Platform TLS Optional Configuration](img/ibm-watson-iot-platform-tls-optional.png) diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/cetic-6lbr-client.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/cetic-6lbr-client.c deleted file mode 100644 index 7c4cbdfff..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/cetic-6lbr-client.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. - */ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * An implementation of a 6LBR UDP client. Is used to populate the 6LBR - * web server's 'sensors' tab - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "contiki-lib.h" -#include "contiki-net.h" -#include "net/ipv6/uip.h" -#include "net/routing/routing.h" -#include "net/routing/rpl-classic/rpl.h" -#include "net/routing/rpl-classic/rpl-private.h" -/*---------------------------------------------------------------------------*/ -#include -#include -/*---------------------------------------------------------------------------*/ -#define DEBUG 0 -#include "net/ipv6/uip-debug.h" -/*---------------------------------------------------------------------------*/ -#if (ROUTING_CONF_RPL_CLASSIC == 0) -#error "The 6LBR client is only meant for RPL Classic. Set MAKE_ROUTING accordingly." -#endif -/*---------------------------------------------------------------------------*/ -#ifndef CETIC_6LBR_NODE_INFO_PORT -#define CETIC_6LBR_NODE_INFO_PORT 3000 -#endif - -#define MAX_PAYLOAD_LEN 40 -#define MSG_INTERVAL (60 * CLOCK_SECOND) -/*---------------------------------------------------------------------------*/ -static struct uip_udp_conn *client_conn = NULL; -static struct etimer et; -static uip_ip6addr_t dest_addr; -/*---------------------------------------------------------------------------*/ -PROCESS(cetic_6lbr_client_process, "6LBR Client Process"); -/*---------------------------------------------------------------------------*/ -static void -tcpip_handler(void) -{ - char *str; - - if(uip_newdata()) { - str = uip_appdata; - str[uip_datalen()] = '\0'; - PRINTF("Response from the server: '%s'\n", str); - } -} -/*---------------------------------------------------------------------------*/ -static char * -add_ipaddr(char *buf, const uip_ipaddr_t *addr) -{ - uint16_t a; - unsigned int i; - int f; - char *p = buf; - - for(i = 0, f = 0; i < sizeof(uip_ipaddr_t); i += 2) { - a = (addr->u8[i] << 8) + addr->u8[i + 1]; - if(a == 0 && f >= 0) { - if(f++ == 0) { - p += sprintf(p, "::"); - } - } else { - if(f > 0) { - f = -1; - } else if(i > 0) { - p += sprintf(p, ":"); - } - p += sprintf(p, "%04x", a); - } - } - return p; -} -/*---------------------------------------------------------------------------*/ -static void -timeout_handler(void) -{ - static int seq_id; - char buf[MAX_PAYLOAD_LEN]; - int i; - uip_ip6addr_t *globaladdr = NULL; - uint16_t dest_port = CETIC_6LBR_NODE_INFO_PORT; - int has_dest = 0; - rpl_instance_t *instance; - rpl_dag_t *dag; - - uip_ds6_addr_t *addr_desc = uip_ds6_get_global(ADDR_PREFERRED); - if(addr_desc != NULL) { - globaladdr = &addr_desc->ipaddr; - dag = rpl_get_any_dag(); - if(dag) { - uip_ipaddr_copy(&dest_addr, globaladdr); - memcpy(&dest_addr.u8[8], &dag->dag_id.u8[8], sizeof(uip_ipaddr_t) / 2); - has_dest = 1; - } - } - - if(has_dest) { - if(client_conn == NULL) { - PRINTF("UDP-CLIENT: address destination: "); - PRINT6ADDR(&dest_addr); - PRINTF("\n"); - client_conn = udp_new(&dest_addr, UIP_HTONS(dest_port), NULL); - - if(client_conn != NULL) { - PRINTF("Created a connection with the server "); - PRINT6ADDR(&client_conn->ripaddr); - PRINTF(" local/remote port %u/%u\n", - UIP_HTONS(client_conn->lport), UIP_HTONS(client_conn->rport)); - } else { - PRINTF("Could not open connection\n"); - } - } else { - if(memcmp(&client_conn->ripaddr, &dest_addr, sizeof(uip_ipaddr_t)) != 0) { - PRINTF("UDP-CLIENT: new address destination: "); - PRINT6ADDR(&dest_addr); - PRINTF("\n"); - uip_udp_remove(client_conn); - client_conn = udp_new(&dest_addr, UIP_HTONS(dest_port), NULL); - if(client_conn != NULL) { - PRINTF("Created a connection with the server "); - PRINT6ADDR(&client_conn->ripaddr); - PRINTF(" local/remote port %u/%u\n", - UIP_HTONS(client_conn->lport), UIP_HTONS(client_conn->rport)); - } else { - PRINTF("Could not open connection\n"); - } - } - } - if(client_conn != NULL) { - PRINTF("Client sending to: "); - PRINT6ADDR(&client_conn->ripaddr); - i = sprintf(buf, "%d | ", ++seq_id); - instance = rpl_get_default_instance(); - if(instance && instance->current_dag->preferred_parent) { - add_ipaddr(buf + i, rpl_parent_get_ipaddr(instance->current_dag->preferred_parent)); - } else { - sprintf(buf + i, "(null)"); - } - PRINTF(" (msg: %s)\n", buf); - uip_udp_packet_send(client_conn, buf, strlen(buf)); - } else { - PRINTF("No connection created\n"); - } - } else { - PRINTF("No address configured\n"); - } -} -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(cetic_6lbr_client_process, ev, data) -{ - - PROCESS_BEGIN(); - - printf("6LBR Client Process\n"); - - memset(&dest_addr, 0, sizeof(uip_ipaddr_t)); - - etimer_set(&et, MSG_INTERVAL); - while(1) { - PROCESS_YIELD(); - if(etimer_expired(&et)) { - timeout_handler(); - etimer_set(&et, MSG_INTERVAL); - } else if(ev == tcpip_event) { - tcpip_handler(); - } - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ -/** - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.c deleted file mode 100644 index 5a53fb1ae..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * A CC13xx/CC26xx-specific CoAP server - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "contiki-net.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include "board-peripherals.h" -#include "rf/ble-beacond.h" -/*---------------------------------------------------------------------------*/ -#include "web-demo.h" -/*---------------------------------------------------------------------------*/ -#include -#include -#include -/*---------------------------------------------------------------------------*/ -/* Common resources */ -extern coap_resource_t res_leds; - -extern coap_resource_t res_batmon_temp; -extern coap_resource_t res_batmon_volt; - -extern coap_resource_t res_device_sw; -extern coap_resource_t res_device_hw; -extern coap_resource_t res_device_uptime; -extern coap_resource_t res_device_cfg_reset; - -extern coap_resource_t res_parent_rssi; -extern coap_resource_t res_parent_ip; - -#if RF_CONF_BLE_BEACON_ENABLE -extern coap_resource_t res_ble_advd; -#endif - -extern coap_resource_t res_toggle_red; -extern coap_resource_t res_toggle_green; - -/* Board-specific resources */ -#if BOARD_SENSORTAG -extern coap_resource_t res_bmp280_temp; -extern coap_resource_t res_bmp280_press; -extern coap_resource_t res_tmp007_amb; -extern coap_resource_t res_tmp007_obj; -extern coap_resource_t res_hdc1000_temp; -extern coap_resource_t res_hdc1000_hum; -extern coap_resource_t res_opt3001_light; -extern coap_resource_t res_mpu_acc_x; -extern coap_resource_t res_mpu_acc_y; -extern coap_resource_t res_mpu_acc_z; -extern coap_resource_t res_mpu_gyro_x; -extern coap_resource_t res_mpu_gyro_y; -extern coap_resource_t res_mpu_gyro_z; -#else -extern coap_resource_t res_toggle_orange; -extern coap_resource_t res_toggle_yellow; -#endif - -#if WEB_DEMO_ADC_DEMO -extern coap_resource_t res_adc_dio23; -#endif -/*---------------------------------------------------------------------------*/ -const char *coap_server_not_found_msg = "Resource not found"; -const char *coap_server_supported_msg = "Supported:" - "text/plain," - "application/json," - "application/xml"; -/*---------------------------------------------------------------------------*/ -static void -start_board_resources(void) -{ - - coap_activate_resource(&res_toggle_green, "lt/g"); - coap_activate_resource(&res_toggle_red, "lt/r"); - coap_activate_resource(&res_leds, "lt"); - -#if BOARD_SENSORTAG - coap_activate_resource(&res_bmp280_temp, "sen/bar/temp"); - coap_activate_resource(&res_bmp280_press, "sen/bar/pres"); - coap_activate_resource(&res_tmp007_amb, "sen/tmp/amb"); - coap_activate_resource(&res_tmp007_obj, "sen/tmp/obj"); - coap_activate_resource(&res_hdc1000_temp, "sen/hdc/t"); - coap_activate_resource(&res_hdc1000_hum, "sen/hdc/h"); - coap_activate_resource(&res_opt3001_light, "sen/opt/light"); - coap_activate_resource(&res_mpu_acc_x, "sen/mpu/acc/x"); - coap_activate_resource(&res_mpu_acc_y, "sen/mpu/acc/y"); - coap_activate_resource(&res_mpu_acc_z, "sen/mpu/acc/z"); - coap_activate_resource(&res_mpu_gyro_x, "sen/mpu/gyro/x"); - coap_activate_resource(&res_mpu_gyro_y, "sen/mpu/gyro/y"); - coap_activate_resource(&res_mpu_gyro_z, "sen/mpu/gyro/z"); -#elif BOARD_SMARTRF06EB - coap_activate_resource(&res_toggle_yellow, "lt/y"); - coap_activate_resource(&res_toggle_orange, "lt/o"); -#endif -} -/*---------------------------------------------------------------------------*/ -PROCESS(coap_server_process, "CC13xx/CC26xx CoAP Server"); -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(coap_server_process, ev, data) -{ - PROCESS_BEGIN(); - - printf("CC13xx/CC26xx CoAP Server\n"); - - coap_activate_resource(&res_batmon_temp, "sen/batmon/temp"); - coap_activate_resource(&res_batmon_volt, "sen/batmon/voltage"); - -#if WEB_DEMO_ADC_DEMO - coap_activate_resource(&res_adc_dio23, "sen/adc/dio23"); -#endif - - coap_activate_resource(&res_device_hw, "dev/mdl/hw"); - coap_activate_resource(&res_device_sw, "dev/mdl/sw"); - coap_activate_resource(&res_device_uptime, "dev/uptime"); - coap_activate_resource(&res_device_cfg_reset, "dev/cfg_reset"); - - coap_activate_resource(&res_parent_rssi, "net/parent/RSSI"); - coap_activate_resource(&res_parent_ip, "net/parent/IPv6"); - -#if RF_CONF_BLE_BEACON_ENABLE - coap_activate_resource(&res_ble_advd, "dev/ble_advd"); -#endif - - start_board_resources(); - - /* Define application-specific events here. */ - while(1) { - PROCESS_WAIT_EVENT(); - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ -/** - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.h deleted file mode 100644 index 839928871..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/coap-server.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * Header file for the CC13xx/CC26xx web demo CoAP functionality - */ -/*---------------------------------------------------------------------------*/ -#include "sys/process.h" -/*---------------------------------------------------------------------------*/ -#ifndef COAP_SERVER_H_ -#define COAP_SERVER_H_ -/*---------------------------------------------------------------------------*/ -extern const char *coap_server_not_found_msg; -extern const char *coap_server_supported_msg; -/*---------------------------------------------------------------------------*/ -PROCESS_NAME(coap_server_process); -/*---------------------------------------------------------------------------*/ -#endif /* COAP_SERVER_H_ */ -/*---------------------------------------------------------------------------*/ -/** - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.c deleted file mode 100644 index 46f247ac8..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.c +++ /dev/null @@ -1,1351 +0,0 @@ -/* - * Copyright (c) 2010, Swedish Institute of Computer Science. - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. - * - */ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * A simple web server which displays network and sensor information - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "net/ipv6/uip-ds6-route.h" -#include "lib/sensors.h" -#include "lib/list.h" -/*---------------------------------------------------------------------------*/ -#include "batmon-sensor.h" -/*---------------------------------------------------------------------------*/ -#include "web-demo.h" -#include "mqtt-client.h" -#include "httpd-simple.h" -#include "net-uart.h" -/*---------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -#include -#include -#include -/*---------------------------------------------------------------------------*/ -#define SEND_STRING(s, str) PSOCK_SEND(s, (uint8_t *)str, strlen(str)) -/*---------------------------------------------------------------------------*/ -#define CONNS 2 -#define CONTENT_LENGTH_MAX 256 -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 -#define IPADDR_BUF_LEN 64 -/*---------------------------------------------------------------------------*/ -#define RETURN_CODE_OK 0 -#define RETURN_CODE_NF 1 /* Not Found */ -#define RETURN_CODE_SU 2 /* Service Unavailable */ -#define RETURN_CODE_BR 3 /* Bad Request */ -#define RETURN_CODE_LR 4 /* Length Required */ -#define RETURN_CODE_TL 5 /* Content Length too Large */ -/*---------------------------------------------------------------------------*/ -/* POST request machine states */ -#define PARSE_POST_STATE_INIT 0 -#define PARSE_POST_STATE_MORE 1 -#define PARSE_POST_STATE_READING_KEY 2 -#define PARSE_POST_STATE_READING_VAL 3 -#define PARSE_POST_STATE_ERROR 0xFFFFFFFF -/*---------------------------------------------------------------------------*/ -#define PARSE_POST_BUF_SIZES 64 - -/* Last byte always used to null terminate */ -#define PARSE_POST_MAX_POS (PARSE_POST_BUF_SIZES - 2) - -static char key[PARSE_POST_BUF_SIZES]; -static char val_escaped[PARSE_POST_BUF_SIZES]; -static char val[PARSE_POST_BUF_SIZES]; -static int key_len; -static int val_len; -static int state; -/*---------------------------------------------------------------------------*/ -/* Stringified min/max intervals */ -#define STRINGIFY(x) XSTR(x) -#define XSTR(x) #x - -#define RSSI_INT_MAX STRINGIFY(WEB_DEMO_RSSI_MEASURE_INTERVAL_MAX) -#define RSSI_INT_MIN STRINGIFY(WEB_DEMO_RSSI_MEASURE_INTERVAL_MIN) -#define PUB_INT_MAX STRINGIFY(MQTT_CLIENT_PUBLISH_INTERVAL_MAX) -#define PUB_INT_MIN STRINGIFY(MQTT_CLIENT_PUBLISH_INTERVAL_MIN) -/*---------------------------------------------------------------------------*/ -/* - * We can only handle a single POST request at a time. Since a second POST - * request cannot interrupt us while obtaining a lock, we don't really need - * this lock to be atomic. - * - * An HTTP connection will first request a lock before it starts processing - * a POST request. We maintain a global lock which is either NULL or points - * to the http conn which currently has the lock - */ -static struct httpd_state *lock; -/*---------------------------------------------------------------------------*/ -PROCESS(httpd_simple_process, "CC13xx/CC26xx Web Server"); -/*---------------------------------------------------------------------------*/ -#define ISO_nl 0x0A -#define ISO_space 0x20 -#define ISO_slash 0x2F -#define ISO_amp 0x26 -#define ISO_column 0x3A -#define ISO_equal 0x3D -/*---------------------------------------------------------------------------*/ -#define HTTP_200_OK "HTTP/1.0 200 OK\r\n" -#define HTTP_302_FO "HTTP/1.0 302 Found\r\n" -#define HTTP_400_BR "HTTP/1.0 400 Bad Request\r\n" -#define HTTP_404_NF "HTTP/1.0 404 Not Found\r\n" -#define HTTP_411_LR "HTTP/1.0 411 Length Required\r\n" -#define HTTP_413_TL "HTTP/1.0 413 Request Entity Too Large\r\n" -#define HTTP_503_SU "HTTP/1.0 503 Service Unavailable\r\n" -#define CONN_CLOSE "Connection: close\r\n" -/*---------------------------------------------------------------------------*/ -#define SECTION_TAG "div" -#define SECTION_OPEN "<" SECTION_TAG ">" -#define SECTION_CLOSE "" - -#define CONTENT_OPEN "

"
-#define CONTENT_CLOSE "
" -/*---------------------------------------------------------------------------*/ -#define REQUEST_TYPE_GET 1 -#define REQUEST_TYPE_POST 2 -/*---------------------------------------------------------------------------*/ -static const char *NOT_FOUND = "" - "
" - "

404 - file not found

" - "
" - "" - ""; -/*---------------------------------------------------------------------------*/ -/* Page template */ -static const char http_doctype[] = ""; -static const char http_header_200[] = HTTP_200_OK; -static const char http_header_302[] = HTTP_302_FO; -static const char http_header_400[] = HTTP_400_BR; -static const char http_header_404[] = HTTP_404_NF; -static const char http_header_411[] = HTTP_411_LR; -static const char http_header_413[] = HTTP_413_TL; -static const char http_header_503[] = HTTP_503_SU; -static const char http_get[] = "GET "; -static const char http_post[] = "POST "; -static const char http_index_html[] = "/index.html"; -static const char http_html_start[] = ""; -static const char *http_header_srv_str[] = { - "Server: Contiki, ", - BOARD_STRING "\r\n", - NULL -}; - -static const char *http_header_con_close[] = { - CONN_CLOSE, - NULL -}; - -static const char *http_config_css[] = { - "", - NULL -}; -static const char http_head_charset[] = ""; -static const char http_title_start[] = ""; -static const char http_title_end[] = ""; -static const char http_head_end[] = ""; -static const char http_body_start[] = ""; -static const char http_bottom[] = ""; -/*---------------------------------------------------------------------------*/ -static const char http_content_type_html[] = "text/html"; -static const char http_content_type_plain[] = "text/plain"; -/*---------------------------------------------------------------------------*/ -/* For the config page */ -static const char config_div_left[] = "
"; -static const char config_div_right[] = "
"; -static const char config_div_close[] = "
"; -/*---------------------------------------------------------------------------*/ -static char generate_index(struct httpd_state *s); -static char generate_config(struct httpd_state *s); -/*---------------------------------------------------------------------------*/ -typedef struct page { - struct page *next; - char *filename; - char *title; - char (*script)(struct httpd_state *s); -} page_t; - -static page_t http_index_page = { - NULL, - "index.html", - "Index", - generate_index, -}; - -static page_t http_dev_cfg_page = { - NULL, - "config.html", - "Device Config", - generate_config, -}; - -#if WEB_DEMO_NET_UART -static char generate_net_uart_config(struct httpd_state *s); - -static page_t http_net_cfg_page = { - NULL, - "netu.html", - "Net-UART Config", - generate_net_uart_config, -}; -#endif - -#if WEB_DEMO_MQTT_CLIENT -static char generate_mqtt_config(struct httpd_state *s); - -static page_t http_mqtt_cfg_page = { - NULL, - "mqtt.html", - "MQTT/IBM Cloud Config", - generate_mqtt_config, -}; -#endif -/*---------------------------------------------------------------------------*/ -#define IBM_QUICKSTART_LINK_LEN 128 -static char http_mqtt_a[IBM_QUICKSTART_LINK_LEN]; -/*---------------------------------------------------------------------------*/ -static uint16_t numtimes; -static const httpd_simple_post_handler_t *handler; -/*---------------------------------------------------------------------------*/ -static uint8_t config_ok; -process_event_t httpd_simple_event_new_config; -/*---------------------------------------------------------------------------*/ -struct httpd_state; -typedef char (*httpd_simple_script_t)(struct httpd_state *s); - -struct httpd_state { - char buf[HTTPD_SIMPLE_MAIN_BUF_SIZE]; - char tmp_buf[TMP_BUF_SIZE]; - struct timer timer; - struct psock sin, sout; - int blen; - const char **ptr; - const web_demo_sensor_reading_t *reading; - const page_t *page; - uip_ds6_route_t *r; - uip_ds6_nbr_t *nbr; - httpd_simple_script_t script; - int content_length; - int tmp_buf_len; - int tmp_buf_copied; - char filename[HTTPD_PATHLEN]; - char inputbuf[HTTPD_INBUF_LEN]; - struct pt outputpt; - struct pt generate_pt; - struct pt top_matter_pt; - char state; - char request_type; - char return_code; -}; -/*---------------------------------------------------------------------------*/ -LIST(post_handlers); -LIST(pages_list); -MEMB(conns, struct httpd_state, CONNS); -/*---------------------------------------------------------------------------*/ -#define HEX_TO_INT(x) (isdigit(x) ? x - '0' : x - 'W') -static size_t -url_unescape(const char *src, size_t srclen, char *dst, size_t dstlen) -{ - size_t i, j; - int a, b; - - for(i = j = 0; i < srclen && j < dstlen - 1; i++, j++) { - if(src[i] == '%' && isxdigit(*(unsigned char *)(src + i + 1)) - && isxdigit(*(unsigned char *)(src + i + 2))) { - a = tolower(*(unsigned char *)(src + i + 1)); - b = tolower(*(unsigned char *)(src + i + 2)); - dst[j] = ((HEX_TO_INT(a) << 4) | HEX_TO_INT(b)) & 0xff; - i += 2; - } else if(src[i] == '+') { - dst[j] = ' '; - } else { - dst[j] = src[i]; - } - } - - dst[j] = '\0'; - - return i == srclen; -} -/*---------------------------------------------------------------------------*/ -void -httpd_simple_register_post_handler(httpd_simple_post_handler_t *h) -{ - list_add(post_handlers, h); -} -/*---------------------------------------------------------------------------*/ -static void -get_neighbour_state_text(char *buf, uint8_t state) -{ - switch(state) { - case NBR_INCOMPLETE: - memcpy(buf, "INCOMPLETE", strlen("INCOMPLETE")); - break; - case NBR_REACHABLE: - memcpy(buf, "REACHABLE", strlen("REACHABLE")); - break; - case NBR_STALE: - memcpy(buf, "STALE", strlen("STALE")); - break; - case NBR_DELAY: - memcpy(buf, "DELAY", strlen("DELAY")); - break; - case NBR_PROBE: - memcpy(buf, "NBR_PROBE", strlen("NBR_PROBE")); - break; - } -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(enqueue_chunk(struct httpd_state *s, uint8_t immediate, - const char *format, ...)) -{ - va_list ap; - - PSOCK_BEGIN(&s->sout); - - va_start(ap, format); - - s->tmp_buf_len = vsnprintf(s->tmp_buf, TMP_BUF_SIZE, format, ap); - - va_end(ap); - - if(s->blen + s->tmp_buf_len < HTTPD_SIMPLE_MAIN_BUF_SIZE) { - /* Enough space for the entire chunk. Copy over */ - memcpy(&s->buf[s->blen], s->tmp_buf, s->tmp_buf_len); - s->blen += s->tmp_buf_len; - } else { - memcpy(&s->buf[s->blen], s->tmp_buf, HTTPD_SIMPLE_MAIN_BUF_SIZE - s->blen); - s->tmp_buf_copied = HTTPD_SIMPLE_MAIN_BUF_SIZE - s->blen; - s->blen = HTTPD_SIMPLE_MAIN_BUF_SIZE; - PSOCK_SEND(&s->sout, (uint8_t *)s->buf, s->blen); - s->blen = 0; - if(s->tmp_buf_copied < s->tmp_buf_len) { - memcpy(s->buf, &s->tmp_buf[s->tmp_buf_copied], - s->tmp_buf_len - s->tmp_buf_copied); - s->blen += s->tmp_buf_len - s->tmp_buf_copied; - } - } - - if(immediate != 0 && s->blen > 0) { - PSOCK_SEND(&s->sout, (uint8_t *)s->buf, s->blen); - s->blen = 0; - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(generate_top_matter(struct httpd_state *s, const char *title, - const char **css)) -{ - - PT_BEGIN(&s->top_matter_pt); - - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, http_doctype)); - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, http_html_start)); - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, http_title_start)); - - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, title)); - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, http_title_end)); - - if(css != NULL) { - for(s->ptr = css; *(s->ptr) != NULL; s->ptr++) { - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, *(s->ptr))); - } - } - - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, http_head_charset)); - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, http_head_end)); - PT_WAIT_THREAD(&s->top_matter_pt, enqueue_chunk(s, 0, http_body_start)); - - /* Links */ - PT_WAIT_THREAD(&s->top_matter_pt, - enqueue_chunk(s, 0, SECTION_OPEN "

")); - - s->page = list_head(pages_list); - PT_WAIT_THREAD(&s->top_matter_pt, - enqueue_chunk(s, 0, "[ %s ]", - s->page->filename, s->page->title)); - - for(s->page = s->page->next; s->page != NULL; s->page = s->page->next) { - PT_WAIT_THREAD(&s->top_matter_pt, - enqueue_chunk(s, 0, " | [ %s ]", - s->page->filename, s->page->title)); - } - -#if WEB_DEMO_MQTT_CLIENT - PT_WAIT_THREAD(&s->top_matter_pt, - enqueue_chunk(s, 0, " | %s", http_mqtt_a)); -#endif - PT_WAIT_THREAD(&s->top_matter_pt, - enqueue_chunk(s, 0, "

" SECTION_CLOSE)); - - PT_END(&s->top_matter_pt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(generate_index(struct httpd_state *s)) -{ - char ipaddr_buf[IPADDR_BUF_LEN]; /* Intentionally on stack */ - - PT_BEGIN(&s->generate_pt); - - /* Generate top matter (doctype, title, nav links etc) */ - PT_WAIT_THREAD(&s->generate_pt, - generate_top_matter(s, http_index_page.title, NULL)); - - /* ND Cache */ - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, SECTION_OPEN "Neighbors" CONTENT_OPEN)); - - for(s->nbr = nbr_table_head(ds6_neighbors); s->nbr != NULL; - s->nbr = nbr_table_next(ds6_neighbors, s->nbr)) { - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "\n")); - - memset(ipaddr_buf, 0, IPADDR_BUF_LEN); - web_demo_ipaddr_sprintf(ipaddr_buf, IPADDR_BUF_LEN, &s->nbr->ipaddr); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "%s", ipaddr_buf)); - - memset(ipaddr_buf, 0, IPADDR_BUF_LEN); - get_neighbour_state_text(ipaddr_buf, s->nbr->state); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, " %s", ipaddr_buf)); - } - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, CONTENT_CLOSE SECTION_CLOSE)); - - /* Default Route */ - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - SECTION_OPEN "Default Route" CONTENT_OPEN)); - - memset(ipaddr_buf, 0, IPADDR_BUF_LEN); - web_demo_ipaddr_sprintf(ipaddr_buf, IPADDR_BUF_LEN, - uip_ds6_defrt_choose()); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "%s", ipaddr_buf)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, CONTENT_CLOSE SECTION_CLOSE)); - - /* Routes */ - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, SECTION_OPEN "Routes" CONTENT_OPEN)); - - for(s->r = uip_ds6_route_head(); s->r != NULL; - s->r = uip_ds6_route_next(s->r)) { - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "\n")); - - memset(ipaddr_buf, 0, IPADDR_BUF_LEN); - web_demo_ipaddr_sprintf(ipaddr_buf, IPADDR_BUF_LEN, &s->r->ipaddr); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "%s", ipaddr_buf)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, " / %u via ", s->r->length)); - - memset(ipaddr_buf, 0, IPADDR_BUF_LEN); - web_demo_ipaddr_sprintf(ipaddr_buf, IPADDR_BUF_LEN, - uip_ds6_route_nexthop(s->r)); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "%s", ipaddr_buf)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - ", lifetime=%lus", s->r->state.lifetime)); - } - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, - CONTENT_CLOSE SECTION_CLOSE)); - - /* Sensors */ - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, SECTION_OPEN "Sensors" CONTENT_OPEN)); - - for(s->reading = web_demo_sensor_first(); - s->reading != NULL; s->reading = s->reading->next) { - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "\n%s = %s %s", s->reading->descr, - s->reading->publish ? s->reading->converted : "N/A", - s->reading->units)); - } - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, CONTENT_CLOSE SECTION_CLOSE)); - - /* Footer */ - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, SECTION_OPEN)); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "Page hits: %u
", - ++numtimes)); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "Uptime: %lu secs
", - clock_seconds())); - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, SECTION_CLOSE)); - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 1, http_bottom)); - - PT_END(&s->generate_pt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(generate_config(struct httpd_state *s)) -{ - PT_BEGIN(&s->generate_pt); - - /* Generate top matter (doctype, title, nav links etc) */ - PT_WAIT_THREAD(&s->generate_pt, - generate_top_matter(s, http_dev_cfg_page.title, - http_config_css)); - - /* Sensor Settings */ - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "

Sensors

")); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "
generate_pt, - enqueue_chunk(s, 0, "method=\"post\" enctype=\"")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "application/x-www-form-urlencoded\" ")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "accept-charset=\"UTF-8\">")); - - for(s->reading = web_demo_sensor_first(); - s->reading != NULL; s->reading = s->reading->next) { - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%s%s:%s%s", config_div_left, - s->reading->descr, config_div_close, - config_div_right)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "generate_pt, - enqueue_chunk(s, 0, "title=\"On\" name=\"%s\"%s>", - s->reading->form_field, - s->reading->publish ? " Checked" : "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "generate_pt, - enqueue_chunk(s, 0, "title=\"Off\" name=\"%s\"%s>%s", - s->reading->form_field, - s->reading->publish ? "" : " Checked", - config_div_close)); - } - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "
")); - - /* RSSI measurements */ -#if WEB_DEMO_READ_PARENT_RSSI - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "

RSSI Probing

")); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "
generate_pt, - enqueue_chunk(s, 0, "method=\"post\" enctype=\"")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "application/x-www-form-urlencoded\" ")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "accept-charset=\"UTF-8\">")); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sPeriod (secs):%s", - config_div_left, config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%lu\" ", - (clock_time_t) - (web_demo_config.def_rt_ping_interval - / CLOCK_SECOND))); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "min=\"" RSSI_INT_MIN "\" " - "max=\"" RSSI_INT_MAX "\" " - "name=\"ping_interval\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "
")); -#endif - - /* Actions */ - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, "

Actions

")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "
generate_pt, - enqueue_chunk(s, 0, "method=\"post\" enctype=\"")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "application/x-www-form-urlencoded\" ")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "accept-charset=\"UTF-8\">")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "
")); - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 1, http_bottom)); - - PT_END(&s->generate_pt); -} -/*---------------------------------------------------------------------------*/ -#if WEB_DEMO_MQTT_CLIENT -static -PT_THREAD(generate_mqtt_config(struct httpd_state *s)) -{ - PT_BEGIN(&s->generate_pt); - - /* Generate top matter (doctype, title, nav links etc) */ - PT_WAIT_THREAD(&s->generate_pt, - generate_top_matter(s, http_mqtt_cfg_page.title, - http_config_css)); - - /* MQTT client settings */ - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "

%s

", http_mqtt_cfg_page.title)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "
generate_pt, - enqueue_chunk(s, 0, "method=\"post\" enctype=\"")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "application/x-www-form-urlencoded\" ")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "accept-charset=\"UTF-8\">")); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sType ID:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%s\" ", - web_demo_config.mqtt_config.type_id)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "name=\"type_id\">%s", config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sOrg ID:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%s\" ", - web_demo_config.mqtt_config.org_id)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "name=\"org_id\">%s", config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sAuth Token:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"\" ")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "name=\"auth_token\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sCommand Type:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%s\" ", - web_demo_config.mqtt_config.cmd_type)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "name=\"cmd_type\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sEvent Type ID:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%s\" ", - web_demo_config.mqtt_config.event_type_id)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "name=\"event_type_id\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sInterval (secs):%s", - config_div_left, config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%lu\" ", - (clock_time_t) - (web_demo_config.mqtt_config.pub_interval - / CLOCK_SECOND))); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "min=\"" PUB_INT_MIN "\" " - "max=\"" PUB_INT_MAX "\" " - "name=\"interval\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sBroker IP:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%s\" ", - web_demo_config.mqtt_config.broker_ip)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "name=\"broker_ip\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sBroker Port:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%d\" ", - web_demo_config.mqtt_config.broker_port)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "min=\"1\" max=\"65535\" " - "name=\"broker_port\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "
")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "
generate_pt, - enqueue_chunk(s, 0, "method=\"post\" enctype=\"")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "application/x-www-form-urlencoded\" ")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "accept-charset=\"UTF-8\">")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "
")); - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 1, http_bottom)); - - PT_END(&s->generate_pt); -} -#endif -/*---------------------------------------------------------------------------*/ -#if WEB_DEMO_NET_UART -static -PT_THREAD(generate_net_uart_config(struct httpd_state *s)) -{ - - PT_BEGIN(&s->generate_pt); - - /* Generate top matter (doctype, title, nav links etc) */ - PT_WAIT_THREAD(&s->generate_pt, - generate_top_matter(s, http_net_cfg_page.title, - http_config_css)); - - /* Net-UART settings */ - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "

%s

", http_net_cfg_page.title)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "
generate_pt, - enqueue_chunk(s, 0, "method=\"post\" enctype=\"")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "application/x-www-form-urlencoded\" ")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "accept-charset=\"UTF-8\">")); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sRemote IPv6:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%s\" ", - web_demo_config.net_uart.remote_address)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "name=\"net_uart_ip\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sRemote Port:%s", config_div_left, - config_div_close)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%sgenerate_pt, - enqueue_chunk(s, 0, "value=\"%u\" ", - web_demo_config.net_uart.remote_port)); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "min=\"1\" max=\"65535\" " - "name=\"net_uart_port\">%s", - config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "%s%s:%s%s", config_div_left, - "Enable", config_div_close, - config_div_right)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "generate_pt, - enqueue_chunk(s, 0, "title=\"On\" name=\"net_uart_on\"%s>", - web_demo_config.net_uart.enable ? - " Checked" : "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "generate_pt, - enqueue_chunk(s, 0, "title=\"Off\" name=\"net_uart_on\"" - "%s>%s", - web_demo_config.net_uart.enable ? - "" : " Checked", config_div_close)); - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, - "")); - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "
")); - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 1, http_bottom)); - - PT_END(&s->generate_pt); -} -#endif -/*---------------------------------------------------------------------------*/ -static void -lock_obtain(struct httpd_state *s) -{ - if(lock == NULL) { - lock = s; - } -} -/*---------------------------------------------------------------------------*/ -static void -lock_release(struct httpd_state *s) -{ - if(lock == s) { - lock = NULL; - } -} -/*---------------------------------------------------------------------------*/ -static void -parse_post_request_chunk(char *buf, int buf_len, int last_chunk) -{ - int i; - int finish; - - for(i = 0; i < buf_len; i++) { - switch(state) { - case PARSE_POST_STATE_INIT: - state = PARSE_POST_STATE_MORE; - /* continue */ - case PARSE_POST_STATE_MORE: - memset(key, 0, PARSE_POST_BUF_SIZES); - memset(val, 0, PARSE_POST_BUF_SIZES); - memset(val_escaped, 0, PARSE_POST_BUF_SIZES); - key_len = 0; - val_len = 0; - state = PARSE_POST_STATE_READING_KEY; - /* continue */ - case PARSE_POST_STATE_READING_KEY: - if(buf[i] == ISO_equal) { - state = PARSE_POST_STATE_READING_VAL; - } else if(buf[i] == ISO_amp) { - /* Don't accept an amp while reading a key */ - state = PARSE_POST_STATE_ERROR; - } else { - /* Make sure we don't overshoot key's boundary */ - if(key_len <= PARSE_POST_MAX_POS) { - key[key_len] = buf[i]; - key_len++; - } else { - /* Not enough space for the key. Abort */ - state = PARSE_POST_STATE_ERROR; - } - } - break; - case PARSE_POST_STATE_READING_VAL: - finish = 0; - if(buf[i] == ISO_amp) { - finish = 1; - } else if(buf[i] == ISO_equal) { - /* Don't accept an '=' while reading a val */ - state = PARSE_POST_STATE_ERROR; - } else { - /* Make sure we don't overshoot key's boundary */ - if(val_len <= PARSE_POST_MAX_POS) { - val[val_len] = buf[i]; - val_len++; - /* Last character of the last chunk */ - if((i == buf_len - 1) && (last_chunk == 1)) { - finish = 1; - } - } else { - /* Not enough space for the value. Abort */ - state = PARSE_POST_STATE_ERROR; - } - } - - if(finish == 1) { - /* - * Done reading a key=value pair, either because we encountered an amp - * or because we reached the end of the message body. - * - * First, unescape the value. - * - * Then invoke handlers. We will bail out with PARSE_POST_STATE_ERROR, - * unless the key-val gets correctly processed - */ - url_unescape(val, val_len, val_escaped, PARSE_POST_BUF_SIZES); - val_len = strlen(val_escaped); - - for(handler = list_head(post_handlers); handler != NULL; - handler = list_item_next((void *)handler)) { - if(handler->handler != NULL) { - finish = handler->handler(key, key_len, val_escaped, val_len); - } - if(finish == HTTPD_SIMPLE_POST_HANDLER_ERROR) { - state = PARSE_POST_STATE_ERROR; - break; - } else if(finish == HTTPD_SIMPLE_POST_HANDLER_OK) { - /* Restart the state machine to expect the next pair */ - state = PARSE_POST_STATE_MORE; - - /* - * At least one handler returned OK, therefore we must generate a - * new config event when we're done. - */ - config_ok = 1; - break; - } - /* Else, continue */ - } - } - break; - case PARSE_POST_STATE_ERROR: - /* If we entered the error state earlier, do nothing */ - return; - default: - break; - } - } -} -/*---------------------------------------------------------------------------*/ -static httpd_simple_script_t -get_script(const char *name) -{ - page_t *page; - - for(page = list_head(pages_list); page != NULL; - page = list_item_next(page)) { - if(strncmp(name, page->filename, strlen(page->filename)) == 0) { - return page->script; - } - } - - return NULL; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_string(struct httpd_state *s, const char *str)) -{ - PSOCK_BEGIN(&s->sout); - - SEND_STRING(&s->sout, str); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr, - const char *content_type, const char *redir, - const char **additional)) -{ - PT_BEGIN(&s->generate_pt); - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, statushdr)); - - for(s->ptr = http_header_srv_str; *(s->ptr) != NULL; s->ptr++) { - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, *(s->ptr))); - } - - if(redir) { - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "Location: %s\r\n", redir)); - } - - if(additional) { - for(s->ptr = additional; *(s->ptr) != NULL; s->ptr++) { - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 0, *(s->ptr))); - } - } - - PT_WAIT_THREAD(&s->generate_pt, - enqueue_chunk(s, 0, "Content-type: %s; ", content_type)); - - PT_WAIT_THREAD(&s->generate_pt, enqueue_chunk(s, 1, "charset=UTF-8\r\n\r\n")); - - PT_END(&s->generate_pt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - PT_BEGIN(&s->outputpt); - - s->script = NULL; - - PT_INIT(&s->generate_pt); - PT_INIT(&s->top_matter_pt); - - if(s->request_type == REQUEST_TYPE_POST) { - if(s->return_code == RETURN_CODE_OK) { - PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_302, - http_content_type_plain, - s->filename, - NULL)); - } else if(s->return_code == RETURN_CODE_LR) { - PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_411, - http_content_type_plain, - NULL, - http_header_con_close)); - PT_WAIT_THREAD(&s->outputpt, send_string(s, "Content-Length Required\n")); - } else if(s->return_code == RETURN_CODE_TL) { - PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_413, - http_content_type_plain, - NULL, - http_header_con_close)); - PT_WAIT_THREAD(&s->outputpt, send_string(s, "Content-Length too Large\n")); - } else if(s->return_code == RETURN_CODE_SU) { - PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_503, - http_content_type_plain, - NULL, - http_header_con_close)); - PT_WAIT_THREAD(&s->outputpt, send_string(s, "Service Unavailable\n")); - } else { - PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_400, - http_content_type_plain, - NULL, - http_header_con_close)); - PT_WAIT_THREAD(&s->outputpt, send_string(s, "Bad Request\n")); - } - } else if(s->request_type == REQUEST_TYPE_GET) { - s->script = get_script(&s->filename[1]); - if(s->script == NULL) { - strncpy(s->filename, "/notfound.html", sizeof(s->filename)); - PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_404, - http_content_type_html, - NULL, - http_header_con_close)); - PT_WAIT_THREAD(&s->outputpt, - send_string(s, NOT_FOUND)); - uip_close(); - PT_EXIT(&s->outputpt); - } else { - PT_WAIT_THREAD(&s->outputpt, send_headers(s, http_header_200, - http_content_type_html, - NULL, - http_header_con_close)); - PT_WAIT_THREAD(&s->outputpt, s->script(s)); - } - } - s->script = NULL; - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - if(strncasecmp(s->inputbuf, http_get, 4) == 0) { - s->request_type = REQUEST_TYPE_GET; - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - strncpy(s->filename, s->inputbuf, sizeof(s->filename)); - } - } else if(strncasecmp(s->inputbuf, http_post, 5) == 0) { - s->request_type = REQUEST_TYPE_POST; - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - strncpy(s->filename, s->inputbuf, sizeof(s->filename)); - - /* POST: Read out the rest of the line and ignore it */ - PSOCK_READTO(&s->sin, ISO_nl); - - /* - * Start parsing headers. We look for Content-Length and ignore everything - * else until we hit the start of the message body. - * - * We will return 411 if the client doesn't send Content-Length and 413 - * if Content-Length is too high - */ - s->content_length = 0; - s->return_code = RETURN_CODE_LR; - do { - s->inputbuf[PSOCK_DATALEN(&s->sin)] = 0; - /* We anticipate a content length */ - if((PSOCK_DATALEN(&s->sin) > 14) && - strncasecmp(s->inputbuf, "Content-Length:", 15) == 0) { - char *val_start = &s->inputbuf[15]; - s->content_length = atoi(val_start); - - /* So far so good */ - s->return_code = RETURN_CODE_OK; - } - PSOCK_READTO(&s->sin, ISO_nl); - } while(PSOCK_DATALEN(&s->sin) != 2); - - /* - * Done reading headers. - * Reject content length greater than CONTENT_LENGTH_MAX bytes - */ - if(s->content_length > CONTENT_LENGTH_MAX) { - s->content_length = 0; - s->return_code = RETURN_CODE_TL; - } - - if(s->return_code == RETURN_CODE_OK) { - /* Acceptable Content Length. Try to obtain a lock */ - lock_obtain(s); - - if(lock == s) { - state = PARSE_POST_STATE_INIT; - } else { - s->return_code = RETURN_CODE_SU; - } - } - - /* Parse the message body, unless we have detected an error. */ - while(s->content_length > 0 && lock == s && - s->return_code == RETURN_CODE_OK) { - PSOCK_READBUF_LEN(&s->sin, s->content_length); - s->content_length -= PSOCK_DATALEN(&s->sin); - - /* Parse the message body */ - parse_post_request_chunk(s->inputbuf, PSOCK_DATALEN(&s->sin), - (s->content_length == 0)); - if(state == PARSE_POST_STATE_ERROR) { - /* Could not parse: Bad Request and stop parsing */ - s->return_code = RETURN_CODE_BR; - } - } - - /* - * Done. If our return code is OK but the state machine is not in - * STATE_MORE, it means that the message body ended half-way reading a key - * or value. Set 'Bad Request' - */ - if(s->return_code == RETURN_CODE_OK && state != PARSE_POST_STATE_MORE) { - s->return_code = RETURN_CODE_BR; - } - - /* If the flag is set, we had at least 1 configuration value accepted */ - if(config_ok) { - process_post(PROCESS_BROADCAST, httpd_simple_event_new_config, NULL); - } - config_ok = 0; - - lock_release(s); - } else { - PSOCK_CLOSE_EXIT(&s->sin); - } - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -static void -appcall(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(uip_closed() || uip_aborted() || uip_timedout()) { - if(s != NULL) { - memset(s, 0, sizeof(struct httpd_state)); - memb_free(&conns, s); - } - } else if(uip_connected()) { - s = (struct httpd_state *)memb_alloc(&conns); - if(s == NULL) { - uip_abort(); - return; - } - tcp_markconn(uip_conn, s); - PSOCK_INIT(&s->sin, (uint8_t *)s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, (uint8_t *)s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->script = NULL; - s->state = STATE_WAITING; - timer_set(&s->timer, CLOCK_SECOND * 10); - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - if(timer_expired(&s->timer)) { - uip_abort(); - memset(s, 0, sizeof(struct httpd_state)); - memb_free(&conns, s); - } - } else { - timer_restart(&s->timer); - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -static void -init(void) -{ - tcp_listen(UIP_HTONS(80)); - memb_init(&conns); - - list_add(pages_list, &http_index_page); - list_add(pages_list, &http_dev_cfg_page); - -#if WEB_DEMO_NET_UART - list_add(pages_list, &http_net_cfg_page); -#endif - -#if WEB_DEMO_MQTT_CLIENT - list_add(pages_list, &http_mqtt_cfg_page); -#endif -} -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(httpd_simple_process, ev, data) -{ - PROCESS_BEGIN(); - - printf("CC26XX Web Server\n"); - - httpd_simple_event_new_config = process_alloc_event(); - - init(); - - snprintf(http_mqtt_a, IBM_QUICKSTART_LINK_LEN, - "[ IBM Quickstart ]", - linkaddr_node_addr.u8[0], linkaddr_node_addr.u8[1], - linkaddr_node_addr.u8[2], linkaddr_node_addr.u8[5], - linkaddr_node_addr.u8[6], linkaddr_node_addr.u8[7]); - - while(1) { - PROCESS_WAIT_EVENT_UNTIL(ev == tcpip_event); - appcall(data); - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ -/** - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.h deleted file mode 100644 index 810fd4782..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/httpd-simple.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2010, Swedish Institute of Computer Science. - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. - * - */ -/*---------------------------------------------------------------------------*/ -/** - * \file - * Header file for the HTTPD of the CC13xx/CC26xx web demo example. - * \author - * Adam Dunkels - * Niclas Finne - * Joakim Eriksson - * Texas Instruments Incorporated - http://www.ti.com/ - */ -/*---------------------------------------------------------------------------*/ -#ifndef HTTPD_SIMPLE_H_ -#define HTTPD_SIMPLE_H_ -/*---------------------------------------------------------------------------*/ -#include "contiki-net.h" -#include "sys/process.h" -/*---------------------------------------------------------------------------*/ -#include "web-demo.h" -/*---------------------------------------------------------------------------*/ -/* Ideally a multiple of TCP_MSS */ -#ifdef HTTPD_SIMPLE_CONF_MAIN_BUF_SIZE -#define HTTPD_SIMPLE_MAIN_BUF_SIZE HTTPD_SIMPLE_CONF_MAIN_BUF_SIZE -#else -#define HTTPD_SIMPLE_MAIN_BUF_SIZE UIP_TCP_MSS -#endif -/*---------------------------------------------------------------------------*/ -#define HTTPD_PATHLEN 16 -#define HTTPD_INBUF_LEN (HTTPD_PATHLEN + 10) - -#define TMP_BUF_SIZE (UIP_TCP_MSS + 1) -/*---------------------------------------------------------------------------*/ -/* POST request handlers */ -#define HTTPD_SIMPLE_POST_HANDLER_OK 1 -#define HTTPD_SIMPLE_POST_HANDLER_UNKNOWN 0 -#define HTTPD_SIMPLE_POST_HANDLER_ERROR 0xFFFFFFFF - -/** - * \brief Datatype for a handler which can process incoming POST requests - * \param key The configuration key to be updated - * \param key_len The length of the key argument - * \param val The new configuration value for key - * \param val_len The length of the value argument - * - * \return 1: HTTPD_SIMPLE_POST_HANDLER_OK if the function can handle the - * request, HTTPD_SIMPLE_POST_HANDLER_UNKNOWN if it does not know how to handle - * it. HTTPD_SIMPLE_POST_HANDLER_ERROR if it does know how to handle it but - * the request was malformed. - */ -typedef struct httpd_simple_post_handler { - struct httpd_simple_post_handler *next; - int (*handler)(char *key, int key_len, char *val, int val_len); -} httpd_simple_post_handler_t; - -/* Declare a handler */ -#define HTTPD_SIMPLE_POST_HANDLER(name, fp) \ - httpd_simple_post_handler_t name##_handler = { NULL, fp } - -/** - * \brief Register a handler for POST requests - * \param h A pointer to the handler structure - */ -void httpd_simple_register_post_handler(httpd_simple_post_handler_t *h); -/*---------------------------------------------------------------------------*/ -/* - * An event generated by the HTTPD when a new configuration request has been - * received - */ -extern process_event_t httpd_simple_event_new_config; -/*---------------------------------------------------------------------------*/ -PROCESS_NAME(httpd_simple_process); -/*---------------------------------------------------------------------------*/ -#endif /* HTTPD_SIMPLE_H_ */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/6lbr-web.png b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/6lbr-web.png deleted file mode 100644 index 5308c412bc183fe3f62930fec950a1029ebc036b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81741 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 LdQl>7^!EP%AFu2O diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/ibm-watson-iot-platform-tls-optional.png b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/ibm-watson-iot-platform-tls-optional.png deleted file mode 100644 index 93c98624fddeefc38f66885bb184589c6a6c31e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86462 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 diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/well-known-core.png b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/well-known-core.png deleted file mode 100644 index 93552e502e404a2eb261e138835223a881ae0a02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9102 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 z -#include -/*---------------------------------------------------------------------------*/ -/* - * IBM server: messaging.quickstart.internetofthings.ibmcloud.com - * (184.172.124.189) mapped in an NAT64 (prefix 64:ff9b::/96) IPv6 address - * Note: If not able to connect; lookup the IP address again as it may change. - * - * If the node has a broker IP setting saved on flash, this value here will - * get ignored - */ -static const char *broker_ip = "0064:ff9b:0000:0000:0000:0000:b8ac:7cbd"; -/*---------------------------------------------------------------------------*/ -/* - * A timeout used when waiting for something to happen (e.g. to connect or to - * disconnect) - */ -#define STATE_MACHINE_PERIODIC (CLOCK_SECOND >> 1) -/*---------------------------------------------------------------------------*/ -/* Provide visible feedback via LEDS during various states */ -/* When connecting to broker */ -#define CONNECTING_LED_DURATION (CLOCK_SECOND >> 3) - -/* Each time we try to publish */ -#define PUBLISH_LED_ON_DURATION (CLOCK_SECOND) -/*---------------------------------------------------------------------------*/ -/* Connections and reconnections */ -#define RETRY_FOREVER 0xFF -#define RECONNECT_INTERVAL (CLOCK_SECOND * 2) - -/* - * Number of times to try reconnecting to the broker. - * Can be a limited number (e.g. 3, 10 etc) or can be set to RETRY_FOREVER - */ -#define RECONNECT_ATTEMPTS 5 -#define CONNECTION_STABLE_TIME (CLOCK_SECOND * 5) -#define NEW_CONFIG_WAIT_INTERVAL (CLOCK_SECOND * 20) -static struct timer connection_life; -static uint8_t connect_attempt; -/*---------------------------------------------------------------------------*/ -/* Various states */ -static uint8_t state; -#define MQTT_CLIENT_STATE_INIT 0 -#define MQTT_CLIENT_STATE_REGISTERED 1 -#define MQTT_CLIENT_STATE_CONNECTING 2 -#define MQTT_CLIENT_STATE_CONNECTED 3 -#define MQTT_CLIENT_STATE_PUBLISHING 4 -#define MQTT_CLIENT_STATE_DISCONNECTED 5 -#define MQTT_CLIENT_STATE_NEWCONFIG 6 -#define MQTT_CLIENT_STATE_CONFIG_ERROR 0xFE -#define MQTT_CLIENT_STATE_ERROR 0xFF -/*---------------------------------------------------------------------------*/ -/* Maximum TCP segment size for outgoing segments of our socket */ -#define MQTT_CLIENT_MAX_SEGMENT_SIZE 32 -/*---------------------------------------------------------------------------*/ -/* - * Buffers for Client ID and Topic. - * Make sure they are large enough to hold the entire respective string - * - * d:quickstart:status:EUI64 is 32 bytes long - * iot-2/evt/status/fmt/json is 25 bytes - * We also need space for the null termination - */ -#define BUFFER_SIZE 64 -static char client_id[BUFFER_SIZE]; -static char pub_topic[BUFFER_SIZE]; -static char sub_topic[BUFFER_SIZE]; -/*---------------------------------------------------------------------------*/ -/* - * The main MQTT buffers. - * We will need to increase if we start publishing more data. - */ -#define APP_BUFFER_SIZE 512 -static struct mqtt_connection conn; -static char app_buffer[APP_BUFFER_SIZE]; -/*---------------------------------------------------------------------------*/ -#define QUICKSTART "quickstart" -/*---------------------------------------------------------------------------*/ -static struct mqtt_message *msg_ptr = 0; -static struct etimer publish_periodic_timer; -static struct ctimer ct; -static char *buf_ptr; -static uint16_t seq_nr_value = 0; -/*---------------------------------------------------------------------------*/ -static uip_ip6addr_t def_route; -/*---------------------------------------------------------------------------*/ -/* Parent RSSI functionality */ -extern int def_rt_rssi; -/*---------------------------------------------------------------------------*/ -const static web_demo_sensor_reading_t *reading; -/*---------------------------------------------------------------------------*/ -mqtt_client_config_t *conf; -/*---------------------------------------------------------------------------*/ -PROCESS(mqtt_client_process, "CC13xx/CC26xx MQTT Client"); -/*---------------------------------------------------------------------------*/ -static void -publish_led_off(void *d) -{ - leds_off(WEB_DEMO_STATUS_LED); -} -/*---------------------------------------------------------------------------*/ -static void -new_net_config(void) -{ - /* - * We got a new configuration over the net. - * - * Disconnect from the current broker and stop the periodic timer. - * - * When the source of the new configuration is done, we will get notified - * via an event. - */ - if(state == MQTT_CLIENT_STATE_NEWCONFIG) { - return; - } - - state = MQTT_CLIENT_STATE_NEWCONFIG; - - etimer_stop(&publish_periodic_timer); - mqtt_disconnect(&conn); -} -/*---------------------------------------------------------------------------*/ -static int -org_id_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - if(key_len != strlen("org_id") || - strncasecmp(key, "org_id", strlen("org_id")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - if(val_len > MQTT_CLIENT_CONFIG_ORG_ID_LEN) { - /* Ours but bad value */ - rv = HTTPD_SIMPLE_POST_HANDLER_ERROR; - } else { - memset(conf->org_id, 0, MQTT_CLIENT_CONFIG_ORG_ID_LEN); - memcpy(conf->org_id, val, val_len); - - rv = HTTPD_SIMPLE_POST_HANDLER_OK; - } - - new_net_config(); - - return rv; -} -/*---------------------------------------------------------------------------*/ -static int -type_id_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - if(key_len != strlen("type_id") || - strncasecmp(key, "type_id", strlen("type_id")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - if(val_len > MQTT_CLIENT_CONFIG_TYPE_ID_LEN) { - /* Ours but bad value */ - rv = HTTPD_SIMPLE_POST_HANDLER_ERROR; - } else { - memset(conf->type_id, 0, MQTT_CLIENT_CONFIG_TYPE_ID_LEN); - memcpy(conf->type_id, val, val_len); - - rv = HTTPD_SIMPLE_POST_HANDLER_OK; - } - - new_net_config(); - - return rv; -} -/*---------------------------------------------------------------------------*/ -static int -event_type_id_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - if(key_len != strlen("event_type_id") || - strncasecmp(key, "event_type_id", strlen("event_type_id")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - if(val_len > MQTT_CLIENT_CONFIG_EVENT_TYPE_ID_LEN) { - /* Ours but bad value */ - rv = HTTPD_SIMPLE_POST_HANDLER_ERROR; - } else { - memset(conf->event_type_id, 0, MQTT_CLIENT_CONFIG_EVENT_TYPE_ID_LEN); - memcpy(conf->event_type_id, val, val_len); - - rv = HTTPD_SIMPLE_POST_HANDLER_OK; - } - - new_net_config(); - - return rv; -} -/*---------------------------------------------------------------------------*/ -static int -cmd_type_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - if(key_len != strlen("cmd_type") || - strncasecmp(key, "cmd_type", strlen("cmd_type")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - if(val_len > MQTT_CLIENT_CONFIG_CMD_TYPE_LEN) { - /* Ours but bad value */ - rv = HTTPD_SIMPLE_POST_HANDLER_ERROR; - } else { - memset(conf->cmd_type, 0, MQTT_CLIENT_CONFIG_CMD_TYPE_LEN); - memcpy(conf->cmd_type, val, val_len); - - rv = HTTPD_SIMPLE_POST_HANDLER_OK; - } - - new_net_config(); - - return rv; -} -/*---------------------------------------------------------------------------*/ -static int -auth_token_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - if(key_len != strlen("auth_token") || - strncasecmp(key, "auth_token", strlen("auth_token")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - if(val_len > MQTT_CLIENT_CONFIG_AUTH_TOKEN_LEN) { - /* Ours but bad value */ - rv = HTTPD_SIMPLE_POST_HANDLER_ERROR; - } else { - memset(conf->auth_token, 0, MQTT_CLIENT_CONFIG_AUTH_TOKEN_LEN); - memcpy(conf->auth_token, val, val_len); - - rv = HTTPD_SIMPLE_POST_HANDLER_OK; - } - - new_net_config(); - - return rv; -} -/*---------------------------------------------------------------------------*/ -static int -interval_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = 0; - - if(key_len != strlen("interval") || - strncasecmp(key, "interval", strlen("interval")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - rv = atoi(val); - - if(rv < MQTT_CLIENT_PUBLISH_INTERVAL_MIN || - rv > MQTT_CLIENT_PUBLISH_INTERVAL_MAX) { - return HTTPD_SIMPLE_POST_HANDLER_ERROR; - } - - conf->pub_interval = rv * CLOCK_SECOND; - - return HTTPD_SIMPLE_POST_HANDLER_OK; -} -/*---------------------------------------------------------------------------*/ -static int -port_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = 0; - - if(key_len != strlen("broker_port") || - strncasecmp(key, "broker_port", strlen("broker_port")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - rv = atoi(val); - - if(rv <= 65535 && rv > 0) { - conf->broker_port = rv; - } else { - return HTTPD_SIMPLE_POST_HANDLER_ERROR; - } - - new_net_config(); - - return HTTPD_SIMPLE_POST_HANDLER_OK; -} -/*---------------------------------------------------------------------------*/ -static int -ip_addr_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - - if(key_len != strlen("broker_ip") || - strncasecmp(key, "broker_ip", strlen("broker_ip")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - if(val_len > MQTT_CLIENT_CONFIG_IP_ADDR_STR_LEN) { - /* Ours but bad value */ - rv = HTTPD_SIMPLE_POST_HANDLER_ERROR; - } else { - memset(conf->broker_ip, 0, MQTT_CLIENT_CONFIG_IP_ADDR_STR_LEN); - memcpy(conf->broker_ip, val, val_len); - - rv = HTTPD_SIMPLE_POST_HANDLER_OK; - } - - new_net_config(); - - return rv; -} -/*---------------------------------------------------------------------------*/ -static int -reconnect_post_handler(char *key, int key_len, char *val, int val_len) -{ - if(key_len != strlen("reconnect") || - strncasecmp(key, "reconnect", strlen("reconnect")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - new_net_config(); - - return HTTPD_SIMPLE_POST_HANDLER_OK; -} -/*---------------------------------------------------------------------------*/ -HTTPD_SIMPLE_POST_HANDLER(org_id, org_id_post_handler); -HTTPD_SIMPLE_POST_HANDLER(type_id, type_id_post_handler); -HTTPD_SIMPLE_POST_HANDLER(event_type_id, event_type_id_post_handler); -HTTPD_SIMPLE_POST_HANDLER(cmd_type, cmd_type_post_handler); -HTTPD_SIMPLE_POST_HANDLER(auth_token, auth_token_post_handler); -HTTPD_SIMPLE_POST_HANDLER(ip_addr, ip_addr_post_handler); -HTTPD_SIMPLE_POST_HANDLER(port, port_post_handler); -HTTPD_SIMPLE_POST_HANDLER(interval, interval_post_handler); -HTTPD_SIMPLE_POST_HANDLER(reconnect, reconnect_post_handler); -/*---------------------------------------------------------------------------*/ -static void -pub_handler(const char *topic, uint16_t topic_len, const uint8_t *chunk, - uint16_t chunk_len) -{ - DBG("Pub Handler: topic='%s' (len=%u), chunk_len=%u\n", topic, topic_len, - chunk_len); - - /* If we don't like the length, ignore */ - if(topic_len != 23 || chunk_len != 1) { - printf("Incorrect topic or chunk len. Ignored\n"); - return; - } - - /* If the format != json, ignore */ - if(strncmp(&topic[topic_len - 4], "json", 4) != 0) { - printf("Incorrect format\n"); - } - - if(strncmp(&topic[10], "leds", 4) == 0) { - if(chunk[0] == '1') { - leds_on(LEDS_RED); - } else if(chunk[0] == '0') { - leds_off(LEDS_RED); - } - return; - } - -#if BOARD_SENSORTAG - if(strncmp(&topic[10], "buzz", 4) == 0) { - if(chunk[0] == '1') { - buzzer_start(1000); - } else if(chunk[0] == '0') { - buzzer_stop(); - } - return; - } -#endif -} -/*---------------------------------------------------------------------------*/ -static void -mqtt_event(struct mqtt_connection *m, mqtt_event_t event, void *data) -{ - switch(event) { - case MQTT_EVENT_CONNECTED: { - DBG("APP - Application has a MQTT connection\n"); - timer_set(&connection_life, CONNECTION_STABLE_TIME); - state = MQTT_CLIENT_STATE_CONNECTED; - break; - } - case MQTT_EVENT_DISCONNECTED: { - DBG("APP - MQTT Disconnect. Reason %u\n", *((mqtt_event_t *)data)); - - /* Do nothing if the disconnect was the result of an incoming config */ - if(state != MQTT_CLIENT_STATE_NEWCONFIG) { - state = MQTT_CLIENT_STATE_DISCONNECTED; - process_poll(&mqtt_client_process); - } - break; - } - case MQTT_EVENT_PUBLISH: { - msg_ptr = data; - - /* Implement first_flag in publish message? */ - if(msg_ptr->first_chunk) { - msg_ptr->first_chunk = 0; - DBG("APP - Application received a publish on topic '%s'. Payload " - "size is %i bytes. Content:\n\n", - msg_ptr->topic, msg_ptr->payload_length); - } - - pub_handler(msg_ptr->topic, strlen(msg_ptr->topic), msg_ptr->payload_chunk, - msg_ptr->payload_length); - break; - } - case MQTT_EVENT_SUBACK: { - DBG("APP - Application is subscribed to topic successfully\n"); - break; - } - case MQTT_EVENT_UNSUBACK: { - DBG("APP - Application is unsubscribed to topic successfully\n"); - break; - } - case MQTT_EVENT_PUBACK: { - DBG("APP - Publishing complete.\n"); - break; - } - default: - DBG("APP - Application got a unhandled MQTT event: %i\n", event); - break; - } -} -/*---------------------------------------------------------------------------*/ -static int -construct_pub_topic(void) -{ - int len = snprintf(pub_topic, BUFFER_SIZE, "iot-2/evt/%s/fmt/json", - conf->event_type_id); - - /* len < 0: Error. Len >= BUFFER_SIZE: Buffer too small */ - if(len < 0 || len >= BUFFER_SIZE) { - printf("Pub Topic: %d, Buffer %d\n", len, BUFFER_SIZE); - return 0; - } - - return 1; -} -/*---------------------------------------------------------------------------*/ -static int -construct_sub_topic(void) -{ - int len = snprintf(sub_topic, BUFFER_SIZE, "iot-2/cmd/%s/fmt/json", - conf->cmd_type); - - /* len < 0: Error. Len >= BUFFER_SIZE: Buffer too small */ - if(len < 0 || len >= BUFFER_SIZE) { - printf("Sub Topic: %d, Buffer %d\n", len, BUFFER_SIZE); - return 0; - } - - return 1; -} -/*---------------------------------------------------------------------------*/ -static int -construct_client_id(void) -{ - int len = snprintf(client_id, BUFFER_SIZE, "d:%s:%s:%02x%02x%02x%02x%02x%02x", - conf->org_id, conf->type_id, - linkaddr_node_addr.u8[0], linkaddr_node_addr.u8[1], - linkaddr_node_addr.u8[2], linkaddr_node_addr.u8[5], - linkaddr_node_addr.u8[6], linkaddr_node_addr.u8[7]); - - /* len < 0: Error. Len >= BUFFER_SIZE: Buffer too small */ - if(len < 0 || len >= BUFFER_SIZE) { - printf("Client ID: %d, Buffer %d\n", len, BUFFER_SIZE); - return 0; - } - - return 1; -} -/*---------------------------------------------------------------------------*/ -static void -update_config(void) -{ - if(construct_client_id() == 0) { - /* Fatal error. Client ID larger than the buffer */ - state = MQTT_CLIENT_STATE_CONFIG_ERROR; - return; - } - - if(construct_sub_topic() == 0) { - /* Fatal error. Topic larger than the buffer */ - state = MQTT_CLIENT_STATE_CONFIG_ERROR; - return; - } - - if(construct_pub_topic() == 0) { - /* Fatal error. Topic larger than the buffer */ - state = MQTT_CLIENT_STATE_CONFIG_ERROR; - return; - } - - /* Reset the counter */ - seq_nr_value = 0; - - state = MQTT_CLIENT_STATE_INIT; - - /* - * Schedule next timer event ASAP - * - * If we entered an error state then we won't do anything when it fires. - * - * Since the error at this stage is a config error, we will only exit this - * error state if we get a new config. - */ - etimer_set(&publish_periodic_timer, 0); - - return; -} -/*---------------------------------------------------------------------------*/ -static int -init_config() -{ - /* Populate configuration with default values */ - memset(conf, 0, sizeof(mqtt_client_config_t)); - - memcpy(conf->org_id, WEB_DEMO_DEFAULT_ORG_ID, 11); - memcpy(conf->type_id, WEB_DEMO_DEFAULT_TYPE_ID, 7); - memcpy(conf->event_type_id, WEB_DEMO_DEFAULT_EVENT_TYPE_ID, 7); - memcpy(conf->broker_ip, broker_ip, strlen(broker_ip)); - memcpy(conf->cmd_type, WEB_DEMO_DEFAULT_SUBSCRIBE_CMD_TYPE, 1); - - conf->broker_port = WEB_DEMO_DEFAULT_BROKER_PORT; - conf->pub_interval = WEB_DEMO_DEFAULT_PUBLISH_INTERVAL; - - return 1; -} -/*---------------------------------------------------------------------------*/ -static void -register_http_post_handlers(void) -{ - httpd_simple_register_post_handler(&org_id_handler); - httpd_simple_register_post_handler(&type_id_handler); - httpd_simple_register_post_handler(&event_type_id_handler); - httpd_simple_register_post_handler(&cmd_type_handler); - httpd_simple_register_post_handler(&auth_token_handler); - httpd_simple_register_post_handler(&interval_handler); - httpd_simple_register_post_handler(&port_handler); - httpd_simple_register_post_handler(&ip_addr_handler); - httpd_simple_register_post_handler(&reconnect_handler); -} -/*---------------------------------------------------------------------------*/ -static void -subscribe(void) -{ - /* Publish MQTT topic in IBM quickstart format */ - mqtt_status_t status; - - status = mqtt_subscribe(&conn, NULL, sub_topic, MQTT_QOS_LEVEL_0); - - DBG("APP - Subscribing!\n"); - if(status == MQTT_STATUS_OUT_QUEUE_FULL) { - DBG("APP - Tried to subscribe but command queue was full!\n"); - } -} -/*---------------------------------------------------------------------------*/ -static void -publish(void) -{ - /* Publish MQTT topic in IBM quickstart format */ - int len; - int remaining = APP_BUFFER_SIZE; - char def_rt_str[64]; - - seq_nr_value++; - - buf_ptr = app_buffer; - - len = snprintf(buf_ptr, remaining, - "{" - "\"d\":{" - "\"myName\":\"%s\"," - "\"Seq #\":%d," - "\"Uptime (sec)\":%lu", - BOARD_STRING, seq_nr_value, clock_seconds()); - - if(len < 0 || len >= remaining) { - printf("Buffer too short. Have %d, need %d + \\0\n", remaining, len); - return; - } - - remaining -= len; - buf_ptr += len; - - /* Put our Default route's string representation in a buffer */ - memset(def_rt_str, 0, sizeof(def_rt_str)); - web_demo_ipaddr_sprintf(def_rt_str, sizeof(def_rt_str), - uip_ds6_defrt_choose()); - - len = snprintf(buf_ptr, remaining, ",\"Def Route\":\"%s\",\"RSSI (dBm)\":%d", - def_rt_str, def_rt_rssi); - - if(len < 0 || len >= remaining) { - printf("Buffer too short. Have %d, need %d + \\0\n", remaining, len); - return; - } - remaining -= len; - buf_ptr += len; - - memcpy(&def_route, uip_ds6_defrt_choose(), sizeof(uip_ip6addr_t)); - - for(reading = web_demo_sensor_first(); - reading != NULL; reading = reading->next) { - if(reading->publish && reading->raw != -1) { - len = snprintf(buf_ptr, remaining, - ",\"%s (%s)\":%s", reading->descr, reading->units, - reading->converted); - - if(len < 0 || len >= remaining) { - printf("Buffer too short. Have %d, need %d + \\0\n", remaining, len); - return; - } - remaining -= len; - buf_ptr += len; - } - } - - len = snprintf(buf_ptr, remaining, "}}"); - - if(len < 0 || len >= remaining) { - printf("Buffer too short. Have %d, need %d + \\0\n", remaining, len); - return; - } - - mqtt_publish(&conn, NULL, pub_topic, (uint8_t *)app_buffer, - strlen(app_buffer), MQTT_QOS_LEVEL_0, MQTT_RETAIN_OFF); - - DBG("APP - Publish!\n"); -} -/*---------------------------------------------------------------------------*/ -static void -connect_to_broker(void) -{ - /* Connect to MQTT server */ - mqtt_status_t conn_attempt_result = mqtt_connect(&conn, conf->broker_ip, - conf->broker_port, - conf->pub_interval * 3); - - if(conn_attempt_result == MQTT_STATUS_OK) { - state = MQTT_CLIENT_STATE_CONNECTING; - } else { - state = MQTT_CLIENT_STATE_CONFIG_ERROR; - } -} -/*---------------------------------------------------------------------------*/ -static void -state_machine(void) -{ - switch(state) { - case MQTT_CLIENT_STATE_INIT: - /* If we have just been configured register MQTT connection */ - mqtt_register(&conn, &mqtt_client_process, client_id, mqtt_event, - MQTT_CLIENT_MAX_SEGMENT_SIZE); - - /* - * If we are not using the quickstart service (thus we are an IBM - * registered device), we need to provide user name and password - */ - if(strncasecmp(conf->org_id, QUICKSTART, strlen(conf->org_id)) != 0) { - if(strlen(conf->auth_token) == 0) { - printf("User name set, but empty auth token\n"); - state = MQTT_CLIENT_STATE_ERROR; - break; - } else { - mqtt_set_username_password(&conn, "use-token-auth", - conf->auth_token); - } - } - - /* _register() will set auto_reconnect. We don't want that. */ - conn.auto_reconnect = 0; - connect_attempt = 1; - - /* - * Wipe out the default route so we'll republish it every time we switch to - * a new broker - */ - memset(&def_route, 0, sizeof(def_route)); - - state = MQTT_CLIENT_STATE_REGISTERED; - DBG("Init\n"); - /* Continue */ - case MQTT_CLIENT_STATE_REGISTERED: - if(uip_ds6_get_global(ADDR_PREFERRED) != NULL) { - /* Registered and with a public IP. Connect */ - DBG("Registered. Connect attempt %u\n", connect_attempt); - connect_to_broker(); - } - etimer_set(&publish_periodic_timer, WEB_DEMO_NET_CONNECT_PERIODIC); - return; - break; - case MQTT_CLIENT_STATE_CONNECTING: - leds_on(WEB_DEMO_STATUS_LED); - ctimer_set(&ct, CONNECTING_LED_DURATION, publish_led_off, NULL); - /* Not connected yet. Wait */ - DBG("Connecting (%u)\n", connect_attempt); - break; - case MQTT_CLIENT_STATE_CONNECTED: - /* Don't subscribe unless we are a registered device */ - if(strncasecmp(conf->org_id, QUICKSTART, strlen(conf->org_id)) == 0) { - DBG("Using 'quickstart': Skipping subscribe\n"); - state = MQTT_CLIENT_STATE_PUBLISHING; - } - /* Continue */ - case MQTT_CLIENT_STATE_PUBLISHING: - /* If the timer expired, the connection is stable. */ - if(timer_expired(&connection_life)) { - /* - * Intentionally using 0 here instead of 1: We want RECONNECT_ATTEMPTS - * attempts if we disconnect after a successful connect - */ - connect_attempt = 0; - } - - if(mqtt_ready(&conn) && conn.out_buffer_sent) { - /* Connected. Publish */ - if(state == MQTT_CLIENT_STATE_CONNECTED) { - subscribe(); - state = MQTT_CLIENT_STATE_PUBLISHING; - } else { - leds_on(WEB_DEMO_STATUS_LED); - ctimer_set(&ct, PUBLISH_LED_ON_DURATION, publish_led_off, NULL); - publish(); - } - etimer_set(&publish_periodic_timer, conf->pub_interval); - - DBG("Publishing\n"); - /* Return here so we don't end up rescheduling the timer */ - return; - } else { - /* - * Our publish timer fired, but some MQTT packet is already in flight - * (either not sent at all, or sent but not fully ACKd). - * - * This can mean that we have lost connectivity to our broker or that - * simply there is some network delay. In both cases, we refuse to - * trigger a new message and we wait for TCP to either ACK the entire - * packet after retries, or to timeout and notify us. - */ - DBG("Publishing... (MQTT state=%d, q=%u)\n", conn.state, - conn.out_queue_full); - } - break; - case MQTT_CLIENT_STATE_DISCONNECTED: - DBG("Disconnected\n"); - if(connect_attempt < RECONNECT_ATTEMPTS || - RECONNECT_ATTEMPTS == RETRY_FOREVER) { - /* Disconnect and backoff */ - clock_time_t interval; - mqtt_disconnect(&conn); - connect_attempt++; - - interval = connect_attempt < 3 ? RECONNECT_INTERVAL << connect_attempt : - RECONNECT_INTERVAL << 3; - - DBG("Disconnected. Attempt %u in %lu ticks\n", connect_attempt, interval); - - etimer_set(&publish_periodic_timer, interval); - - state = MQTT_CLIENT_STATE_REGISTERED; - return; - } else { - /* Max reconnect attempts reached. Enter error state */ - state = MQTT_CLIENT_STATE_ERROR; - DBG("Aborting connection after %u attempts\n", connect_attempt - 1); - } - break; - case MQTT_CLIENT_STATE_NEWCONFIG: - /* Only update config after we have disconnected or in the case of an error */ - if(conn.state == MQTT_CONN_STATE_NOT_CONNECTED || conn.state == MQTT_CONN_STATE_ERROR) { - update_config(); - DBG("New config\n"); - - /* update_config() scheduled next pass. Return */ - return; - } - break; - case MQTT_CLIENT_STATE_CONFIG_ERROR: - /* Idle away. The only way out is a new config */ - printf("Bad configuration.\n"); - return; - case MQTT_CLIENT_STATE_ERROR: - default: - leds_on(WEB_DEMO_STATUS_LED); - /* - * 'default' should never happen. - * - * If we enter here it's because of some error. Stop timers. The only thing - * that can bring us out is a new config event - */ - printf("Default case: State=0x%02x\n", state); - return; - } - - /* If we didn't return so far, reschedule ourselves */ - etimer_set(&publish_periodic_timer, STATE_MACHINE_PERIODIC); -} -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(mqtt_client_process, ev, data) -{ - - PROCESS_BEGIN(); - - printf("CC13xx/CC26xx MQTT Client Process\n"); - - conf = &web_demo_config.mqtt_config; - if(init_config() != 1) { - PROCESS_EXIT(); - } - - register_http_post_handlers(); - - update_config(); - - /* Main loop */ - while(1) { - - PROCESS_YIELD(); - - if(ev == button_hal_release_event) { - button_hal_button_t *btn = (button_hal_button_t *)data; - - if(btn->unique_id == WEB_DEMO_MQTT_PUBLISH_TRIGGER) { - if(state == MQTT_CLIENT_STATE_ERROR) { - connect_attempt = 1; - state = MQTT_CLIENT_STATE_REGISTERED; - } - } - } - - if(ev == httpd_simple_event_new_config) { - /* - * Schedule next pass in a while. When HTTPD sends us this event, it is - * also in the process of sending the config page. Wait a little before - * reconnecting, so as to not cause congestion. - */ - etimer_set(&publish_periodic_timer, NEW_CONFIG_WAIT_INTERVAL); - } - - if((ev == PROCESS_EVENT_TIMER && data == &publish_periodic_timer) || - ev == PROCESS_EVENT_POLL || - ev == web_demo_publish_event || - (ev == button_hal_release_event && - ((button_hal_button_t *)data)->unique_id == - WEB_DEMO_MQTT_PUBLISH_TRIGGER)) { - state_machine(); - } - - if(ev == web_demo_load_config_defaults) { - init_config(); - etimer_set(&publish_periodic_timer, NEW_CONFIG_WAIT_INTERVAL); - } - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ -/** - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/mqtt-client.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/mqtt-client.h deleted file mode 100644 index d37c31fbc..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/mqtt-client.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * Header file for the CC13xx/CC26xx web demo MQTT client functionality - */ -/*---------------------------------------------------------------------------*/ -#ifndef MQTT_CLIENT_H_ -#define MQTT_CLIENT_H_ -/*---------------------------------------------------------------------------*/ -#define MQTT_CLIENT_CONFIG_ORG_ID_LEN 32 -#define MQTT_CLIENT_CONFIG_TYPE_ID_LEN 32 -#define MQTT_CLIENT_CONFIG_AUTH_TOKEN_LEN 32 -#define MQTT_CLIENT_CONFIG_EVENT_TYPE_ID_LEN 32 -#define MQTT_CLIENT_CONFIG_CMD_TYPE_LEN 8 -#define MQTT_CLIENT_CONFIG_IP_ADDR_STR_LEN 64 -/*---------------------------------------------------------------------------*/ -#define MQTT_CLIENT_PUBLISH_INTERVAL_MAX 86400 /* secs: 1 day */ -#define MQTT_CLIENT_PUBLISH_INTERVAL_MIN 5 /* secs */ -/*---------------------------------------------------------------------------*/ -PROCESS_NAME(mqtt_client_process); -/*---------------------------------------------------------------------------*/ -/** - * \brief Data structure declaration for the MQTT client configuration - */ -typedef struct mqtt_client_config { - char org_id[MQTT_CLIENT_CONFIG_ORG_ID_LEN]; - char type_id[MQTT_CLIENT_CONFIG_TYPE_ID_LEN]; - char auth_token[MQTT_CLIENT_CONFIG_AUTH_TOKEN_LEN]; - char event_type_id[MQTT_CLIENT_CONFIG_EVENT_TYPE_ID_LEN]; - char broker_ip[MQTT_CLIENT_CONFIG_IP_ADDR_STR_LEN]; - char cmd_type[MQTT_CLIENT_CONFIG_CMD_TYPE_LEN]; - clock_time_t pub_interval; - uint16_t broker_port; -} mqtt_client_config_t; -/*---------------------------------------------------------------------------*/ -#endif /* MQTT_CLIENT_H_ */ -/*---------------------------------------------------------------------------*/ -/** - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.c deleted file mode 100644 index 564abe27d..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.c +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * A process which receives data over UART and transmits them over UDP - * to a pre-defined IPv6 address and port. It also listens on the same UDP - * port for messages, which it prints out over UART. - * - * For this example to work, you will have to modify the destination IPv6 - * address by adjusting the set_dest_addr() macro below. - * - * To listen on your linux or OS X box: - * nc -6ulkw 1 REMOTE_PORT - * - * (REMOTE_PORT should be the actual value of the define below, e.g. 7777) - * - * Once netcat is up and listening, type something to the CC13xx/CC26xx's terminal - * Bear in mind that the datagram will only be sent after a 0x0a (LF) char - * has been received. Therefore, if you are on Win, do NOT use PuTTY for - * this purpose, since it does not send 0x0a as part of the line end. On - * Win XP use hyperterm. On Win 7 use some other software (e.g. Tera Term, - * which can be configured to send CRLF on enter keystrokes). - * - * To send data in the other direction from your linux or OS X box: - * - * nc -6u \ REMOTE_PORT - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "sys/cc.h" -#include "sys/process.h" -#include "dev/serial-line.h" -#include "net/ipv6/uip.h" -#include "net/ipv6/uip-udp-packet.h" -#include "net/ipv6/uiplib.h" -/*---------------------------------------------------------------------------*/ -#include "uart0-arch.h" -/*---------------------------------------------------------------------------*/ -#include "net-uart.h" -#include "httpd-simple.h" -/*---------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -/*---------------------------------------------------------------------------*/ -#define DEBUG DEBUG_NONE -#include "net/ipv6/uip-debug.h" -/*---------------------------------------------------------------------------*/ -#define REMOTE_PORT 7777 -#define MAX_MSG_SIZE 100 - -#define set_dest_addr() uip_ip6addr(&remote_addr, \ - 0xBBBB, 0x0000, 0x0000, 0x0000, \ - 0x3E07, 0x54FF, 0xFE74, 0x4885); -/*---------------------------------------------------------------------------*/ -#define ADDRESS_CONVERSION_OK 1 -#define ADDRESS_CONVERSION_ERROR 0 -/*---------------------------------------------------------------------------*/ -static struct uip_udp_conn *udp_conn = NULL; - -static uint8_t buffer[MAX_MSG_SIZE]; -static uint8_t msg_len; -static uip_ip6addr_t remote_addr; -/*---------------------------------------------------------------------------*/ -#define IPV6_ADDR_STR_LEN 64 -/*---------------------------------------------------------------------------*/ -PROCESS(net_uart_process, "Net UART Process"); -/*---------------------------------------------------------------------------*/ -/* - * \brief Attempts to convert a string representation of an IPv6 address to a - * numeric one. - * \param buf The buffer with the string to be converted. - * \return ADDRESS_CONVERSION_OK or ADDRESS_CONVERSION_ERROR - * - * ToDo: Add support for NAT64 conversion in case the incoming address is a v4 - * This is now supported in the current master, so when we pull it in this will - * be very straightforward. - */ -static int -set_new_ip_address(char *buf) -{ - /* - * uiplib_ip6addrconv will immediately start writing into the supplied buffer - * even if it subsequently fails. Thus, pass an intermediate buffer - */ - uip_ip6addr_t tmp_addr; - - int rv = uiplib_ip6addrconv(buf, &tmp_addr); - - if(rv == ADDRESS_CONVERSION_OK) { - /* Conversion OK, copy to our main buffer */ - memcpy(&remote_addr, &tmp_addr, sizeof(remote_addr)); - - PRINTF("Updated remote address "); - PRINT6ADDR(&remote_addr); - PRINTF("\n"); - } - - return rv; -} -/*---------------------------------------------------------------------------*/ -static void -net_input(void) -{ - if(uip_newdata()) { - memset(buffer, 0, MAX_MSG_SIZE); - msg_len = MIN(uip_datalen(), MAX_MSG_SIZE - 1); - - /* Copy data */ - memcpy(buffer, uip_appdata, msg_len); - printf("%s", (char *)buffer); - } - - return; -} -/*---------------------------------------------------------------------------*/ -static void -release_uart(void) -{ - uart0_set_callback(NULL); -} -/*---------------------------------------------------------------------------*/ -static void -keep_uart_on(void) -{ - uart0_set_callback(serial_line_input_byte); -} -/*---------------------------------------------------------------------------*/ -static int -remote_port_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv; - - if(key_len != strlen("net_uart_port") || - strncasecmp(key, "net_uart_port", strlen("net_uart_port")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - rv = atoi(val); - - if(rv <= 65535 && rv > 0) { - web_demo_config.net_uart.remote_port = (uint16_t)rv; - } else { - return HTTPD_SIMPLE_POST_HANDLER_ERROR; - } - - return HTTPD_SIMPLE_POST_HANDLER_OK; -} -/*---------------------------------------------------------------------------*/ -static int -remote_ipv6_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - - if(key_len != strlen("net_uart_ip") || - strncasecmp(key, "net_uart_ip", strlen("net_uart_ip")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - if(val_len > IPV6_ADDR_STR_LEN) { - /* Ours but bad value */ - rv = HTTPD_SIMPLE_POST_HANDLER_ERROR; - } else { - if(set_new_ip_address(val)) { - memset(web_demo_config.net_uart.remote_address, 0, - NET_UART_IP_ADDR_STRLEN); - memcpy(web_demo_config.net_uart.remote_address, val, val_len); - rv = HTTPD_SIMPLE_POST_HANDLER_OK; - } - } - - return rv; -} -/*---------------------------------------------------------------------------*/ -static int -on_off_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv; - - if(key_len != strlen("net_uart_on") || - strncasecmp(key, "net_uart_on", strlen("net_uart_on")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - rv = atoi(val); - - /* Be pedantic: only accept 0 and 1, not just any non-zero value */ - if(rv == 0) { - web_demo_config.net_uart.enable = 0; - release_uart(); - } else if(rv == 1) { - web_demo_config.net_uart.enable = 1; - keep_uart_on(); - } else { - return HTTPD_SIMPLE_POST_HANDLER_ERROR; - } - - return HTTPD_SIMPLE_POST_HANDLER_OK; -} -/*---------------------------------------------------------------------------*/ -HTTPD_SIMPLE_POST_HANDLER(remote_port, remote_port_post_handler); -HTTPD_SIMPLE_POST_HANDLER(remote_ipv6, remote_ipv6_post_handler); -HTTPD_SIMPLE_POST_HANDLER(on_off, on_off_post_handler); -/*---------------------------------------------------------------------------*/ -static void -set_config_defaults(void) -{ - /* Set a hard-coded destination address to start with */ - set_dest_addr(); - - /* Set config defaults */ - web_demo_ipaddr_sprintf(web_demo_config.net_uart.remote_address, - NET_UART_IP_ADDR_STRLEN, &remote_addr); - web_demo_config.net_uart.remote_port = REMOTE_PORT; - web_demo_config.net_uart.enable = 1; -} -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(net_uart_process, ev, data) -{ - PROCESS_BEGIN(); - - printf("CC13xx/CC26xx Net UART Process\n"); - - set_config_defaults(); - - udp_conn = udp_new(NULL, UIP_HTONS(0), NULL); - udp_bind(udp_conn, UIP_HTONS(REMOTE_PORT)); - - if(udp_conn == NULL) { - printf("No UDP connection available, exiting the process!\n"); - PROCESS_EXIT(); - } - - httpd_simple_register_post_handler(&remote_port_handler); - httpd_simple_register_post_handler(&remote_ipv6_handler); - httpd_simple_register_post_handler(&on_off_handler); - - while(1) { - - PROCESS_YIELD(); - - if(ev == serial_line_event_message) { - /* - * If the message contains a new IP address, save it and go back to - * waiting. - */ - if(set_new_ip_address((char *)data) == ADDRESS_CONVERSION_ERROR) { - /* Not an IP address in the message. Send to current destination */ - memset(buffer, 0, MAX_MSG_SIZE); - - /* We need to add a line feed, thus never fill the entire buffer */ - msg_len = MIN(strlen(data), MAX_MSG_SIZE - 1); - memcpy(buffer, data, msg_len); - - /* Add a line feed */ - buffer[msg_len] = 0x0A; - msg_len++; - - uip_udp_packet_sendto( - udp_conn, buffer, msg_len, &remote_addr, - UIP_HTONS(web_demo_config.net_uart.remote_port)); - } - } else if(ev == tcpip_event) { - net_input(); - } else if(ev == web_demo_config_loaded_event) { - /* - * New config. Check if it's possible to update the remote address. - * The port will have been updated already - */ - set_new_ip_address(web_demo_config.net_uart.remote_address); - - if(web_demo_config.net_uart.enable == 1) { - keep_uart_on(); - } - } else if(ev == web_demo_load_config_defaults) { - set_config_defaults(); - } - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ -/** - * @} - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.h deleted file mode 100644 index 362bc79ff..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/net-uart.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -#ifndef NET_UART_H_ -#define NET_UART_H_ -/*---------------------------------------------------------------------------*/ -#include "net/ipv6/uip.h" -/*---------------------------------------------------------------------------*/ -#include -/*---------------------------------------------------------------------------*/ -#define NET_UART_IP_ADDR_STRLEN 64 -/*---------------------------------------------------------------------------*/ -PROCESS_NAME(net_uart_process); -/*---------------------------------------------------------------------------*/ -typedef struct net_uart_config_s { - char remote_address[NET_UART_IP_ADDR_STRLEN]; - uint16_t remote_port; - uint8_t enable; -} net_uart_config_t; -/*---------------------------------------------------------------------------*/ -#endif /* NET_UART_H_ */ -/*---------------------------------------------------------------------------*/ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/project-conf.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/project-conf.h deleted file mode 100644 index 06cd4ed09..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/project-conf.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -#ifndef PROJECT_CONF_H_ -#define PROJECT_CONF_H_ -/*---------------------------------------------------------------------------*/ -/* Platform configuration */ -#define BOARD_CONF_SENSORS_DISABLE 1 -#define WATCHDOG_CONF_DISABLE 1 -/*---------------------------------------------------------------------------*/ -/* Change to match your configuration */ -#define IEEE802154_CONF_PANID 0xABCD -#define IEEE802154_CONF_DEFAULT_CHANNEL 25 -#define RF_CONF_MODE RF_MODE_2_4_GHZ -#define RF_CONF_BLE_BEACON_ENABLE 1 -/*---------------------------------------------------------------------------*/ -/* TI drivers configuration */ -#define TI_SPI_CONF_ENABLE 1 -#define TI_I2C_CONF_ENABLE 0 -/*---------------------------------------------------------------------------*/ - -/* Enable TCP */ -#define UIP_CONF_TCP 1 - -/* Enable/Disable Components of this Demo */ -#define WEB_DEMO_CONF_MQTT_CLIENT 1 -#define WEB_DEMO_CONF_6LBR_CLIENT ROUTING_CONF_RPL_CLASSIC -#define WEB_DEMO_CONF_COAP_SERVER 1 -#define WEB_DEMO_CONF_NET_UART 1 - -/* - * ADC sensor functionality. To test this, an external voltage source should be - * connected to DIO23 - * Enable/Disable DIO23 ADC reading by setting WEB_DEMO_CONF_ADC_DEMO - */ -#define WEB_DEMO_CONF_ADC_DEMO 0 -/*---------------------------------------------------------------------------*/ -/* - * Change to 1 if you are using an older CC2650 Sensortag (look for Rev: 1.2 - * printed on the PCB, or for a sticker reading "HW Rev 1.2.0"). - * - * This may be the case if you are getting this error: - * "Could not open flash to load config" - * when your sensortag is starting up. - */ -#define SENSORTAG_CC2650_REV_1_2_0 0 -/*---------------------------------------------------------------------------*/ -/* Enable the ROM bootloader */ -#define ROM_BOOTLOADER_ENABLE 1 -/*---------------------------------------------------------------------------*/ -/* - * Shrink the size of the uIP buffer, routing table and ND cache. - * Set the TCP MSS - */ -#define UIP_CONF_BUFFER_SIZE 500 -#define NETSTACK_MAX_ROUTE_ENTRIES 5 -#define NBR_TABLE_CONF_MAX_NEIGHBORS 5 -#define UIP_CONF_TCP_MSS 128 -/*---------------------------------------------------------------------------*/ -#endif /* PROJECT_CONF_H_ */ -/*---------------------------------------------------------------------------*/ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-ble-advd.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-ble-advd.c deleted file mode 100644 index 8c79067d3..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-ble-advd.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. - */ -/*---------------------------------------------------------------------------*/ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * CoAP resource to start/stop/configure BLE advertisements - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "net/app-layer/coap/coap.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include "rf/ble-beacond.h" -/*---------------------------------------------------------------------------*/ -#include -#include -/*---------------------------------------------------------------------------*/ -#define BLE_NAME_BUF_LEN 32 -/*---------------------------------------------------------------------------*/ -const char *forbidden_payload = "Name to advertise unspecified.\n" - "Use name= in the request"; -/*---------------------------------------------------------------------------*/ -static void -res_ble_post_put_handler(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - size_t len = 0; - const char *text = NULL; - char name[BLE_NAME_BUF_LEN]; - int success = 0; - int rv; - - memset(name, 0, BLE_NAME_BUF_LEN); - - len = coap_get_post_variable(request, "name", &text); - - if(len > 0 && len < BLE_NAME_BUF_LEN) { - memcpy(name, text, len); - rf_ble_beacond_config(0, name); - success = 1; - } - - len = coap_get_post_variable(request, "interval", &text); - - rv = atoi(text); - - if(rv > 0) { - rf_ble_beacond_config((clock_time_t)(rv * CLOCK_SECOND), NULL); - success = 1; - } - - len = coap_get_post_variable(request, "mode", &text); - - if(len) { - if(strncmp(text, "on", len) == 0) { - if(rf_ble_beacond_start()) { - success = 1; - } else { - coap_set_status_code(response, FORBIDDEN_4_03); - coap_set_payload(response, forbidden_payload, - strlen(forbidden_payload)); - return; - } - } else if(strncmp(text, "off", len) == 0) { - rf_ble_beacond_stop(); - success = 1; - } else { - success = 0; - } - } - - if(!success) { - coap_set_status_code(response, BAD_REQUEST_4_00); - } -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_ble_advd, - "title=\"BLE advd config: POST/PUT name=&mode=on|off" - "&interval=\";rt=\"Control\"", - NULL, - res_ble_post_put_handler, - res_ble_post_put_handler, - NULL); -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-device.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-device.c deleted file mode 100644 index a0485867b..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-device.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * CoAP resource handler for CC13xx/CC26xx software and hardware version - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "sys/clock.h" -#include "net/app-layer/coap/coap.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include -#include DeviceFamily_constructPath(driverlib/chipinfo.h) -/*---------------------------------------------------------------------------*/ -#include "web-demo.h" -#include "coap-server.h" -/*---------------------------------------------------------------------------*/ -#include -#include -/*---------------------------------------------------------------------------*/ -static const char * -detect_chip(void) -{ - switch(ChipInfo_GetChipType()) { - case CHIP_TYPE_CC1310: return "CC1310"; - case CHIP_TYPE_CC1350: return "CC1350"; - case CHIP_TYPE_CC2620: return "CC2620"; - case CHIP_TYPE_CC2630: return "CC2630"; - case CHIP_TYPE_CC2640: return "CC2640"; - case CHIP_TYPE_CC2650: return "CC2650"; - case CHIP_TYPE_CC2642: return "CC2642"; - case CHIP_TYPE_CC2652: return "CC2652"; - case CHIP_TYPE_CC1312: return "CC1312"; - case CHIP_TYPE_CC1352: return "CC1352"; - case CHIP_TYPE_CC1352P: return "CC1352P"; - default: return "Unknown"; - } -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_hw(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - const char *chip = detect_chip(); - - coap_get_header_accept(request, &accept); - - if(accept == -1 || accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "%s on %s", BOARD_STRING, - chip); - - coap_set_payload(response, (uint8_t *)buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "{\"HW Ver\":\"%s on %s\"}", - BOARD_STRING, chip); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_XML) { - coap_set_header_content_format(response, APPLICATION_XML); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, - "", BOARD_STRING, - chip); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, coap_server_supported_msg, - strlen(coap_server_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_sw(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - - coap_get_header_accept(request, &accept); - - if(accept == -1 || accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "%s", CONTIKI_VERSION_STRING); - - coap_set_payload(response, (uint8_t *)buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "{\"SW Ver\":\"%s\"}", - CONTIKI_VERSION_STRING); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_XML) { - coap_set_header_content_format(response, APPLICATION_XML); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, - "", CONTIKI_VERSION_STRING); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, coap_server_supported_msg, - strlen(coap_server_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_uptime(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - - coap_get_header_accept(request, &accept); - - if(accept == -1 || accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "%lu", clock_seconds()); - - coap_set_payload(response, (uint8_t *)buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "{\"uptime\":%lu}", - clock_seconds()); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_XML) { - coap_set_header_content_format(response, APPLICATION_XML); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, - "", clock_seconds()); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, coap_server_supported_msg, - strlen(coap_server_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -static void -res_post_handler_cfg_reset(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - web_demo_restore_defaults(); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_device_sw, - "title=\"Software version\";rt=\"text\"", - res_get_handler_sw, - NULL, - NULL, - NULL); -/*---------------------------------------------------------------------------*/ -RESOURCE(res_device_uptime, - "title=\"Uptime\";rt=\"seconds\"", - res_get_handler_uptime, - NULL, - NULL, - NULL); -/*---------------------------------------------------------------------------*/ -RESOURCE(res_device_hw, - "title=\"Hardware version\";rt=\"text\"", - res_get_handler_hw, - NULL, - NULL, - NULL); -/*---------------------------------------------------------------------------*/ -RESOURCE(res_device_cfg_reset, - "title=\"Reset Device Config: POST\";rt=\"Control\"", - NULL, res_post_handler_cfg_reset, NULL, NULL); -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-leds.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-leds.c deleted file mode 100644 index 5e4da11da..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-leds.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2013, Institute for Pervasive Computing, ETH Zurich - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. - */ -/*---------------------------------------------------------------------------*/ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * CoAP resource handler for the CC13xx/CC26xx LEDs. Slightly modified copy of - * the one found in Contiki's original CoAP example. - * \author - * Matthias Kovatsch (original) - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "dev/leds.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include -/*---------------------------------------------------------------------------*/ -static void -res_post_put_handler(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - size_t len = 0; - const char *color = NULL; - const char *mode = NULL; - uint8_t led = 0; - int success = 1; - - if((len = coap_get_query_variable(request, "color", &color))) { - if(strncmp(color, "r", len) == 0) { - led = LEDS_RED; - } else if(strncmp(color, "g", len) == 0) { - led = LEDS_GREEN; -#if BOARD_SMARTRF06EB - } else if(strncmp(color, "y", len) == 0) { - led = LEDS_YELLOW; - } else if(strncmp(color, "o", len) == 0) { - led = LEDS_ORANGE; -#endif - } else { - success = 0; - } - } else { - success = 0; - } - - if(success && (len = coap_get_post_variable(request, "mode", &mode))) { - if(strncmp(mode, "on", len) == 0) { - leds_on(led); - } else if(strncmp(mode, "off", len) == 0) { - leds_off(led); - } else { - success = 0; - } - } else { - success = 0; - } - - if(!success) { - coap_set_status_code(response, BAD_REQUEST_4_00); - } -} -/*---------------------------------------------------------------------------*/ -/* - * A simple actuator example, depending on the color query parameter and post - * variable mode, corresponding led is activated or deactivated - */ -#if BOARD_SENSORTAG || BOARD_LAUNCHPAD -#define RESOURCE_PARAMS "r|g" -#elif BOARD_SMARTRF06EB -#define RESOURCE_PARAMS "r|g|y|o" -#endif - -RESOURCE(res_leds, - "title=\"LEDs: ?color=" RESOURCE_PARAMS ", POST/PUT mode=on|off\";rt=\"Control\"", - NULL, - res_post_put_handler, - res_post_put_handler, - NULL); -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-net.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-net.c deleted file mode 100644 index b1f6b8725..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-net.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * CoAP resource handler for network-related resources - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "net/ipv6/uip-ds6.h" -#include "net/app-layer/coap/coap.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include "coap-server.h" -#include "web-demo.h" -/*---------------------------------------------------------------------------*/ -#include -#include -/*---------------------------------------------------------------------------*/ -extern int def_rt_rssi; -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_parent_rssi(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - - coap_get_header_accept(request, &accept); - - if(accept == -1 || accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, "%d", def_rt_rssi); - - coap_set_payload(response, (uint8_t *)buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, "{\"Parent RSSI\":\"%d\"}", - def_rt_rssi); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_XML) { - coap_set_header_content_format(response, APPLICATION_XML); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, - "", def_rt_rssi); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, coap_server_supported_msg, - strlen(coap_server_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_pref_parent(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - char def_rt_str[64]; - - coap_get_header_accept(request, &accept); - - memset(def_rt_str, 0, sizeof(def_rt_str)); - web_demo_ipaddr_sprintf(def_rt_str, sizeof(def_rt_str), - uip_ds6_defrt_choose()); - - if(accept == -1 || accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, "%s", def_rt_str); - - coap_set_payload(response, (uint8_t *)buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, "{\"Parent\":\"%s\"}", - def_rt_str); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_XML) { - coap_set_header_content_format(response, APPLICATION_XML); - snprintf((char *)buffer, COAP_MAX_CHUNK_SIZE, - "", def_rt_str); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, coap_server_supported_msg, - strlen(coap_server_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_parent_rssi, "title=\"Parent RSSI\";rt=\"dBm\"", - res_get_handler_parent_rssi, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -RESOURCE(res_parent_ip, "title=\"Preferred Parent\";rt=\"IPv6 address\"", - res_get_handler_pref_parent, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-sensors.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-sensors.c deleted file mode 100644 index 27f93f8f2..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-sensors.c +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/*---------------------------------------------------------------------------*/ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * CoAP resource handler for the Sensortag sensors - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "net/app-layer/coap/coap.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include "web-demo.h" -#include "coap-server.h" -/*---------------------------------------------------------------------------*/ -#include -#include -#include -/*---------------------------------------------------------------------------*/ -/* - * Generic resource handler for any sensor in this example. Ultimately gets - * called by all handlers and populates the CoAP response - */ -static void -res_get_handler_all(int sens_type, coap_message_t *request, - coap_message_t *response, - uint8_t *buffer, uint16_t preferred_size, int32_t *offset) -{ - unsigned int accept = -1; - const web_demo_sensor_reading_t *reading; - - reading = web_demo_sensor_lookup(sens_type); - - if(reading == NULL) { - coap_set_status_code(response, NOT_FOUND_4_04); - coap_set_payload(response, coap_server_not_found_msg, - strlen(coap_server_not_found_msg)); - return; - } - - coap_get_header_accept(request, &accept); - - if(accept == -1 || accept == TEXT_PLAIN) { - coap_set_header_content_format(response, TEXT_PLAIN); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "%s", reading->converted); - - coap_set_payload(response, (uint8_t *)buffer, - strlen((char *)buffer)); - } else if(accept == APPLICATION_JSON) { - coap_set_header_content_format(response, APPLICATION_JSON); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "{\"%s\":%s}", - reading->descr, reading->converted); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else if(accept == APPLICATION_XML) { - coap_set_header_content_format(response, APPLICATION_XML); - snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, - "<%s val=\"%s\" unit=\"%s\"/>", reading->xml_element, - reading->converted, reading->units); - - coap_set_payload(response, buffer, strlen((char *)buffer)); - } else { - coap_set_status_code(response, NOT_ACCEPTABLE_4_06); - coap_set_payload(response, coap_server_supported_msg, - strlen(coap_server_supported_msg)); - } -} -/*---------------------------------------------------------------------------*/ -/* BatMon resources and handler: Temperature, Voltage */ -static void -res_get_handler_batmon_temp(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_BATMON_TEMP, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_batmon_volt(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_BATMON_VOLT, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_batmon_temp, "title=\"Battery Temp\";rt=\"C\"", - res_get_handler_batmon_temp, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -RESOURCE(res_batmon_volt, "title=\"Battery Voltage\";rt=\"mV\"", - res_get_handler_batmon_volt, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -#if WEB_DEMO_ADC_DEMO -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_adc_dio23(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_ADC_DIO23, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_adc_dio23, "title=\"ADC DIO23\";rt=\"mV\"", - res_get_handler_adc_dio23, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -#endif -/*---------------------------------------------------------------------------*/ -#if BOARD_SENSORTAG -/*---------------------------------------------------------------------------*/ -/* MPU resources and handler: Accelerometer and Gyro */ -static void -res_get_handler_mpu_acc_x(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_MPU_ACC_X, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_mpu_acc_y(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_MPU_ACC_Y, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_mpu_acc_z(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_MPU_ACC_Z, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_mpu_gyro_x(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_MPU_GYRO_X, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_mpu_gyro_y(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_MPU_GYRO_Y, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_mpu_gyro_z(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_MPU_GYRO_Z, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_mpu_acc_x, "title=\"Acc X\";rt=\"G\"", res_get_handler_mpu_acc_x, - NULL, NULL, NULL); -RESOURCE(res_mpu_acc_y, "title=\"Acc Y\";rt=\"G\"", res_get_handler_mpu_acc_y, - NULL, NULL, NULL); -RESOURCE(res_mpu_acc_z, "title=\"Acc Z\";rt=\"G\"", res_get_handler_mpu_acc_z, - NULL, NULL, NULL); - -RESOURCE(res_mpu_gyro_x, "title=\"Gyro X\";rt=\"deg/sec\"", - res_get_handler_mpu_gyro_x, NULL, NULL, NULL); -RESOURCE(res_mpu_gyro_y, "title=\"Gyro Y\";rt=\"deg/sec\"", - res_get_handler_mpu_gyro_y, NULL, NULL, NULL); -RESOURCE(res_mpu_gyro_z, "title=\"Gyro Z\";rt=\"deg/sec\"", - res_get_handler_mpu_gyro_z, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -/* TMP sensor resources and handlers: Object, Ambient */ -static void -res_get_handler_obj_temp(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_TMP_OBJECT, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_amb_temp(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_TMP_AMBIENT, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_tmp007_obj, "title=\"Temperature (Object)\";rt=\"C\"", - res_get_handler_obj_temp, NULL, NULL, NULL); - -RESOURCE(res_tmp007_amb, "title=\"Temperature (Ambient)\";rt=\"C\"", - res_get_handler_amb_temp, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -/* BMP sensor resources: Temperature, Pressure */ -static void -res_get_handler_bmp_temp(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_BMP_TEMP, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_bmp_press(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_BMP_PRES, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_bmp280_temp, "title=\"Barometer (Temperature)\";rt=\"C\"", - res_get_handler_bmp_temp, NULL, NULL, NULL); - -RESOURCE(res_bmp280_press, - "title=\"Barometer (Pressure)\";rt=\"hPa (hectopascal / millibar)\"", - res_get_handler_bmp_press, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -/* HDC1000 sensor resources and handler: Temperature, Pressure */ -static void -res_get_handler_hdc_temp(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_HDC_TEMP, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -static void -res_get_handler_hdc_humidity(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_HDC_HUMIDITY, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_hdc1000_temp, "title=\"Temperature\";rt=\"C\"", - res_get_handler_hdc_temp, NULL, NULL, NULL); - -RESOURCE(res_hdc1000_hum, "title=\"Humidity\";rt=\"%RH\"", - res_get_handler_hdc_humidity, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -/* Illuminance resources and handler */ -static void -res_get_handler_opt(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - res_get_handler_all(WEB_DEMO_SENSOR_OPT_LIGHT, request, response, - buffer, preferred_size, offset); -} -/*---------------------------------------------------------------------------*/ -RESOURCE(res_opt3001_light, "title=\"Illuminance\";rt=\"Lux\"", - res_get_handler_opt, NULL, NULL, NULL); -/*---------------------------------------------------------------------------*/ -#endif /* BOARD_SENSORTAG */ -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-toggle-leds.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-toggle-leds.c deleted file mode 100644 index 0ba4c2881..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/resources/res-toggle-leds.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2013, Institute for Pervasive Computing, ETH Zurich - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. - * - * This file is part of the Contiki operating system. - */ -/*---------------------------------------------------------------------------*/ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * CoAP resource to toggle LEDs. Slightly modified copy of the one found - * in Contiki's original CoAP example. - * \author - * Matthias Kovatsch (original) - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "dev/leds.h" -#include "net/app-layer/coap/coap-engine.h" -/*---------------------------------------------------------------------------*/ -#include -/*---------------------------------------------------------------------------*/ -static void -res_post_handler_red(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - leds_toggle(LEDS_RED); -} -/*---------------------------------------------------------------------------*/ -static void -res_post_handler_green(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - leds_toggle(LEDS_GREEN); -} -/*---------------------------------------------------------------------------*/ -/* Toggles the red led */ -RESOURCE(res_toggle_red, - "title=\"Red LED\";rt=\"Control\"", - NULL, - res_post_handler_red, - NULL, - NULL); - -/* Toggles the green led */ -RESOURCE(res_toggle_green, - "title=\"Green LED\";rt=\"Control\"", - NULL, - res_post_handler_green, - NULL, - NULL); -/*---------------------------------------------------------------------------*/ -/* An additional 2 LEDs on the Srf */ -#if BOARD_SMARTRF06EB -/*---------------------------------------------------------------------------*/ -static void -res_post_handler_yellow(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - leds_toggle(LEDS_YELLOW); -} -/*---------------------------------------------------------------------------*/ -static void -res_post_handler_orange(coap_message_t *request, coap_message_t *response, - uint8_t *buffer, - uint16_t preferred_size, int32_t *offset) -{ - leds_toggle(LEDS_ORANGE); -} -/*---------------------------------------------------------------------------*/ -/* Toggles the yellow led */ -RESOURCE(res_toggle_yellow, - "title=\"Yellow LED\";rt=\"Control\"", - NULL, - res_post_handler_yellow, - NULL, - NULL); - -/* Toggles the orange led */ -RESOURCE(res_toggle_orange, - "title=\"Orange LED\";rt=\"Control\"", - NULL, - res_post_handler_orange, - NULL, - NULL); -#endif -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.c b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.c deleted file mode 100644 index 8e729576d..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.c +++ /dev/null @@ -1,1054 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/** - * \addtogroup cc13xx-cc26xx-web-demo - * @{ - * - * \file - * Main module for the CC13xx/CC26xx web demo. Activates on-device resources, - * takes sensor readings periodically and caches them for all other modules - * to use. - */ -/*---------------------------------------------------------------------------*/ -#include "contiki.h" -#include "contiki-net.h" -#include "dev/button-hal.h" -#include "dev/ext-flash/ext-flash.h" -#include "sys/process.h" -#include "net/ipv6/sicslowpan.h" -#include "net/app-layer/coap/coap-engine.h" -#include "lib/sensors.h" -#include "lib/list.h" -/*---------------------------------------------------------------------------*/ -#include -#include -/*---------------------------------------------------------------------------*/ -#include "board-peripherals.h" -#include "batmon-sensor.h" -/*---------------------------------------------------------------------------*/ -#include "web-demo.h" -#include "httpd-simple.h" -#include "mqtt-client.h" -#include "coap-server.h" -/*---------------------------------------------------------------------------*/ -#include -#include -#include -#include -/*---------------------------------------------------------------------------*/ -PROCESS_NAME(cetic_6lbr_client_process); -PROCESS(web_demo_process, "CC13xx/CC26xx Web Demo"); -/*---------------------------------------------------------------------------*/ -/* - * Update sensor readings in a staggered fashion every SENSOR_READING_PERIOD - * ticks + a random interval between 0 and SENSOR_READING_RANDOM ticks - */ -#define SENSOR_READING_PERIOD (CLOCK_SECOND * 20) -#define SENSOR_READING_RANDOM (CLOCK_SECOND << 4) - -struct ctimer batmon_timer; - -#if BOARD_SENSORTAG -struct ctimer bmp_timer, hdc_timer, tmp_timer, opt_timer, mpu_timer; -#endif -/*---------------------------------------------------------------------------*/ -/* Provide visible feedback via LEDS while searching for a network */ -#define NO_NET_LED_DURATION (WEB_DEMO_NET_CONNECT_PERIODIC >> 1) - -static struct etimer et; -static struct ctimer ct; -/*---------------------------------------------------------------------------*/ -/* Parent RSSI functionality */ -#if WEB_DEMO_READ_PARENT_RSSI -static struct uip_icmp6_echo_reply_notification echo_reply_notification; -static struct etimer echo_request_timer; -int def_rt_rssi = 0; -#endif -/*---------------------------------------------------------------------------*/ -#if WEB_DEMO_ADC_DEMO -PROCESS(adc_process, "ADC process"); - -static uint_fast16_t single_adc_sample; -static struct etimer et_adc; -#endif -/*---------------------------------------------------------------------------*/ -process_event_t web_demo_publish_event; -process_event_t web_demo_config_loaded_event; -process_event_t web_demo_load_config_defaults; -/*---------------------------------------------------------------------------*/ -/* Saved settings on flash: store, offset, magic */ -#define CONFIG_FLASH_OFFSET 0 -#define CONFIG_MAGIC 0xCC265002 - -web_demo_config_t web_demo_config; -/*---------------------------------------------------------------------------*/ -/* A cache of sensor values. Updated periodically or upon key press */ -LIST(sensor_list); -/*---------------------------------------------------------------------------*/ -/* The objects representing sensors used in this demo */ -#define DEMO_SENSOR(name, type, descr, xml_element, form_field, units) \ - web_demo_sensor_reading_t name##_reading = \ - { NULL, 0, 0, descr, xml_element, form_field, units, type, 1, 1 } - -/* CC13xx/CC26xx sensors */ -DEMO_SENSOR(batmon_temp, WEB_DEMO_SENSOR_BATMON_TEMP, - "Battery Temp", "battery-temp", "batmon_temp", - WEB_DEMO_UNIT_TEMP); -DEMO_SENSOR(batmon_volt, WEB_DEMO_SENSOR_BATMON_VOLT, - "Battery Volt", "battery-volt", "batmon_volt", - WEB_DEMO_UNIT_VOLT); - -#if WEB_DEMO_ADC_DEMO -DEMO_SENSOR(adc_dio23, WEB_DEMO_SENSOR_ADC_DIO23, - "ADC DIO23", "adc-dio23", "adc_dio23", - WEB_DEMO_UNIT_VOLT); -#endif - -/* Sensortag sensors */ -#if BOARD_SENSORTAG -DEMO_SENSOR(bmp_pres, WEB_DEMO_SENSOR_BMP_PRES, - "Air Pressure", "air-pressure", "bmp_pres", - WEB_DEMO_UNIT_PRES); -DEMO_SENSOR(bmp_temp, WEB_DEMO_SENSOR_BMP_TEMP, - "Air Temp", "air-temp", "bmp_temp", - WEB_DEMO_UNIT_TEMP); -DEMO_SENSOR(hdc_temp, WEB_DEMO_SENSOR_HDC_TEMP, - "HDC Temp", "hdc-temp", "hdc_temp", - WEB_DEMO_UNIT_TEMP); -DEMO_SENSOR(hdc_hum, WEB_DEMO_SENSOR_HDC_HUMIDITY, - "HDC Humidity", "hdc-humidity", "hdc_hum", - WEB_DEMO_UNIT_HUMIDITY); -DEMO_SENSOR(tmp_amb, WEB_DEMO_SENSOR_TMP_AMBIENT, - "Ambient Temp", "ambient-temp", "tmp_amb", - WEB_DEMO_UNIT_TEMP); -DEMO_SENSOR(tmp_obj, WEB_DEMO_SENSOR_TMP_OBJECT, - "Object Temp", "object-temp", "tmp_obj", - WEB_DEMO_UNIT_TEMP); -DEMO_SENSOR(opt, WEB_DEMO_SENSOR_OPT_LIGHT, - "Light", "light", "light", - WEB_DEMO_UNIT_LIGHT); - -/* MPU Readings */ -DEMO_SENSOR(mpu_acc_x, WEB_DEMO_SENSOR_MPU_ACC_X, - "Acc X", "acc-x", "acc_x", - WEB_DEMO_UNIT_ACC); -DEMO_SENSOR(mpu_acc_y, WEB_DEMO_SENSOR_MPU_ACC_Y, - "Acc Y", "acc-y", "acc_y", - WEB_DEMO_UNIT_ACC); -DEMO_SENSOR(mpu_acc_z, WEB_DEMO_SENSOR_MPU_ACC_Z, - "Acc Z", "acc-z", "acc_z", - WEB_DEMO_UNIT_ACC); - -DEMO_SENSOR(mpu_gyro_x, WEB_DEMO_SENSOR_MPU_GYRO_X, - "Gyro X", "gyro-x", "gyro_x", - WEB_DEMO_UNIT_GYRO); -DEMO_SENSOR(mpu_gyro_y, WEB_DEMO_SENSOR_MPU_GYRO_Y, - "Gyro Y", "gyro-y", "gyro_y", - WEB_DEMO_UNIT_GYRO); -DEMO_SENSOR(mpu_gyro_z, WEB_DEMO_SENSOR_MPU_GYRO_Z, - "Gyro Z", "gyro-z", "gyro_Z", - WEB_DEMO_UNIT_GYRO); -#endif -/*---------------------------------------------------------------------------*/ -#if BOARD_SENSORTAG -static void init_bmp_reading(void *data); -static void init_light_reading(void *data); -static void init_hdc_reading(void *data); -static void init_tmp_reading(void *data); -static void init_mpu_reading(void *data); -#endif -/*---------------------------------------------------------------------------*/ -static void -publish_led_off(void *d) -{ - leds_off(WEB_DEMO_STATUS_LED); -} -/*---------------------------------------------------------------------------*/ -static void -save_config() -{ - /* Dump current running config to flash */ -#if BOARD_SENSORTAG || BOARD_LAUNCHPAD - int rv; - web_demo_sensor_reading_t *reading = NULL; - - rv = ext_flash_open(NULL); - - if(!rv) { - printf("Could not open flash to save config\n"); - ext_flash_close(NULL); - return; - } - - rv = ext_flash_erase(NULL, CONFIG_FLASH_OFFSET, sizeof(web_demo_config_t)); - - if(!rv) { - printf("Error erasing flash\n"); - } else { - web_demo_config.magic = CONFIG_MAGIC; - web_demo_config.len = sizeof(web_demo_config_t); - web_demo_config.sensors_bitmap = 0; - - for(reading = list_head(sensor_list); - reading != NULL; - reading = list_item_next(reading)) { - if(reading->publish) { - web_demo_config.sensors_bitmap |= (1 << reading->type); - } - } - - rv = ext_flash_write(NULL, CONFIG_FLASH_OFFSET, sizeof(web_demo_config_t), - (uint8_t *)&web_demo_config); - if(!rv) { - printf("Error saving config\n"); - } - } - - ext_flash_close(NULL); -#endif -} -/*---------------------------------------------------------------------------*/ -static void -load_config() -{ -#if BOARD_SENSORTAG || BOARD_LAUNCHPAD - /* Read from flash into a temp buffer */ - web_demo_config_t tmp_cfg; - web_demo_sensor_reading_t *reading = NULL; - - int rv = ext_flash_open(NULL); - - if(!rv) { - printf("Could not open flash to load config\n"); - ext_flash_close(NULL); - return; - } - - rv = ext_flash_read(NULL, CONFIG_FLASH_OFFSET, sizeof(tmp_cfg), - (uint8_t *)&tmp_cfg); - - ext_flash_close(NULL); - - if(!rv) { - printf("Error loading config\n"); - return; - } - - if(tmp_cfg.magic == CONFIG_MAGIC && tmp_cfg.len == sizeof(tmp_cfg)) { - memcpy(&web_demo_config, &tmp_cfg, sizeof(web_demo_config)); - } - - for(reading = list_head(sensor_list); - reading != NULL; - reading = list_item_next(reading)) { - if(web_demo_config.sensors_bitmap & (1 << reading->type)) { - reading->publish = 1; - } else { - reading->publish = 0; - snprintf(reading->converted, WEB_DEMO_CONVERTED_LEN, "\"N/A\""); - } - } -#endif -} -/*---------------------------------------------------------------------------*/ -/* Don't start everything here, we need to dictate order of initialisation */ -AUTOSTART_PROCESSES(&web_demo_process); -/*---------------------------------------------------------------------------*/ -int -web_demo_ipaddr_sprintf(char *buf, uint8_t buf_len, - const uip_ipaddr_t *addr) -{ - uint16_t a; - uint8_t len = 0; - int i, f; - for(i = 0, f = 0; i < sizeof(uip_ipaddr_t); i += 2) { - a = (addr->u8[i] << 8) + addr->u8[i + 1]; - if(a == 0 && f >= 0) { - if(f++ == 0) { - len += snprintf(&buf[len], buf_len - len, "::"); - } - } else { - if(f > 0) { - f = -1; - } else if(i > 0) { - len += snprintf(&buf[len], buf_len - len, ":"); - } - len += snprintf(&buf[len], buf_len - len, "%x", a); - } - } - - return len; -} -/*---------------------------------------------------------------------------*/ -const web_demo_sensor_reading_t * -web_demo_sensor_lookup(int sens_type) -{ - web_demo_sensor_reading_t *reading = NULL; - - for(reading = list_head(sensor_list); - reading != NULL; - reading = list_item_next(reading)) { - if(reading->type == sens_type) { - return reading; - } - } - - return NULL; -} -/*---------------------------------------------------------------------------*/ -const web_demo_sensor_reading_t * -web_demo_sensor_first() -{ - return list_head(sensor_list); -} -/*---------------------------------------------------------------------------*/ -void -web_demo_restore_defaults(void) -{ - web_demo_sensor_reading_t *reading = NULL; - - leds_on(LEDS_ALL); - - for(reading = list_head(sensor_list); - reading != NULL; - reading = list_item_next(reading)) { - reading->publish = 1; - } - -#if WEB_DEMO_MQTT_CLIENT - process_post_synch(&mqtt_client_process, - web_demo_load_config_defaults, NULL); -#endif - -#if WEB_DEMO_NET_UART - process_post_synch(&net_uart_process, web_demo_load_config_defaults, - NULL); -#endif - - save_config(); - - leds_off(LEDS_ALL); -} -/*---------------------------------------------------------------------------*/ -static int -defaults_post_handler(char *key, int key_len, char *val, int val_len) -{ - if(key_len != strlen("defaults") || - strncasecmp(key, "defaults", strlen("defaults")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - web_demo_restore_defaults(); - - return HTTPD_SIMPLE_POST_HANDLER_OK; -} -/*---------------------------------------------------------------------------*/ -static int -sensor_readings_handler(char *key, int key_len, char *val, int val_len) -{ - web_demo_sensor_reading_t *reading = NULL; - int rv; - - for(reading = list_head(sensor_list); - reading != NULL; - reading = list_item_next(reading)) { - if(key_len == strlen(reading->form_field) && - strncmp(reading->form_field, key, strlen(key)) == 0) { - - rv = atoi(val); - - /* Be pedantic: only accept 0 and 1, not just any non-zero value */ - if(rv == 0) { - reading->publish = 0; - snprintf(reading->converted, WEB_DEMO_CONVERTED_LEN, "\"N/A\""); - } else if(rv == 1) { - reading->publish = 1; - } else { - return HTTPD_SIMPLE_POST_HANDLER_ERROR; - } - - return HTTPD_SIMPLE_POST_HANDLER_OK; - } - } - - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; -} -/*---------------------------------------------------------------------------*/ -#if WEB_DEMO_READ_PARENT_RSSI -static int -ping_interval_post_handler(char *key, int key_len, char *val, int val_len) -{ - int rv = 0; - - if(key_len != strlen("ping_interval") || - strncasecmp(key, "ping_interval", strlen("ping_interval")) != 0) { - /* Not ours */ - return HTTPD_SIMPLE_POST_HANDLER_UNKNOWN; - } - - rv = atoi(val); - - if(rv < WEB_DEMO_RSSI_MEASURE_INTERVAL_MIN || - rv > WEB_DEMO_RSSI_MEASURE_INTERVAL_MAX) { - return HTTPD_SIMPLE_POST_HANDLER_ERROR; - } - - web_demo_config.def_rt_ping_interval = rv * CLOCK_SECOND; - - return HTTPD_SIMPLE_POST_HANDLER_OK; -} -#endif -/*---------------------------------------------------------------------------*/ -HTTPD_SIMPLE_POST_HANDLER(sensor, sensor_readings_handler); -HTTPD_SIMPLE_POST_HANDLER(defaults, defaults_post_handler); - -#if WEB_DEMO_READ_PARENT_RSSI -HTTPD_SIMPLE_POST_HANDLER(ping_interval, ping_interval_post_handler); -/*---------------------------------------------------------------------------*/ -static void -echo_reply_handler(uip_ipaddr_t *source, uint8_t ttl, uint8_t *data, - uint16_t datalen) -{ - if(uip_ip6addr_cmp(source, uip_ds6_defrt_choose())) { - def_rt_rssi = sicslowpan_get_last_rssi(); - } -} -/*---------------------------------------------------------------------------*/ -static void -ping_parent(void) -{ - if(uip_ds6_get_global(ADDR_PREFERRED) == NULL) { - return; - } - - uip_icmp6_send(uip_ds6_defrt_choose(), ICMP6_ECHO_REQUEST, 0, - WEB_DEMO_ECHO_REQ_PAYLOAD_LEN); -} -#endif -/*---------------------------------------------------------------------------*/ -static void -get_batmon_reading(void *data) -{ - int value; - char *buf; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - if(batmon_temp_reading.publish) { - value = batmon_sensor.value(BATMON_SENSOR_TYPE_TEMP); - if(value != BATMON_SENSOR_READING_ERROR) { - batmon_temp_reading.raw = value; - - buf = batmon_temp_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d", value); - } - } - - if(batmon_volt_reading.publish) { - value = batmon_sensor.value(BATMON_SENSOR_TYPE_VOLT); - if(value != BATMON_SENSOR_READING_ERROR) { - batmon_volt_reading.raw = value; - - buf = batmon_volt_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d", (value * 125) >> 5); - } - } - - ctimer_set(&batmon_timer, next, get_batmon_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -#if WEB_DEMO_ADC_DEMO -static void -get_adc_reading(void *data) -{ - int value; - char *buf; - - if(adc_dio23_reading.publish) { - value = single_adc_sample; - buf = adc_dio23_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d", (value * 4300) >> 12); - } -} -#endif -/*---------------------------------------------------------------------------*/ -#if BOARD_SENSORTAG -/*---------------------------------------------------------------------------*/ -static void -compare_and_update(web_demo_sensor_reading_t *reading) -{ - if(reading->last == reading->raw) { - reading->changed = 0; - } else { - reading->last = reading->raw; - reading->changed = 1; - } -} -/*---------------------------------------------------------------------------*/ -static void -print_mpu_reading(int reading, char *buf) -{ - char *loc_buf = buf; - - if(reading < 0) { - sprintf(loc_buf, "-"); - reading = -reading; - loc_buf++; - } - - sprintf(loc_buf, "%d.%02d", reading / 100, reading % 100); -} -/*---------------------------------------------------------------------------*/ -static void -get_bmp_reading() -{ - int value; - char *buf; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - if(bmp_pres_reading.publish) { - value = bmp_280_sensor.value(BMP_280_SENSOR_TYPE_PRESS); - if(value != BMP_280_READING_ERROR) { - bmp_pres_reading.raw = value; - - compare_and_update(&bmp_pres_reading); - - buf = bmp_pres_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d.%02d", value / 100, - value % 100); - } - } - - if(bmp_temp_reading.publish) { - value = bmp_280_sensor.value(BMP_280_SENSOR_TYPE_TEMP); - if(value != BMP_280_READING_ERROR) { - bmp_temp_reading.raw = value; - - compare_and_update(&bmp_temp_reading); - - buf = bmp_temp_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d.%02d", value / 100, - value % 100); - } - } - - SENSORS_DEACTIVATE(bmp_280_sensor); - - ctimer_set(&bmp_timer, next, init_bmp_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_tmp_reading() -{ - int value; - char *buf; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - if(tmp_amb_reading.publish || tmp_obj_reading.publish) { - if(tmp_007_sensor.value(TMP_007_TYPE_ALL) == - TMP_007_READING_ERROR) { - - SENSORS_DEACTIVATE(tmp_007_sensor); - ctimer_set(&tmp_timer, next, init_tmp_reading, NULL); - } - } - - if(tmp_amb_reading.publish) { - value = tmp_007_sensor.value(TMP_007_TYPE_AMBIENT); - tmp_amb_reading.raw = value; - - compare_and_update(&tmp_amb_reading); - - buf = tmp_amb_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d.%03d", value / 1000, - value % 1000); - } - - if(tmp_obj_reading.publish) { - value = tmp_007_sensor.value(TMP_007_TYPE_OBJECT); - tmp_obj_reading.raw = value; - - compare_and_update(&tmp_obj_reading); - - buf = tmp_obj_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d.%03d", value / 1000, - value % 1000); - } - - SENSORS_DEACTIVATE(tmp_007_sensor); - - ctimer_set(&tmp_timer, next, init_tmp_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_hdc_reading() -{ - int value; - char *buf; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - if(hdc_temp_reading.publish) { - value = hdc_1000_sensor.value(HDC_1000_SENSOR_TYPE_TEMP); - if(value != HDC_1000_READING_ERROR) { - hdc_temp_reading.raw = value; - - compare_and_update(&hdc_temp_reading); - - buf = hdc_temp_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d.%02d", value / 100, - value % 100); - } - } - - if(hdc_hum_reading.publish) { - value = hdc_1000_sensor.value(HDC_1000_SENSOR_TYPE_HUMID); - if(value != HDC_1000_READING_ERROR) { - hdc_hum_reading.raw = value; - - compare_and_update(&hdc_hum_reading); - - buf = hdc_hum_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d.%02d", value / 100, - value % 100); - } - } - - ctimer_set(&hdc_timer, next, init_hdc_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_light_reading() -{ - int value; - char *buf; - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - - value = opt_3001_sensor.value(0); - - if(value != OPT_3001_READING_ERROR) { - opt_reading.raw = value; - - compare_and_update(&opt_reading); - - buf = opt_reading.converted; - memset(buf, 0, WEB_DEMO_CONVERTED_LEN); - snprintf(buf, WEB_DEMO_CONVERTED_LEN, "%d.%02d", value / 100, - value % 100); - } - - /* The OPT will turn itself off, so we don't need to call its DEACTIVATE */ - ctimer_set(&opt_timer, next, init_light_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -get_mpu_reading() -{ - clock_time_t next = SENSOR_READING_PERIOD + - (random_rand() % SENSOR_READING_RANDOM); - int raw; - - if(mpu_gyro_x_reading.publish) { - raw = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_X); - if(raw != MPU_9250_READING_ERROR) { - mpu_gyro_x_reading.raw = raw; - } - } - - if(mpu_gyro_y_reading.publish) { - raw = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_Y); - if(raw != MPU_9250_READING_ERROR) { - mpu_gyro_y_reading.raw = raw; - } - } - - if(mpu_gyro_z_reading.publish) { - raw = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_Z); - if(raw != MPU_9250_READING_ERROR) { - mpu_gyro_z_reading.raw = raw; - } - } - - if(mpu_acc_x_reading.publish) { - raw = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_X); - if(raw != MPU_9250_READING_ERROR) { - mpu_acc_x_reading.raw = raw; - } - } - - if(mpu_acc_y_reading.publish) { - raw = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_Y); - if(raw != MPU_9250_READING_ERROR) { - mpu_acc_y_reading.raw = raw; - } - } - - if(mpu_acc_z_reading.publish) { - raw = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_Z); - if(raw != MPU_9250_READING_ERROR) { - mpu_acc_z_reading.raw = raw; - } - } - - SENSORS_DEACTIVATE(mpu_9250_sensor); - - if(mpu_gyro_x_reading.publish) { - compare_and_update(&mpu_gyro_x_reading); - memset(mpu_gyro_x_reading.converted, 0, WEB_DEMO_CONVERTED_LEN); - print_mpu_reading(mpu_gyro_x_reading.raw, mpu_gyro_x_reading.converted); - } - - if(mpu_gyro_y_reading.publish) { - compare_and_update(&mpu_gyro_y_reading); - memset(mpu_gyro_y_reading.converted, 0, WEB_DEMO_CONVERTED_LEN); - print_mpu_reading(mpu_gyro_y_reading.raw, mpu_gyro_y_reading.converted); - } - - if(mpu_gyro_z_reading.publish) { - compare_and_update(&mpu_gyro_z_reading); - memset(mpu_gyro_z_reading.converted, 0, WEB_DEMO_CONVERTED_LEN); - print_mpu_reading(mpu_gyro_z_reading.raw, mpu_gyro_z_reading.converted); - } - - if(mpu_acc_x_reading.publish) { - compare_and_update(&mpu_acc_x_reading); - memset(mpu_acc_x_reading.converted, 0, WEB_DEMO_CONVERTED_LEN); - print_mpu_reading(mpu_acc_x_reading.raw, mpu_acc_x_reading.converted); - } - - if(mpu_acc_y_reading.publish) { - compare_and_update(&mpu_acc_y_reading); - memset(mpu_acc_y_reading.converted, 0, WEB_DEMO_CONVERTED_LEN); - print_mpu_reading(mpu_acc_y_reading.raw, mpu_acc_y_reading.converted); - } - - if(mpu_acc_z_reading.publish) { - compare_and_update(&mpu_acc_z_reading); - memset(mpu_acc_z_reading.converted, 0, WEB_DEMO_CONVERTED_LEN); - print_mpu_reading(mpu_acc_z_reading.raw, mpu_acc_z_reading.converted); - } - - /* We only use the single timer */ - ctimer_set(&mpu_timer, next, init_mpu_reading, NULL); -} -/*---------------------------------------------------------------------------*/ -static void -init_tmp_reading(void *data) -{ - if(tmp_amb_reading.publish || tmp_obj_reading.publish) { - SENSORS_ACTIVATE(tmp_007_sensor); - } else { - ctimer_set(&tmp_timer, CLOCK_SECOND, init_tmp_reading, NULL); - } -} -/*---------------------------------------------------------------------------*/ -static void -init_bmp_reading(void *data) -{ - if(bmp_pres_reading.publish || bmp_temp_reading.publish) { - SENSORS_ACTIVATE(bmp_280_sensor); - } else { - ctimer_set(&bmp_timer, CLOCK_SECOND, init_bmp_reading, NULL); - } -} -/*---------------------------------------------------------------------------*/ -static void -init_hdc_reading(void *data) -{ - if(hdc_hum_reading.publish || hdc_temp_reading.publish) { - SENSORS_ACTIVATE(hdc_1000_sensor); - } else { - ctimer_set(&hdc_timer, CLOCK_SECOND, init_hdc_reading, NULL); - } -} -/*---------------------------------------------------------------------------*/ -static void -init_light_reading(void *data) -{ - if(opt_reading.publish) { - SENSORS_ACTIVATE(opt_3001_sensor); - } else { - ctimer_set(&opt_timer, CLOCK_SECOND, init_light_reading, NULL); - } -} -/*---------------------------------------------------------------------------*/ -static void -init_mpu_reading(void *data) -{ - int readings_bitmap = 0; - - if(mpu_acc_x_reading.publish || mpu_acc_y_reading.publish || - mpu_acc_z_reading.publish) { - readings_bitmap |= MPU_9250_SENSOR_TYPE_ACC; - } - - if(mpu_gyro_x_reading.publish || mpu_gyro_y_reading.publish || - mpu_gyro_z_reading.publish) { - readings_bitmap |= MPU_9250_SENSOR_TYPE_GYRO; - } - - if(readings_bitmap) { - mpu_9250_sensor.configure(SENSORS_ACTIVE, readings_bitmap); - } else { - ctimer_set(&mpu_timer, CLOCK_SECOND, init_mpu_reading, NULL); - } -} -#endif -/*---------------------------------------------------------------------------*/ -static void -init_sensor_readings(void) -{ - /* - * Make a first pass and get all initial sensor readings. This will also - * trigger periodic value updates - */ - get_batmon_reading(NULL); - -#if BOARD_SENSORTAG - init_bmp_reading(NULL); - init_light_reading(NULL); - init_hdc_reading(NULL); - init_tmp_reading(NULL); - init_mpu_reading(NULL); -#endif /* BOARD_SENSORTAG */ - - return; -} -/*---------------------------------------------------------------------------*/ -static void -init_sensors(void) -{ - - list_add(sensor_list, &batmon_temp_reading); - list_add(sensor_list, &batmon_volt_reading); - -#if WEB_DEMO_ADC_DEMO - list_add(sensor_list, &adc_dio23_reading); -#endif - - SENSORS_ACTIVATE(batmon_sensor); - -#if BOARD_SENSORTAG - list_add(sensor_list, &bmp_pres_reading); - list_add(sensor_list, &bmp_temp_reading); - - list_add(sensor_list, &tmp_obj_reading); - list_add(sensor_list, &tmp_amb_reading); - - list_add(sensor_list, &opt_reading); - - list_add(sensor_list, &hdc_hum_reading); - list_add(sensor_list, &hdc_temp_reading); - - list_add(sensor_list, &mpu_acc_x_reading); - list_add(sensor_list, &mpu_acc_y_reading); - list_add(sensor_list, &mpu_acc_z_reading); - list_add(sensor_list, &mpu_gyro_x_reading); - list_add(sensor_list, &mpu_gyro_y_reading); - list_add(sensor_list, &mpu_gyro_z_reading); -#endif -} -/*---------------------------------------------------------------------------*/ -PROCESS_THREAD(web_demo_process, ev, data) -{ - PROCESS_BEGIN(); - - printf("CC13xx/CC26xx Web Demo Process\n"); - - init_sensors(); - - web_demo_publish_event = process_alloc_event(); - web_demo_config_loaded_event = process_alloc_event(); - web_demo_load_config_defaults = process_alloc_event(); - - /* Start all other (enabled) processes first */ - process_start(&httpd_simple_process, NULL); - -#if WEB_DEMO_COAP_SERVER - process_start(&coap_server_process, NULL); -#endif - -#if WEB_DEMO_6LBR_CLIENT - process_start(&cetic_6lbr_client_process, NULL); -#endif - -#if WEB_DEMO_MQTT_CLIENT - process_start(&mqtt_client_process, NULL); -#endif - -#if WEB_DEMO_NET_UART - process_start(&net_uart_process, NULL); -#endif - -#if WEB_DEMO_ADC_DEMO - process_start(&adc_process, NULL); -#endif - - /* - * Now that processes have set their own config default values, set our - * own defaults and restore saved config from flash... - */ - web_demo_config.sensors_bitmap = 0xFFFFFFFF; /* all on by default */ - web_demo_config.def_rt_ping_interval = - WEB_DEMO_DEFAULT_RSSI_MEAS_INTERVAL; - load_config(); - - /* - * Notify all other processes (basically the ones in this demo) that the - * configuration has been loaded from flash, in case they care - */ - process_post(PROCESS_BROADCAST, web_demo_config_loaded_event, NULL); - - init_sensor_readings(); - - httpd_simple_register_post_handler(&sensor_handler); - httpd_simple_register_post_handler(&defaults_handler); - -#if WEB_DEMO_READ_PARENT_RSSI - httpd_simple_register_post_handler(&ping_interval_handler); - - def_rt_rssi = 0x8000000; - uip_icmp6_echo_reply_callback_add(&echo_reply_notification, - echo_reply_handler); - etimer_set(&echo_request_timer, WEB_DEMO_NET_CONNECT_PERIODIC); -#endif - - etimer_set(&et, WEB_DEMO_NET_CONNECT_PERIODIC); - - /* - * Update all sensor readings on a configurable sensors_event - * (e.g a button press / or reed trigger) - */ - while(1) { - if(ev == PROCESS_EVENT_TIMER && etimer_expired(&et)) { - if(uip_ds6_get_global(ADDR_PREFERRED) == NULL) { - leds_on(WEB_DEMO_STATUS_LED); - ctimer_set(&ct, NO_NET_LED_DURATION, publish_led_off, NULL); - etimer_set(&et, WEB_DEMO_NET_CONNECT_PERIODIC); - } - } - -#if WEB_DEMO_READ_PARENT_RSSI - if(ev == PROCESS_EVENT_TIMER && etimer_expired(&echo_request_timer)) { - if(uip_ds6_get_global(ADDR_PREFERRED) == NULL) { - etimer_set(&echo_request_timer, WEB_DEMO_NET_CONNECT_PERIODIC); - } else { - ping_parent(); - etimer_set(&echo_request_timer, web_demo_config.def_rt_ping_interval); - } - } -#endif - - if(ev == button_hal_release_event && - ((button_hal_button_t *)data)->unique_id == - WEB_DEMO_SENSOR_READING_TRIGGER) { - init_sensor_readings(); - process_post(PROCESS_BROADCAST, web_demo_publish_event, NULL); - } else if(ev == button_hal_periodic_event && - ((button_hal_button_t *)data)->unique_id == - WEB_DEMO_SENSOR_READING_TRIGGER) { - printf("Restoring defaults!\n"); - web_demo_restore_defaults(); - } else if(ev == httpd_simple_event_new_config) { - save_config(); -#if BOARD_SENSORTAG - } else if(ev == sensors_event && data == &bmp_280_sensor) { - get_bmp_reading(); - } else if(ev == sensors_event && data == &opt_3001_sensor) { - get_light_reading(); - } else if(ev == sensors_event && data == &hdc_1000_sensor) { - get_hdc_reading(); - } else if(ev == sensors_event && data == &tmp_007_sensor) { - get_tmp_reading(); - } else if(ev == sensors_event && data == &mpu_9250_sensor) { - get_mpu_reading(); -#endif - } - - PROCESS_YIELD(); - } - - PROCESS_END(); -} -/*---------------------------------------------------------------------------*/ -#if WEB_DEMO_ADC_DEMO -PROCESS_THREAD(adc_process, ev, data) -{ - static ADC_Params adc_params; - ADC_Handle adc_handle; - int_fast16_t res; - uint_fast16_t adc_value; - - PROCESS_BEGIN(); - - ADC_init(); - ADC_Params_init(&adc_params); - - etimer_set(&et_adc, CLOCK_SECOND * 5); - - while(1) { - PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et_adc)); - - adc_handle = ADC_open(Board_ADC0, &adc_params); - - if(adc_handle != NULL) { - res = ADC_convert(adc_handle, &single_adc_sample); - - if(res == ADC_STATUS_SUCCESS) { - single_adc_sample = adc_value; - get_adc_reading(NULL); - } - - ADC_close(adc_handle); - } - - etimer_reset(&et_adc); - } - - PROCESS_END(); -} -#endif -/*---------------------------------------------------------------------------*/ -/** - * @} - */ diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.h b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.h deleted file mode 100644 index ab2c88342..000000000 --- a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/web-demo.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/ - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ -/** - * \addtogroup cc13xx-cc26xx-examples - * @{ - * - * \defgroup cc13xx-cc26xx-web-demo CC13xx/CC26xx Web Demo - * @{ - * - * An example demonstrating: - * * how to use a CC13xx/CC26xx-powered node in a deployment driven by a 6LBR - * * how to expose on-device sensors as CoAP resources - * * how to build a small web page which reports networking and sensory data - * * how to configure functionality through the aforementioned web page using - * HTTP POST requests - * * a network-based UART - * - * \file - * Main header file for the CC13xx/CC26xx web demo. - */ -/*---------------------------------------------------------------------------*/ -#ifndef WEB_DEMO_H_ -#define WEB_DEMO_H_ -/*---------------------------------------------------------------------------*/ -#include "dev/leds.h" -#include "sys/process.h" -/*---------------------------------------------------------------------------*/ -#include "mqtt-client.h" -#include "net-uart.h" -/*---------------------------------------------------------------------------*/ -#include -/*---------------------------------------------------------------------------*/ -#ifdef WEB_DEMO_CONF_MQTT_CLIENT -#define WEB_DEMO_MQTT_CLIENT WEB_DEMO_CONF_MQTT_CLIENT -#else -#define WEB_DEMO_MQTT_CLIENT 1 -#endif - -#ifdef WEB_DEMO_CONF_6LBR_CLIENT -#define WEB_DEMO_6LBR_CLIENT WEB_DEMO_CONF_6LBR_CLIENT -#else -#define WEB_DEMO_6LBR_CLIENT 1 -#endif - -#ifdef WEB_DEMO_CONF_COAP_SERVER -#define WEB_DEMO_COAP_SERVER WEB_DEMO_CONF_COAP_SERVER -#else -#define WEB_DEMO_COAP_SERVER 1 -#endif - -#ifdef WEB_DEMO_CONF_NET_UART -#define WEB_DEMO_NET_UART WEB_DEMO_CONF_NET_UART -#else -#define WEB_DEMO_NET_UART 1 -#endif - -#ifdef WEB_DEMO_CONF_ADC_DEMO -#define WEB_DEMO_ADC_DEMO WEB_DEMO_CONF_ADC_DEMO -#else -#define WEB_DEMO_ADC_DEMO 0 -#endif -/*---------------------------------------------------------------------------*/ -/* Active probing of RSSI from our preferred parent */ -#if (WEB_DEMO_COAP_SERVER || WEB_DEMO_MQTT_CLIENT) -#define WEB_DEMO_READ_PARENT_RSSI 1 -#else -#define WEB_DEMO_READ_PARENT_RSSI 0 -#endif - -#define WEB_DEMO_RSSI_MEASURE_INTERVAL_MAX 86400 /* secs: 1 day */ -#define WEB_DEMO_RSSI_MEASURE_INTERVAL_MIN 5 /* secs */ -/*---------------------------------------------------------------------------*/ -/* User configuration */ -/* Take a sensor reading on button press */ -#define WEB_DEMO_SENSOR_READING_TRIGGER BUTTON_HAL_ID_KEY_LEFT - -/* Payload length of ICMPv6 echo requests used to measure RSSI with def rt */ -#define WEB_DEMO_ECHO_REQ_PAYLOAD_LEN 20 - -#if BOARD_SENSORTAG -/* Force an MQTT publish on sensor event */ -#define WEB_DEMO_MQTT_PUBLISH_TRIGGER BUTTON_HAL_ID_REED_RELAY -#elif BOARD_LAUNCHPAD -#define WEB_DEMO_MQTT_PUBLISH_TRIGGER BUTTON_HAL_ID_KEY_LEFT -#else -#define WEB_DEMO_MQTT_PUBLISH_TRIGGER BUTTON_HAL_ID_KEY_DOWN -#endif - -#define WEB_DEMO_STATUS_LED LEDS_GREEN -/*---------------------------------------------------------------------------*/ -/* A timeout used when waiting to connect to a network */ -#define WEB_DEMO_NET_CONNECT_PERIODIC (CLOCK_SECOND >> 3) -/*---------------------------------------------------------------------------*/ -/* Default configuration values */ -#define WEB_DEMO_DEFAULT_ORG_ID "quickstart" -#if defined(DEVICE_LINE_CC13XX) -#define WEB_DEMO_DEFAULT_TYPE_ID "cc13xx" -#elif defined(DEVICE_LINE_CC26XX) -#define WEB_DEMO_DEFAULT_TYPE_ID "cc26xx" -#endif -#define WEB_DEMO_DEFAULT_EVENT_TYPE_ID "status" -#define WEB_DEMO_DEFAULT_SUBSCRIBE_CMD_TYPE "+" -#define WEB_DEMO_DEFAULT_BROKER_PORT 1883 -#define WEB_DEMO_DEFAULT_PUBLISH_INTERVAL (30 * CLOCK_SECOND) -#define WEB_DEMO_DEFAULT_KEEP_ALIVE_TIMER 60 -#define WEB_DEMO_DEFAULT_RSSI_MEAS_INTERVAL (CLOCK_SECOND * 30) -/*---------------------------------------------------------------------------*/ -/* - * You normally won't have to change anything from here onwards unless you are - * extending the example - */ -/*---------------------------------------------------------------------------*/ -/* Sensor types */ -#define WEB_DEMO_SENSOR_BATMON_TEMP 0 -#define WEB_DEMO_SENSOR_BATMON_VOLT 1 -#define WEB_DEMO_SENSOR_BMP_PRES 2 -#define WEB_DEMO_SENSOR_BMP_TEMP 3 -#define WEB_DEMO_SENSOR_TMP_AMBIENT 4 -#define WEB_DEMO_SENSOR_TMP_OBJECT 5 -#define WEB_DEMO_SENSOR_HDC_TEMP 6 -#define WEB_DEMO_SENSOR_HDC_HUMIDITY 7 -#define WEB_DEMO_SENSOR_OPT_LIGHT 8 -#define WEB_DEMO_SENSOR_MPU_ACC_X 9 -#define WEB_DEMO_SENSOR_MPU_ACC_Y 10 -#define WEB_DEMO_SENSOR_MPU_ACC_Z 11 -#define WEB_DEMO_SENSOR_MPU_GYRO_X 12 -#define WEB_DEMO_SENSOR_MPU_GYRO_Y 13 -#define WEB_DEMO_SENSOR_MPU_GYRO_Z 14 -#define WEB_DEMO_SENSOR_ADC_DIO23 15 -/*---------------------------------------------------------------------------*/ -extern process_event_t web_demo_publish_event; -extern process_event_t web_demo_config_loaded_event; -extern process_event_t web_demo_load_config_defaults; -/*---------------------------------------------------------------------------*/ -#define WEB_DEMO_UNIT_TEMP "C" -#define WEB_DEMO_UNIT_VOLT "mV" -#define WEB_DEMO_UNIT_PRES "hPa" -#define WEB_DEMO_UNIT_HUMIDITY "%RH" -#define WEB_DEMO_UNIT_LIGHT "lux" -#define WEB_DEMO_UNIT_ACC "G" -#define WEB_DEMO_UNIT_GYRO "deg per sec" -/*---------------------------------------------------------------------------*/ -/* A data type for sensor readings, internally stored in a linked list */ -#define WEB_DEMO_CONVERTED_LEN 12 - -typedef struct web_demo_sensor_reading { - struct web_demo_sensor_reading *next; - int raw; - int last; - const char *descr; - const char *xml_element; - const char *form_field; - char *units; - uint8_t type; - uint8_t publish; - uint8_t changed; - char converted[WEB_DEMO_CONVERTED_LEN]; -} web_demo_sensor_reading_t; -/*---------------------------------------------------------------------------*/ -/* Global configuration */ -typedef struct web_demo_config_s { - uint32_t magic; - int len; - uint32_t sensors_bitmap; - int def_rt_ping_interval; - mqtt_client_config_t mqtt_config; - net_uart_config_t net_uart; -} web_demo_config_t; - -extern web_demo_config_t web_demo_config; -/*---------------------------------------------------------------------------*/ -/** - * \brief Performs a lookup for a reading of a specific type of sensor - * \param sens_type WEB_DEMO_SENSOR_BATMON_TEMP... - * \return A pointer to the reading data structure or NULL - */ -const web_demo_sensor_reading_t *web_demo_sensor_lookup(int sens_type); - -/** - * \brief Returns the first available sensor reading - * \return A pointer to the reading data structure or NULL - */ -const web_demo_sensor_reading_t *web_demo_sensor_first(void); - -/** - * \brief Print an IPv6 address into a buffer - * \param buf A pointer to the buffer where this function will print the IPv6 - * address - * \param buf_len the length of the buffer - * \param addr A pointer to the IPv6 address - * \return The number of bytes written to the buffer - * - * It is the caller's responsibility to allocate enough space for buf - */ -int web_demo_ipaddr_sprintf(char *buf, uint8_t buf_len, - const uip_ipaddr_t *addr); - -/** - * \brief Resets the example to a default configuration - */ -void web_demo_restore_defaults(void); -/*---------------------------------------------------------------------------*/ -#endif /* WEB_DEMO_H_ */ -/*---------------------------------------------------------------------------*/ -/** - * @} - * @} - */

&YTNNEplw)aD0|;sK zA8rPSs$|KrJ3{j#-7LKWIX#z9x6z+(-9nX?By0KtNJUugRX{AlzZ7$)fvB+#F{G6x zelqTRVUiQn@k}l*e}*Vv4%?=K*(D}n&T4cx?p7lZ&waZ{F=4u~mV+SPZ*l5wv; zl8uS7n$IexnE=EWB&=?BjczOd=-*Jf!KftIzvFVi(Hgr{6hBLRVlX?&i1#wT%9XBhPgqlpZF~gq;8=%$ z@s!x4K{S^kz?F$%diL~5&ofLhfc7u`qH%|Tj&UInC*?@~dJib_AYzh!|5KSBq}l+u z9<0#E5}x+bH6ZTV1tmDod6r6x_iVxCw4XiW$&Di%ijEm8g8&T9n!79&s;P(cz4p2Y zY>T?f*l@wEC&*uY05zEb=xd52QM_!#JB20fZ4TZjD}!J(IAFkLAnaGx^pF$17xN49 z9sz71)fWUhB z_6s#DAb!=B4bD#j3Qhd18 zdK-`|p$3p9!HvzQn3GwgY4<;WxoX7~X~##vwH>8mu_!oQ-y{B$>Ys1Uf#aEDq9D+s zF@YWS!FKn8OBa4Rurm11NdtHGUkm#M)}G^JnKXYL|1%mnJK6gY1x!WV!}F8TxFrzC zi8BSxy42q-;$M`xfOyMf@3~27WMB1qGQh*zpTL>uTj70*u)5Pd4OG=R9sYIISnu}F z+BT_6Knm+$?XxtoSjsA_Mp7{fAXWJH89vrO&zb)tg96Orm?kf2R_4IDk}Gj4XJueF zfLZ{%DjyHBO|pR6?(O`U#L*G|KKB&wy?*|I7qWi;Z;e8Snjghlzgv`j2U%Y>``wpci}5)mGK@L|0~o{QCS5!6Pqi=Ed10itCcWy9>-6oP=o9nDnvA zz26q5&sO^Rky?rmfZApVu@Z+_E6`W*;=lNN?ZW@!HU4<>CGgu>hyQ_tyXzG2C->B3?LKy2pn z@@BM1H#g{d3Iu}VDI@woO%eut{g%u*m{g|kacy??x;NU)^G4wKPE2Q;{1D$OjrA zkY1*jb?4)wpP=GMR4j9uAL#Gy5&U8-`mUwi>%0>TiV9s1XohuIT>Im%P}TMOe+5oD z&ee#3zJ@8+;^U2tcvybx}Z5(%k zPMi%02zJeo_Vt=CNlsFmmu>Sd8nt~fioG5~cNG;k$7<}hsd)=%=XxkVJ9|BL&b=5b z{kcRTET)vVKk8_rCSUS13aT%;nL5flAJ|@la3+@4E`#MAgDSb*E-@`h#Ravfi&I%kN>gmsKUBdNQp<|Md|a48M5JQnT?(evE4Byz%Rhn z%r0bdcv7jtpK@r4%}baQR9z7W8fxu3Kj4UfBiD|+DyXi6Rd8Wwi=pH!7otLC zZoh{x(?luHPs=f#zB0vda%NY!1gsIk1A(>^YuKeEUqr6NHv2@8$9ZM$W?YDw!%N#e z{!q1_Es-mIo;Ml>Y3>-xk+dqR>vF%0$c#Jls(6Nz(G11_zJl+E;<08l|=ix|-+Yzf#PGA%qsMr+f<;rwg5wk_L2b7uwdVuii#Y zeHL3$C|H`UbAS6321PnzV1bH#{FwStw;!EeInr=s??)L9^RmVPnp!r&s|+m-9uW8a z?Gy^KGjV!(rNFWXw_*tzD{`Z12LD9qQajx77LLl#m6aJESLUH)6nl#IhL84w-$i(` zjK>>wQIM#>OQV=X1%8DyGox}zV7AHS<=cmUhY(RINugdl_dT95A$Q<|K2B3N7i1<$ z>)pa2g1Upqa5vYh?FR-Qjik`-r;?N;tUTkxN2IXC$4sbu^p_$9nhEmG`e=L{CILJf z*sf?N2KiE=ux7|H|1Jr2O5p1pcwlS!(}qsl-M)Kk*Oxsf?Rh^oBS<2UK+H~aN?J+g z3S#qGYYjhUC)WO;zYUebFwihDQ3NC5S3hT8J_=JmD`}cC8@3ivv>a3Ys@|$9wn1;w{F> zw7kXTc*M02Yar26Qg1M=LT+um6&MjlEq|$4dzP@jfG`ubQq3e}PsXX>B%F*DOZnva z`T2#@^9)j#$L&lKwKU-q7&S_9b+XyJQB1VSnb@$ie#_+U((B@Q_oQbHP-igBXT9OJ z1o%E&ILP(EHrckly@Vf>SC+7}G5?mBL9%x8opm#*Sj#gjKQ3aJb02D!TR_|q6l)WO zN$)&pt??oSV!LC4wiY+HTq!4mkL4oy8iVHhUTiFF-F6mq%6rCa#y#HN!FM;j18Pa+ z8S~mAt()$CKFlefN@lH>VKcQeN|!QI$kjsAN{70RtGaIdx9g~h z<;p$8@gDCu!mpHR{hZImhHd>w z{fm{F-qM;z5zd@$^CBBllDy>zjgq=X*W8x-;hnT)n>Ze~C%&TtOKFfmZni%4ZbPis z$KqDgpKh9L(nzh&+qq>KC2?&tz=kOL;O_SLI~>Q+hQ8v=dznf=P1+5P$0;GB5g!T{ z-3S`a)0yxU_PNUCe#A~=0e14vLZ!$yZ<>#*|Xhr(Ad47Ms~&?K^@Y`d8HSXOP^gyzG8CB zvmQdq4Ky{|iYcFxV6f-$_Eyf(tTZ#NcJh?t&X@Ne2s&3_X$DQWJ=?{C3m>?rTqUrg*t+bx2ELEes!jj6(Ni=)H^ELuY=Xa78gx!< zER;6~S9)$350^ccWb5g%oc~RgN_KZs98x)honI;&Z?dYM zdg`(G4Oa}ySZe}3M;rtjgGZU$XF^jNUCA;HgY(%vd%d{5-z-cO;Oknu+b8#p-8)Mr zg5&Mut4r(0$HV%)eXopao_BC3t}*Nux#Fv&ot00l*?ERU<2A&5Ma14h-SbfW5P5M9 zTWB8Shc9mqk5sqgKv>dpYAShhVJ(oH7So_ND1x`q<7rA(c#zV_=s&B5Ey5bTntI^w zgkyxdv;aPhD2MmZh}><$Zw}-z85LQ6enPcimTp;2Xxjkg&OYx>@=xu_)u#FWe!1GJ zU<-Hgq)wR;x}eEn^q~P?Qyp)t7>7lQdW{5V_>4`ZpiSkC>g<%|c)SsP$WCtMmDkRa z?`C!5K9X=B_oi9j>5Iv2s5V3DW*(9nknWvBD$hL}w`{VIQ?&gz_A~Q0t?M z0Yj~>HhadlbeCI>#|9(?O#IkV(RgBOq?pf`S#BxNg^VkjEi%Rx8HVQ5^iO9*4Jz{- zj5%!?HY>xyD*QpHE=iX4;G41H?`DcD=9g8WJRk(dR4Hgo8V5jp#k4X=-(%D)J%=n7 zd@6h&feqj=#np*7#pge#x|)0B5++Rdr50?~40Pdr1sCjA{jidlk_#M`l+Yn6+-)JK zI?;()w?cTZtrxv`+7Rsy`nqR7MpTZ!YUQC5bSwrvX=a~6u0B4GtG5g2F*dFQoIVBkExiC8u)#nJ=O6U!fltC2fvUyEF9rkB2^3KUw(G3UP$!`=l0{j|Q{DtS5T8cI9A%64&?yXq%BQ*u)tU6418KWl0qs;DE7K%qcI@X@*Y zV}@(6z*>GQ{E2k>-LcB>L&hMx#9t;WOgZ;$>~Uaz*`)Sf1!=r6WMxyCNeKU^5$` zEuyQR7R?WW8jaIR9v`fg@I#EQi-skU;DBQ*%Kpoc7QXz{_FC+cukX%HM%Isx?6)D^ zc6i${&PGFU{gFz%@NDaC!u1)9SMubDvol__#>U2#R;5+R+5=!do1)bfaxV`@1Z2W5 zYzZ!TeiZO2YvWu4%+?=TyT)wzTw5CzyPdaWBrSicI;I*bce6@;ikvB!YNa!a3VcaNJj-}OfZWOrhUhq8w|+C*&q}iE zcv$KfSgXAl6gXU%<<#5bRK&%FLakujosdvrTiXGnq3>Rd-jDpDA@|^>P?PLgJNxpi zb6@Q`O%ZQhdL7g6F8>em96imj zp(-7Z#Z{C~!*v{Bi7*L%g%Y~+Xk@udN=pIaZt!$Vi4Eo!poelw>u1a7Wx(Y~jETV^ zm$B6eF+ex9>Nvte8m8H@1@c{6MC4PUPL5)Or(y>gejO(k)si2+AibHTdpK!KhVI+W zelnI9vE)@W7$ozQP-$}7=vLbs`EvA0Q5(#Khd+{^)PAezk}}Ko_-460ZlE|hd|=XT zK{Lf#+mWwd#_4KeKx#C8t?|7<%|-h1_^UYtA0_P}uOU^kc9&AB*QevUWxaZ`@E@d#IUk(xU-lXxpwuPjvO3 zHF@1kT91Z`l*BA~ox4#Q+7OVs*%El>%wt|`$`!<#DPQPFC%;P5?U5ZRF4@@cvkUzT z+oNR{Csr*;xZ24{>E1@tS_^Ly`E%8d63|<2LBO?Z5&^@uhi5(mwpGlk2olwrS#cT! z`kBTS9pn;|#_8GBg+rv&kub`U0dPM@vIC8V>2(8QAj*?K8rx{#}Sne=i*HQ?$ zo+9D{kH1*)=q|uUKoAtM3jQhMFhl}}R(_TeyOH%F)Mu)<*}Gu#;n0hA-RvO|eaxyfwX~HS6U7JNEpvtK&>mnJ6D%M5V)1yrg|B3#FYI-i_a~uU!RJ*7{P# z$9$n2C=%72Dpw6G0ihRIz=Xd|gw4V=^5CEv`9;&Z)Hw4z-|9j%@ gj0HxbBm5nc;~Z%IGuxZ1yTG3MU9CHLw=7=%AB7liSpWb4 diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/quickstart-sensortag.png b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/quickstart-sensortag.png deleted file mode 100644 index a7ce7dabeb979afdf8a31a5803265281fb10636f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158808 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 MIn&AxK&B#q%BQyt^9Mm;?p>DPv~0V;+Nskt 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 diff --git a/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/sensor-readings-config.png b/examples/platform-specific/simplelink/cc13xx-cc26xx/web-demo/img/sensor-readings-config.png deleted file mode 100644 index 79c8e61e3f410f2500dda37b87466863464e2b8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33000 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