diff --git a/project/Natalia/Makefile b/project/Natalia/Makefile new file mode 100644 index 000000000..bc6f57c8b --- /dev/null +++ b/project/Natalia/Makefile @@ -0,0 +1,12 @@ +CONTIKI_PROJECT = serial-test +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/Natalia/cassa.c b/project/Natalia/cassa.c new file mode 100644 index 000000000..0af02d040 --- /dev/null +++ b/project/Natalia/cassa.c @@ -0,0 +1,179 @@ +#include "net/netstack.h" +#include "net/nullnet/nullnet.h" +#include +#include +#include "sys/log.h" +#define LOG_MODULE "App" +#define LOG_LEVEL LOG_LEVEL_INFO + +#include "os/dev/serial-line.h" +#include "arch/cpu/cc26x0-cc13x0/dev/cc26xx-uart.h" + +#include + + + +#define MAX_CUSTOMERS 20 + +enum message_type{CASH_OUT_MSG, PRODUCT_MSG, ITEM_ELEM_MSG, BASKET_MSG, START_OF_LIST_PRODUCTS_MSG}; + +typedef struct basket_msg +{ + uint8_t n_products; + uint8_t customer_id; + linkaddr_t* address; + + +}basket_msg; + +typedef struct user_invoice +{ + uint8_t n_prods; + float total_sum; + uint8_t customer_id; + linkaddr_t* address_basket; + uint8_t empty; + + +}user_invoice; + +typedef struct cash_out_msg +{ + uint8_t customer_id; +}cash_out_msg; + +typedef struct product_msg{ + + uint8_t customer_id; + uint8_t product_id; + float prize; + +}product_msg; + +typedef struct msg{ + enum message_type msg_type; + cash_out_msg cash_out; + product_msg product; + basket_msg basket; + + + +}msg; + +PROCESS(cassa_main_process, "Cassa process"); +AUTOSTART_PROCESSES(&cassa_main_process); + +static uint8_t invoice_index(uint32_t customer_id, user_invoice invoices[]) +{ + + uint8_t i = 0; + for(i = 0; i< MAX_CUSTOMERS;i++) { + if (invoices[i].empty==0 && customer_id == invoices[i].customer_id) + return i; + + } + return -1; + +} + +static uint8_t index_free_spot(user_invoice invoices[]) +{ + uint8_t i = 0; + for(i = 0;i 0) { + invoices[index].total_sum += received_msg.product.prize; + invoices[index].n_prods--; + } + if (invoices[index].n_prods == 0) { + printf("Total sum for client %d is %f\n", (int)invoices[index].customer_id, invoices[index].total_sum); + invoices[index].empty = 1; + } + }else + printf("Customer with that id is not associated to any basket!"); + } + } +} + +PROCESS_THREAD(cassa_main_process, ev, data) { + PROCESS_BEGIN(); + + static uint8_t customer_id; + static msg bro_customer_id; + + cc26xx_uart_set_input(serial_line_input_byte); + serial_line_init(); + + nullnet_buf = (uint8_t*)&bro_customer_id; + nullnet_set_input_callback(input_callback); //this should be moved down? + + + printf("Dear customer, insert your card id\n"); + + while (true) { + PROCESS_WAIT_EVENT_UNTIL(ev == serial_line_event_message); + + printf("Customer's id: %s\n", (char*)data); + customer_id = atoi(data); + printf("id: %d\n", (int)customer_id); + + bro_customer_id.msg_type = CASH_OUT_MSG; + bro_customer_id.cash_out.customer_id = customer_id; + + LOG_INFO("Sending BROADCAST customer id: %d\n", (int)customer_id); + LOG_INFO_LLADDR(NULL); + LOG_INFO_("\n"); + nullnet_len = sizeof(bro_customer_id); + NETSTACK_NETWORK.output(NULL); + } + + PROCESS_END(); +} + diff --git a/project/Natalia/project-conf.h b/project/Natalia/project-conf.h new file mode 100644 index 000000000..3cbc0da86 --- /dev/null +++ b/project/Natalia/project-conf.h @@ -0,0 +1,43 @@ +/* + * 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 +/*---------------------------------------------------------------------------*/ +#endif /* PROJECT_CONF_H_ */ +/*---------------------------------------------------------------------------*/