From abadc65caf9d5076f439b699fa1e70c1191d9a83 Mon Sep 17 00:00:00 2001 From: francescobarbarulo Date: Fri, 12 Apr 2019 16:44:20 +0200 Subject: [PATCH 1/3] First version of product --- project/product/Makefile | 12 +++++ project/product/product.c | 92 ++++++++++++++++++++++++++++++++++ project/product/project-conf.h | 46 +++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 project/product/Makefile create mode 100644 project/product/product.c create mode 100644 project/product/project-conf.h diff --git a/project/product/Makefile b/project/product/Makefile new file mode 100644 index 000000000..f971c57c5 --- /dev/null +++ b/project/product/Makefile @@ -0,0 +1,12 @@ +CONTIKI_PROJECT = product +PLATFORMS_ONLY = cc26x0-cc13x0 +all: $(CONTIKI_PROJECT) + +CONTIKI = ../.. + +PLATFORMS_EXCLUDE = nrf52dk + +#use this to enable TSCH: MAKE_MAC = MAKE_MAC_TSCH +MAKE_MAC ?= MAKE_MAC_CSMA +MAKE_NET = MAKE_NET_NULLNET +include $(CONTIKI)/Makefile.include diff --git a/project/product/product.c b/project/product/product.c new file mode 100644 index 000000000..9a2c125a8 --- /dev/null +++ b/project/product/product.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2017, RISE SICS. + * 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. + * + */ + +#include "net/netstack.h" +#include "net/nullnet/nullnet.h" +#include "os/net/linkaddr.h" +#include "os/dev/button-hal.h" +#include "os/dev/leds.h" +#include +#include +#include +#include "sys/log.h" +#include "sys/clock.h" +#include "contiki.h" + +#define LOG_MODULE "App" +#define LOG_LEVEL LOG_LEVEL_INFO + +static linkaddr_t dest_addr = {{0x00, 0x12, 0x4b, 0x00, 0x0f, 0x82, 0x18, 0x04}}; + + +struct Product { + char name[20]; + char expiration_date[8]; // gg/mm/yy + double price; +}; + +struct Product product_list[] = { + { "latte" , "21/12/19", 1.05 }, + { "pane" , "12/05/19", 3.25 }, + { "cioccolato", "05/05/21", 2.50 } +}; + + +PROCESS(product_proc, "product random generator"); +AUTOSTART_PROCESSES(&product_proc); + +void scan_product(struct Product *p){ + nullnet_buf = (uint8_t *)p; + nullnet_len = sizeof(*p); + NETSTACK_NETWORK.output(&dest_addr); + LOG_INFO("Product %s scanned from ", p->name); + LOG_INFO_LLADDR(&dest_addr); + LOG_INFO_("\n"); +} + +PROCESS_THREAD(product_proc, ev, data){ + PROCESS_BEGIN(); + // init random number generator + unsigned int magic_seed = 12; + srand(magic_seed); + + while(1) { + PROCESS_YIELD(); + if (ev == button_hal_press_event){ + + // product generation + unsigned int index = rand() % 3; + scan_product(&product_list[index]); + } + } + PROCESS_END(); +} diff --git a/project/product/project-conf.h b/project/product/project-conf.h new file mode 100644 index 000000000..39dfaaf54 --- /dev/null +++ b/project/product/project-conf.h @@ -0,0 +1,46 @@ +/* + * 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 CCXXWARE_CONF_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 +/*---------------------------------------------------------------------------*/ +/* log */ +#define LOG_CONF_LEVEL_NULLNET LOG_LEVEL_DBG +/*---------------------------------------------------------------------------*/ +#endif /* PROJECT_CONF_H_ */ +/*---------------------------------------------------------------------------*/ From e7bf80de713b20ff5a1b574a7f09481fcc8227cf Mon Sep 17 00:00:00 2001 From: francescobarbarulo Date: Fri, 12 Apr 2019 17:50:48 +0200 Subject: [PATCH 2/3] Added some comments --- project/product/product.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/project/product/product.c b/project/product/product.c index 9a2c125a8..22ff3e416 100644 --- a/project/product/product.c +++ b/project/product/product.c @@ -45,6 +45,7 @@ #define LOG_MODULE "App" #define LOG_LEVEL LOG_LEVEL_INFO +// !! TO INIT WITH CART MAC ADDRESS !! // static linkaddr_t dest_addr = {{0x00, 0x12, 0x4b, 0x00, 0x0f, 0x82, 0x18, 0x04}}; @@ -76,13 +77,12 @@ void scan_product(struct Product *p){ PROCESS_THREAD(product_proc, ev, data){ PROCESS_BEGIN(); // init random number generator - unsigned int magic_seed = 12; + unsigned int magic_seed = 12; // oooh :o srand(magic_seed); - + while(1) { PROCESS_YIELD(); if (ev == button_hal_press_event){ - // product generation unsigned int index = rand() % 3; scan_product(&product_list[index]); From dda6aa48ad2d8cbd5fe8943e5552fd80f295d890 Mon Sep 17 00:00:00 2001 From: "francesco.barbarulo" Date: Fri, 12 Apr 2019 17:53:11 +0200 Subject: [PATCH 3/3] Updated .gitignore for presentation file --- project/doc/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/project/doc/.gitignore b/project/doc/.gitignore index e3d2aec4e..0089b962e 100644 --- a/project/doc/.gitignore +++ b/project/doc/.gitignore @@ -1,2 +1,3 @@ bild/ dist/ +presentation.*