[cart] minor fixes -- not FSM looks very good and stable

This commit is contained in:
giomba 2019-05-03 17:21:16 +02:00
parent 25f28c16c2
commit a051841635
2 changed files with 9 additions and 5 deletions

View File

@ -22,7 +22,7 @@ PROCESS_THREAD(cart_main_process, ev, data) {
/*** Variables initialization ***/ /*** Variables initialization ***/
// status = NOT_ASSOCIATED; // TODO DEBUG // status = NOT_ASSOCIATED; // TODO DEBUG
status = SHOPPING; // NOT_ASSOCIATED; status = NOT_ASSOCIATED; // SHOPPING; // NOT_ASSOCIATED;
etimer_set(&broadcast_timer, 5 * CLOCK_SECOND); etimer_set(&broadcast_timer, 5 * CLOCK_SECOND);
/*** Subsystem initialization ***/ /*** Subsystem initialization ***/

View File

@ -8,6 +8,7 @@ linkaddr_t assigner_address;
linkaddr_t cash_address; linkaddr_t cash_address;
uint32_t customer_id = 1234; uint32_t customer_id = 1234;
uint8_t nprod = 0; uint8_t nprod = 0;
uint16_t totalPrice = 0;
uint8_t nprod_index = 0; //variable used to keep track of the index of the product to be sent uint8_t nprod_index = 0; //variable used to keep track of the index of the product to be sent
product_t list[MAX_PRODUCT]; product_t list[MAX_PRODUCT];
@ -57,6 +58,7 @@ void s_shopping(process_event_t ev, process_data_t data) {
item_msg* m = (item_msg*)pkt.data; item_msg* m = (item_msg*)pkt.data;
memcpy(&list[nprod], &m->p, sizeof(product_t)); memcpy(&list[nprod], &m->p, sizeof(product_t));
printf("[I] Adding item #%d, id %d, price %d to cart\n", nprod, (int)list[nprod].product_id, (int)list[nprod].price); printf("[I] Adding item #%d, id %d, price %d to cart\n", nprod, (int)list[nprod].product_id, (int)list[nprod].price);
totalPrice+=list[nprod].price;
nprod++; nprod++;
} else { } else {
printf("[W] Too many products. Dropping.\n"); printf("[W] Too many products. Dropping.\n");
@ -93,7 +95,8 @@ void s_cash_out_wait4ack(process_event_t ev, process_data_t data) {
void s_cash_out_send_list(process_event_t ev, process_data_t data) { void s_cash_out_send_list(process_event_t ev, process_data_t data) {
/* Send list, then go back to initial state */ /* Send list, then go back to initial state */
printf("[I] Total price is %d\n", totalPrice);
if (nprod_index<nprod) { if (nprod_index<nprod) {
LOG_INFO("[I] Sending product %d of %d: id %d, price: %d\n", nprod_index, nprod - 1, (int)list[nprod_index].product_id, (int)list[nprod_index].price); LOG_INFO("[I] Sending product %d of %d: id %d, price: %d\n", nprod_index, nprod - 1, (int)list[nprod_index].product_id, (int)list[nprod_index].price);
product_msg m; product_msg m;
@ -103,16 +106,17 @@ void s_cash_out_send_list(process_event_t ev, process_data_t data) {
m.price = list[nprod_index].price; m.price = list[nprod_index].price;
net_send(&m, sizeof(m), &cash_address); net_send(&m, sizeof(m), &cash_address);
nprod_index++; nprod_index++;
} }
if (nprod_index == nprod) { if (nprod_index == nprod) {
nprod = 0; nprod = 0;
nprod_index = 0; nprod_index = 0;
customer_id = 1234; customer_id = 1234;
memset(&cash_address, 0, sizeof(cash_address)); memset(&cash_address, 0, sizeof(cash_address));
printf("[I] END. Go back to ASSOCIATED status\n"); printf("[I] END. Go back to ASSOCIATED status\n");
etimer_restart(&broadcast_timer); etimer_restart(&broadcast_timer);
status = SHOPPING; totalPrice = 0;
status = ASSOCIATED;
} }
} }