nes-proj/cart/sendrecv.c

67 lines
2.0 KiB
C
Raw Permalink Normal View History

2019-04-11 15:46:54 +00:00
#include "sendrecv.h"
struct MacPkt pkt;
2019-04-12 12:56:37 +00:00
uint8_t net_buffer[256];
void net_init() {
nullnet_buf = net_buffer;
nullnet_set_input_callback(net_recv);
}
2019-04-11 15:46:54 +00:00
void net_recv(const void* data, uint16_t len, const linkaddr_t* src, const linkaddr_t* dst) {
/* discard too long packet */
if (len > 128) {
LOG_INFO("[WW] dropping too long packet %d\n", len);
return;
}
/* fill packet to pass to upper processing layer */
memcpy(pkt.data, data, len);
pkt.len = len;
pkt.src = *src;
pkt.dst = *dst;
2019-04-16 13:48:04 +00:00
LOG_INFO("Received %d bytes from ", len); LOG_INFO_LLADDR(src);
LOG_INFO("type %d", ((msg*)data)->msg_type);
LOG_INFO("\n");
2019-04-11 15:46:54 +00:00
2019-04-12 14:44:25 +00:00
switch ( ((msg*)data)->msg_type ) {
2019-04-11 15:46:54 +00:00
case ASSOCIATION_REPLY_MSG:
event = CART_EVENT_ASSOCIATED;
process_post(&cart_main_process, PROCESS_EVENT_MSG, NULL);
break;
2019-04-12 14:30:05 +00:00
case ASSIGNMENT_MSG:
event = CART_EVENT_ASSIGNED;
process_post(&cart_main_process, PROCESS_EVENT_MSG, NULL);
break;
2019-04-14 13:28:10 +00:00
case ITEM_MSG:
event = CART_EVENT_NEW_PRODUCT;
process_post(&cart_main_process, PROCESS_EVENT_MSG, NULL);
break;
case CASH_OUT_MSG:
event = CART_EVENT_CASH_OUT;
process_post(&cart_main_process, PROCESS_EVENT_MSG, NULL);
break;
case START_OF_LIST_PRODUCTS_MSG:
event = CART_EVENT_CASH_OUT_ACK;
process_post(&cart_main_process, PROCESS_EVENT_MSG, NULL);
break;
case PRODUCT_PARTIAL_LIST_ACK:
event = CART_EVENT_CASH_OUT_PARTIAL_LIST_ACK;
process_post(&cart_main_process, PROCESS_EVENT_MSG, NULL);
break;
2019-04-11 15:46:54 +00:00
default:
LOG_INFO("[W] message type %d unknown\n", ((msg*)data)->msg_type);
2019-04-11 15:46:54 +00:00
break;
}
}
2019-04-12 12:56:37 +00:00
void net_send(const void* data, uint16_t len, const linkaddr_t* dst) {
printf("[I] sending msg type %d\n", ((msg*)data)->msg_type);
2019-04-12 12:56:37 +00:00
memcpy(net_buffer, data, len);
nullnet_len = len;
NETSTACK_NETWORK.output(dst);
}