[cart] minor fixes -- not FSM looks very good and stable
This commit is contained in:
parent
25f28c16c2
commit
a051841635
@ -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 ***/
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user