From fe4bfbc5c6ae1524c34170bab2e1bcde263685a5 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Thu, 4 Feb 2016 22:15:23 +0100 Subject: [PATCH 2/4] Rename colliding files and functions --- emb6/emb6.c | 2 +- emb6/inc/apl/rest-engine/rest-engine.h | 2 +- emb6/inc/net/ipv6/uip-ds6-route.h | 2 +- emb6/inc/net/rpl/rpl-private.h | 2 +- emb6/inc/net/rpl/rpl.h | 2 +- emb6/src/apl/er-coap/er-coap-observe.c | 4 +- emb6/src/apl/er-coap/er-coap-transactions.c | 6 +- emb6/src/apl/er-coap/er-coap.c | 2 +- emb6/src/apl/rest-engine/rest-engine.c | 4 +- emb6/src/mac/framer-802154.c | 2 +- emb6/src/mac/sicslowmac.c | 2 +- emb6/src/net/ipv6/multicast/roll-tm.c | 2 +- emb6/src/net/ipv6/multicast/smrf.c | 2 +- emb6/src/net/ipv6/multicast/uip-mcast6-route.c | 6 +- emb6/src/net/ipv6/nbr-table.c | 6 +- emb6/src/net/ipv6/uip-ds6-nbr.c | 2 +- emb6/src/net/ipv6/uip-ds6-route.c | 16 +-- emb6/src/net/ipv6/uip-ds6.c | 6 +- emb6/src/net/ipv6/uip-icmp6.c | 6 +- emb6/src/net/ipv6/uip-nameserver.c | 8 +- emb6/src/net/ipv6/uip-nd6.c | 2 +- emb6/src/net/rpl/rpl-dag.c | 2 +- emb6/src/net/rpl/rpl-timers.c | 2 +- emb6/src/net/sicslowpan/sicslowpan.c | 2 +- emb6/src/tport/tcp-socket.c | 6 +- emb6/src/tport/udp-socket.c | 2 +- target/bsp/bsp.c | 2 +- target/if/at86rf212b/at86rf212b.c | 2 +- utils/inc/clist.h | 163 ------------------------- utils/inc/emb6_clist.h | 163 +++++++++++++++++++++++++ utils/inc/emb6_random.h | 57 +++++++++ utils/inc/emb6_ringbuffer.h | 162 ++++++++++++++++++++++++ utils/inc/random.h | 57 --------- utils/inc/ringbuffer.h | 162 ------------------------ utils/inc/timer.h | 4 +- utils/src/ctimer.c | 16 +-- utils/src/etimer.c | 12 +- utils/src/evproc.c | 2 +- utils/src/list.c | 10 +- utils/src/mmem.c | 6 +- utils/src/queuebuf.c | 6 +- utils/src/random.c | 2 +- utils/src/ringbuffer.c | 2 +- utils/src/timer.c | 6 +- 44 files changed, 467 insertions(+), 467 deletions(-) delete mode 100644 utils/inc/clist.h create mode 100644 utils/inc/emb6_clist.h create mode 100644 utils/inc/emb6_random.h create mode 100644 utils/inc/emb6_ringbuffer.h delete mode 100644 utils/inc/random.h delete mode 100644 utils/inc/ringbuffer.h diff --git a/emb6/emb6.c b/emb6/emb6.c index 2912049..682b7c2 100644 --- a/emb6/emb6.c +++ b/emb6/emb6.c @@ -64,7 +64,7 @@ #include "queuebuf.h" #include "linkaddr.h" #include "ctimer.h" -#include "random.h" +#include "emb6_random.h" #if NETSTACK_CONF_WITH_IPV6 #include "uip-ds6.h" diff --git a/emb6/inc/apl/rest-engine/rest-engine.h b/emb6/inc/apl/rest-engine/rest-engine.h index 2c16c2b..fc0dca5 100644 --- a/emb6/inc/apl/rest-engine/rest-engine.h +++ b/emb6/inc/apl/rest-engine/rest-engine.h @@ -41,7 +41,7 @@ #define REST_ENGINE_H_ -#include "clist.h" +#include "emb6_clist.h" #include "etimer.h" diff --git a/emb6/inc/net/ipv6/uip-ds6-route.h b/emb6/inc/net/ipv6/uip-ds6-route.h index 000b327..31ed0e9 100644 --- a/emb6/inc/net/ipv6/uip-ds6-route.h +++ b/emb6/inc/net/ipv6/uip-ds6-route.h @@ -42,7 +42,7 @@ #define UIP_DS6_ROUTE_H #include "stimer.h" -#include "clist.h" +#include "emb6_clist.h" void uip_ds6_route_init(void); diff --git a/emb6/inc/net/rpl/rpl-private.h b/emb6/inc/net/rpl/rpl-private.h index 9da5744..5ded041 100644 --- a/emb6/inc/net/rpl/rpl-private.h +++ b/emb6/inc/net/rpl/rpl-private.h @@ -39,7 +39,7 @@ #include "rpl.h" -#include "clist.h" +#include "emb6_clist.h" #include "uip.h" #include "bsp.h" #include "ctimer.h" diff --git a/emb6/inc/net/rpl/rpl.h b/emb6/inc/net/rpl/rpl.h index 574ca5e..7269948 100644 --- a/emb6/inc/net/rpl/rpl.h +++ b/emb6/inc/net/rpl/rpl.h @@ -41,7 +41,7 @@ #include "emb6_conf.h" #include "emb6.h" -#include "clist.h" +#include "emb6_clist.h" #include "uip.h" #include "uip-ds6.h" #include "ctimer.h" diff --git a/emb6/src/apl/er-coap/er-coap-observe.c b/emb6/src/apl/er-coap/er-coap-observe.c index 57754ac..84659a9 100644 --- a/emb6/src/apl/er-coap/er-coap-observe.c +++ b/emb6/src/apl/er-coap/er-coap-observe.c @@ -80,7 +80,7 @@ coap_add_observer(uip_ipaddr_t *addr, uint16_t port, const uint8_t *token, PRINTF("Adding observer (%u/%u) for /%s [0x%02X%02X]\n", list_length(observers_list) + 1, COAP_MAX_OBSERVERS, o->url, o->token[0], o->token[1]); - list_add(observers_list, o); + emb6_list_add(observers_list, o); } return o; @@ -95,7 +95,7 @@ coap_remove_observer(coap_observer_t *o) o->token[1]); memb_free(&observers_memb, o); - list_remove(observers_list, o); + emb6_list_remove(observers_list, o); } /*---------------------------------------------------------------------------*/ int diff --git a/emb6/src/apl/er-coap/er-coap-transactions.c b/emb6/src/apl/er-coap/er-coap-transactions.c index e40f4c9..7cbf254 100644 --- a/emb6/src/apl/er-coap/er-coap-transactions.c +++ b/emb6/src/apl/er-coap/er-coap-transactions.c @@ -43,7 +43,7 @@ #include "timer.h" #include "evproc.h" #include "memb.h" -#include "random.h" +#include "emb6_random.h" #include "tcpip.h" @@ -84,7 +84,7 @@ coap_new_transaction(uint16_t mid, uip_ipaddr_t *addr, uint16_t port) t->addr = *addr; t->port = port; - list_add(transactions_list, t); /* list itself makes sure same element is not added twice */ + emb6_list_add(transactions_list, t); /* list itself makes sure same element is not added twice */ } return t; @@ -148,7 +148,7 @@ coap_clear_transaction(coap_transaction_t *t) PRINTF("Freeing transaction %u: %p\n\r", t->mid, t); etimer_stop(&t->retrans_timer); - list_remove(transactions_list, t); + emb6_list_remove(transactions_list, t); memb_free(&transactions_memb, t); } } diff --git a/emb6/src/apl/er-coap/er-coap.c b/emb6/src/apl/er-coap/er-coap.c index 40f6874..a8125a2 100644 --- a/emb6/src/apl/er-coap/er-coap.c +++ b/emb6/src/apl/er-coap/er-coap.c @@ -39,7 +39,7 @@ #include #include -#include "random.h" +#include "emb6_random.h" #include "er-coap.h" #include "er-coap-transactions.h" diff --git a/emb6/src/apl/rest-engine/rest-engine.c b/emb6/src/apl/rest-engine/rest-engine.c index fd8d1ba..818f326 100644 --- a/emb6/src/apl/rest-engine/rest-engine.c +++ b/emb6/src/apl/rest-engine/rest-engine.c @@ -104,7 +104,7 @@ rest_activate_resource(resource_t *resource, char *path) { resource->url = path; struct periodic_resource_s * periodic = resource->un_handler.periodic; - list_add(restful_services, resource); + emb6_list_add(restful_services, resource); PRINTF("Activating: %s\n\r", resource->url); @@ -112,7 +112,7 @@ rest_activate_resource(resource_t *resource, char *path) if((resource->flags & IS_PERIODIC) && periodic->periodic_handler && periodic->period) { PRINTF("Periodic resource: %p (%s)\n", periodic,periodic->resource->url); - list_add(restful_periodic_services, periodic); + emb6_list_add(restful_periodic_services, periodic); } for(periodic_resource = diff --git a/emb6/src/mac/framer-802154.c b/emb6/src/mac/framer-802154.c index f99486d..359ee6b 100644 --- a/emb6/src/mac/framer-802154.c +++ b/emb6/src/mac/framer-802154.c @@ -45,7 +45,7 @@ #include "frame802154.h" #include "llsec802154.h" #include "packetbuf.h" -#include "random.h" +#include "emb6_random.h" diff --git a/emb6/src/mac/sicslowmac.c b/emb6/src/mac/sicslowmac.c index 7219fa8..c741131 100644 --- a/emb6/src/mac/sicslowmac.c +++ b/emb6/src/mac/sicslowmac.c @@ -51,7 +51,7 @@ #include "frame802154.h" #include "packetbuf.h" #include "queuebuf.h" -#include "random.h" +#include "emb6_random.h" #define DEBUG DEBUG_NONE diff --git a/emb6/src/net/ipv6/multicast/roll-tm.c b/emb6/src/net/ipv6/multicast/roll-tm.c index 8fb1717..8b36300 100644 --- a/emb6/src/net/ipv6/multicast/roll-tm.c +++ b/emb6/src/net/ipv6/multicast/roll-tm.c @@ -51,7 +51,7 @@ #include "roll-tm.h" #include "bsp.h" #include "ctimer.h" -#include "random.h" +#include "emb6_random.h" //#include "dev/watchdog.h" //#include diff --git a/emb6/src/net/ipv6/multicast/smrf.c b/emb6/src/net/ipv6/multicast/smrf.c index 474c41d..9b4a3a5 100644 --- a/emb6/src/net/ipv6/multicast/smrf.c +++ b/emb6/src/net/ipv6/multicast/smrf.c @@ -52,7 +52,7 @@ #include "smrf.h" #include "rpl.h" #include "packetbuf.h" -#include "random.h" +#include "emb6_random.h" //#include "net/netstack.h" #define DEBUG DEBUG_NONE diff --git a/emb6/src/net/ipv6/multicast/uip-mcast6-route.c b/emb6/src/net/ipv6/multicast/uip-mcast6-route.c index aa0caff..995ff0c 100644 --- a/emb6/src/net/ipv6/multicast/uip-mcast6-route.c +++ b/emb6/src/net/ipv6/multicast/uip-mcast6-route.c @@ -43,7 +43,7 @@ //#include "contiki.h" #include "emb6_conf.h" #include "emb6.h" -#include "clist.h" +#include "emb6_clist.h" #include "memb.h" #include "uip.h" #include "uip-mcast6-route.h" @@ -88,7 +88,7 @@ uip_mcast6_route_add(uip_ipaddr_t *group) if(locmcastrt == NULL) { return NULL; } - list_add(mcast_route_list, locmcastrt); + emb6_list_add(mcast_route_list, locmcastrt); } /* Reaching here means we either found the prefix or allocated a new one */ @@ -106,7 +106,7 @@ uip_mcast6_route_rm(uip_mcast6_route_t *route) locmcastrt != NULL; locmcastrt = list_item_next(locmcastrt)) { if(locmcastrt == route) { - list_remove(mcast_route_list, route); + emb6_list_remove(mcast_route_list, route); memb_free(&mcast_route_memb, route); return; } diff --git a/emb6/src/net/ipv6/nbr-table.c b/emb6/src/net/ipv6/nbr-table.c index 7dedece..d72c1c9 100644 --- a/emb6/src/net/ipv6/nbr-table.c +++ b/emb6/src/net/ipv6/nbr-table.c @@ -41,7 +41,7 @@ #include #include #include "memb.h" -#include "clist.h" +#include "emb6_clist.h" #include "nbr-table.h" /* List of link-layer addresses of the neighbors, used as key in the tables */ @@ -221,7 +221,7 @@ nbr_table_allocate(void) /* Empty used map */ used_map[index_from_key(least_used_key)] = 0; /* Remove neighbor from list */ - list_remove(nbr_table_keys, least_used_key); + emb6_list_remove(nbr_table_keys, least_used_key); /* Return associated key */ return least_used_key; } @@ -295,7 +295,7 @@ nbr_table_add_lladdr(nbr_table_t *table, const linkaddr_t *lladdr) } /* Add neighbor to list */ - list_add(nbr_table_keys, key); + emb6_list_add(nbr_table_keys, key); /* Get index from newly allocated neighbor */ index = index_from_key(key); diff --git a/emb6/src/net/ipv6/uip-ds6-nbr.c b/emb6/src/net/ipv6/uip-ds6-nbr.c index 360fdbc..53ad8da 100644 --- a/emb6/src/net/ipv6/uip-ds6-nbr.c +++ b/emb6/src/net/ipv6/uip-ds6-nbr.c @@ -46,7 +46,7 @@ #include #include #include -#include "clist.h" +#include "emb6_clist.h" #include "linkaddr.h" #include "packetbuf.h" #include "uip-ds6-nbr.h" diff --git a/emb6/src/net/ipv6/uip-ds6-route.c b/emb6/src/net/ipv6/uip-ds6-route.c index c732f78..e54a18f 100644 --- a/emb6/src/net/ipv6/uip-ds6-route.c +++ b/emb6/src/net/ipv6/uip-ds6-route.c @@ -42,7 +42,7 @@ #include "uip-ds6.h" #include "uip.h" -#include "clist.h" +#include "emb6_clist.h" #include "memb.h" #include "nbr-table.h" @@ -133,14 +133,14 @@ uip_ds6_notification_add(struct uip_ds6_notification *n, { if(n != NULL && c != NULL) { n->callback = c; - list_add(notificationlist, n); + emb6_list_add(notificationlist, n); } } /*---------------------------------------------------------------------------*/ void uip_ds6_notification_rm(struct uip_ds6_notification *n) { - list_remove(notificationlist, n); + emb6_list_remove(notificationlist, n); } #endif /*---------------------------------------------------------------------------*/ @@ -249,7 +249,7 @@ uip_ds6_route_lookup(uip_ipaddr_t *addr) list. The list is ordered by how recently we looked them up: the least recently used route will be at the end of the list - for fast lookups (assuming multiple packets to the same node). */ - list_remove(routelist, found_route); + emb6_list_remove(routelist, found_route); list_push(routelist, found_route); } @@ -375,7 +375,7 @@ uip_ds6_route_add(uip_ipaddr_t *ipaddr, uint8_t length, nbrr->route = r; /* Add the route to this neighbor */ - list_add(routes->route_list, nbrr); + emb6_list_add(routes->route_list, nbrr); r->neighbor_routes = routes; num_routes++; @@ -421,7 +421,7 @@ uip_ds6_route_rm(uip_ds6_route_t *route) PRINTF("\n\r"); /* Remove the route from the route list */ - list_remove(routelist, route); + emb6_list_remove(routelist, route); /* Find the corresponding neighbor_route and remove it. */ for(neighbor_route = list_head(route->neighbor_routes->route_list); @@ -433,7 +433,7 @@ uip_ds6_route_rm(uip_ds6_route_t *route) uip_debug_ipaddr_print(&route->ipaddr); PRINTF("\n"); } - list_remove(route->neighbor_routes->route_list, neighbor_route); + emb6_list_remove(route->neighbor_routes->route_list, neighbor_route); if(list_head(route->neighbor_routes->route_list) == NULL) { /* If this was the only route using this neighbor, remove the neibhor from the table */ @@ -581,7 +581,7 @@ uip_ds6_defrt_rm(uip_ds6_defrt_t *defrt) d = list_item_next(d)) { if(d == defrt) { PRINTF("Removing default route\n\r"); - list_remove(defaultrouterlist, defrt); + emb6_list_remove(defaultrouterlist, defrt); memb_free(&defaultroutermemb, defrt); ANNOTATE("#L %u 0\n\r", defrt->ipaddr.u8[sizeof(uip_ipaddr_t) - 1]); #if UIP_DS6_NOTIFICATIONS diff --git a/emb6/src/net/ipv6/uip-ds6.c b/emb6/src/net/ipv6/uip-ds6.c index 0e2f16a..ad3f4cd 100644 --- a/emb6/src/net/ipv6/uip-ds6.c +++ b/emb6/src/net/ipv6/uip-ds6.c @@ -49,7 +49,7 @@ #include #include #include -#include "random.h" +#include "emb6_random.h" #include "uip-nd6.h" #include "uip-ds6.h" #include "uip-packetqueue.h" @@ -343,7 +343,7 @@ uip_ds6_addr_add(uip_ipaddr_t *ipaddr, unsigned long vlifetime, uint8_t type) } #if UIP_ND6_DEF_MAXDADNS > 0 locaddr->state = ADDR_TENTATIVE; - timer_set(&locaddr->dadtimer, + timer_emb6_set(&locaddr->dadtimer, random_rand() % (UIP_ND6_MAX_RTR_SOLICITATION_DELAY * bsp_get(E_BSP_GET_TRES))); locaddr->dadnscount = 0; @@ -591,7 +591,7 @@ uip_ds6_dad(uip_ds6_addr_t *addr) if(addr->dadnscount < uip_ds6_if.maxdadns) { uip_nd6_ns_output(NULL, NULL, &addr->ipaddr); addr->dadnscount++; - timer_set(&addr->dadtimer, + timer_emb6_set(&addr->dadtimer, uip_ds6_if.retrans_timer / 1000 * bsp_get(E_BSP_GET_TRES)); return; } diff --git a/emb6/src/net/ipv6/uip-icmp6.c b/emb6/src/net/ipv6/uip-icmp6.c index 00828a3..2d8b485 100644 --- a/emb6/src/net/ipv6/uip-icmp6.c +++ b/emb6/src/net/ipv6/uip-icmp6.c @@ -114,7 +114,7 @@ uip_icmp6_input(uint8_t type, uint8_t icode) void uip_icmp6_register_input_handler(uip_icmp6_input_handler_t *handler) { - list_add(input_handler_list, handler); + emb6_list_add(input_handler_list, handler); } /*---------------------------------------------------------------------------*/ static void @@ -393,14 +393,14 @@ uip_icmp6_echo_reply_callback_add(struct uip_icmp6_echo_reply_notification *n, { if(n != NULL && c != NULL) { n->callback = c; - list_add(echo_reply_callback_list, n); + emb6_list_add(echo_reply_callback_list, n); } } /*---------------------------------------------------------------------------*/ void uip_icmp6_echo_reply_callback_rm(struct uip_icmp6_echo_reply_notification *n) { - list_remove(echo_reply_callback_list, n); + emb6_list_remove(echo_reply_callback_list, n); } /*---------------------------------------------------------------------------*/ UIP_ICMP6_HANDLER(echo_request_handler, ICMP6_ECHO_REQUEST, diff --git a/emb6/src/net/ipv6/uip-nameserver.c b/emb6/src/net/ipv6/uip-nameserver.c index 9701b26..4d1d6d3 100644 --- a/emb6/src/net/ipv6/uip-nameserver.c +++ b/emb6/src/net/ipv6/uip-nameserver.c @@ -46,7 +46,7 @@ #include "uip.h" #include "uip-nameserver.h" #include "bsp.h" -#include "clist.h" +#include "emb6_clist.h" #include "memb.h" #include @@ -113,7 +113,7 @@ uip_nameserver_update(uip_ipaddr_t *nameserver, uint32_t lifetime) if(e == NULL) { if((e = memb_alloc(&dnsmemb)) != NULL) { - list_add(dns, e); + emb6_list_add(dns, e); } else { uip_nameserver_record *p; for(e = list_head(dns), p = list_head(dns); p != NULL; @@ -130,7 +130,7 @@ uip_nameserver_update(uip_ipaddr_t *nameserver, uint32_t lifetime) if(e != NULL) { if(lifetime == 0) { memb_free(&dnsmemb, e); - list_remove(dns, e); + emb6_list_remove(dns, e); } else { e->added = bsp_getTick(); e->lifetime = lifetime; @@ -154,7 +154,7 @@ purge(void) uint32_t time = bsp_getTick(); for(e = list_head(dns); e != NULL; e = list_item_next(e)) { if(DNS_EXPIRATION(e) < time) { - list_remove(dns, e); + emb6_list_remove(dns, e); memb_free(&dnsmemb, e); e = list_head(dns); } diff --git a/emb6/src/net/ipv6/uip-nd6.c b/emb6/src/net/ipv6/uip-nd6.c index 8758a8f..f04b6b3 100644 --- a/emb6/src/net/ipv6/uip-nd6.c +++ b/emb6/src/net/ipv6/uip-nd6.c @@ -78,7 +78,7 @@ #include "uip-ds6.h" #include "uip-nameserver.h" #include "bsp.h" -#include "random.h" +#include "emb6_random.h" /*------------------------------------------------------------------*/ #define DEBUG DEBUG_NONE diff --git a/emb6/src/net/rpl/rpl-dag.c b/emb6/src/net/rpl/rpl-dag.c index cc11eab..4a85b70 100644 --- a/emb6/src/net/rpl/rpl-dag.c +++ b/emb6/src/net/rpl/rpl-dag.c @@ -50,7 +50,7 @@ #if UIP_CONF_IPV6_MULTICAST #include "uip-mcast6.h" #endif -#include "clist.h" +#include "emb6_clist.h" #include "memb.h" #include "ctimer.h" diff --git a/emb6/src/net/rpl/rpl-timers.c b/emb6/src/net/rpl/rpl-timers.c index 9b235d4..439b45d 100644 --- a/emb6/src/net/rpl/rpl-timers.c +++ b/emb6/src/net/rpl/rpl-timers.c @@ -47,7 +47,7 @@ #if UIP_CONF_IPV6_MULTICAST #include "uip-mcast6.h" #endif -#include "random.h" +#include "emb6_random.h" #include "ctimer.h" #define DEBUG DEBUG_NONE diff --git a/emb6/src/net/sicslowpan/sicslowpan.c b/emb6/src/net/sicslowpan/sicslowpan.c index 8c909cf..79afefe 100644 --- a/emb6/src/net/sicslowpan/sicslowpan.c +++ b/emb6/src/net/sicslowpan/sicslowpan.c @@ -1738,7 +1738,7 @@ input(void) sicslowpan_len = frag_size; reass_tag = frag_tag; - timer_set(&reass_timer, SICSLOWPAN_REASS_MAXAGE * bsp_get(E_BSP_GET_TRES)); + timer_emb6_set(&reass_timer, SICSLOWPAN_REASS_MAXAGE * bsp_get(E_BSP_GET_TRES)); PRINTFI("sicslowpan input: INIT FRAGMENTATION (len %d, tag %d)\n\r", sicslowpan_len, reass_tag); linkaddr_copy(&frag_sender, packetbuf_addr(PACKETBUF_ADDR_SENDER)); diff --git a/emb6/src/tport/tcp-socket.c b/emb6/src/tport/tcp-socket.c index 3974bad..05490f6 100644 --- a/emb6/src/tport/tcp-socket.c +++ b/emb6/src/tport/tcp-socket.c @@ -31,7 +31,7 @@ #include "emb6.h" #include "bsp.h" -#include "clist.h" +#include "emb6_clist.h" #include "etimer.h" #include "tcp-socket.h" @@ -276,7 +276,7 @@ tcp_socket_register(struct tcp_socket *s, void *ptr, s->output_data_maxlen = output_databuf_len; s->input_callback = input_callback; s->event_callback = event_callback; - list_add(socketlist, s); + emb6_list_add(socketlist, s); s->listen_port = 0; s->flags = TCP_SOCKET_FLAGS_NONE; @@ -386,7 +386,7 @@ tcp_socket_unregister(struct tcp_socket *s) if(s->c != NULL) { tcp_attach(s->c, NULL); } - list_remove(socketlist, s); + emb6_list_remove(socketlist, s); return 1; } /*---------------------------------------------------------------------------*/ diff --git a/emb6/src/tport/udp-socket.c b/emb6/src/tport/udp-socket.c index be27a5f..545f6bd 100644 --- a/emb6/src/tport/udp-socket.c +++ b/emb6/src/tport/udp-socket.c @@ -31,7 +31,7 @@ #include "emb6.h" #include "bsp.h" -#include "clist.h" +#include "emb6_clist.h" #include "etimer.h" #include "emb6_conf.h" #include "tcpip.h" diff --git a/target/bsp/bsp.c b/target/bsp/bsp.c index 85c9976..bf266b8 100644 --- a/target/bsp/bsp.c +++ b/target/bsp/bsp.c @@ -63,7 +63,7 @@ #include "board_conf.h" #include "etimer.h" -#include "random.h" +#include "emb6_random.h" #include "evproc.h" /*============================================================================== MACROS diff --git a/target/if/at86rf212b/at86rf212b.c b/target/if/at86rf212b/at86rf212b.c index aba87d5..c059568 100644 --- a/target/if/at86rf212b/at86rf212b.c +++ b/target/if/at86rf212b/at86rf212b.c @@ -67,7 +67,7 @@ #include "ctimer.h" #include "packetbuf.h" -#include "ringbuffer.h" +#include "emb6_ringbuffer.h" /*============================================================================== MACROS diff --git a/utils/inc/clist.h b/utils/inc/clist.h deleted file mode 100644 index 0e26be8..0000000 --- a/utils/inc/clist.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * 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. - * - * Author: Adam Dunkels - * - * $Id: clist.h,v 1.5 2010/09/13 13:31:00 adamdunkels Exp $ - */ - -/** - * \addtogroup utils - * @{ */ -/** \addtogroup lib - @{ */ -/** - * \defgroup list Linked list library - * - * The linked list library provides a set of functions for - * manipulating linked lists. - * - * A linked list is made up of elements where the first element \b - * must be a pointer. This pointer is used by the linked list library - * to form lists of the elements. - * - * Lists are declared with the LIST() macro. The declaration specifies - * the name of the list that later is used with all list functions. - * - * Lists can be manipulated by inserting or removing elements from - * either sides of the list (list_push(), list_add(), list_pop(), - * list_chop()). A specified element can also be removed from inside a - * list with list_remove(). The head and tail of a list can be - * extracted using list_head() and list_tail(), respectively. - * - * @{ - */ - -/** - * \file - * Linked list manipulation routines. - * \author Adam Dunkels - * - * - */ - -#ifndef LIST_H_ -#define LIST_H_ - -#define LIST_CONCAT2(s1, s2) s1##s2 -#define LIST_CONCAT(s1, s2) LIST_CONCAT2(s1, s2) - -/** - * Declare a linked list. - * - * This macro declares a linked list with the specified \c type. The - * type \b must be a structure (\c struct) with its first element - * being a pointer. This pointer is used by the linked list library to - * form the linked lists. - * - * The list variable is declared as static to make it easy to use in a - * single C module without unnecessarily exporting the name to other - * modules. - * - * \param name The name of the list. - */ -#define LIST(name) \ - static void *LIST_CONCAT(name,_list) = NULL; \ - static list_t name = (list_t)&LIST_CONCAT(name,_list) - -/** - * Declare a linked list inside a structure declaraction. - * - * This macro declares a linked list with the specified \c type. The - * type \b must be a structure (\c struct) with its first element - * being a pointer. This pointer is used by the linked list library to - * form the linked lists. - * - * Internally, the list is defined as two items: the list itself and a - * pointer to the list. The pointer has the name of the parameter to - * the macro and the name of the list is a concatenation of the name - * and the suffix "_list". The pointer must point to the list for the - * list to work. Thus the list must be initialized before using. - * - * The list is initialized with the LIST_STRUCT_INIT() macro. - * - * \param name The name of the list. - */ -#define LIST_STRUCT(name) \ - void *LIST_CONCAT(name,_list); \ - list_t name - -/** - * Initialize a linked list that is part of a structure. - * - * This macro sets up the internal pointers in a list that has been - * defined as part of a struct. This macro must be called before using - * the list. - * - * \param struct_ptr A pointer to the struct - * \param name The name of the list. - */ -#define LIST_STRUCT_INIT(struct_ptr, name) \ - do { \ - (struct_ptr)->name = &((struct_ptr)->LIST_CONCAT(name,_list)); \ - (struct_ptr)->LIST_CONCAT(name,_list) = NULL; \ - list_init((struct_ptr)->name); \ - } while(0) - -/** - * The linked list type. - * - */ -typedef void ** list_t; - -void list_init(list_t list); -void * list_head(list_t list); -void * list_tail(list_t list); -void * list_pop (list_t list); -void list_push(list_t list, void *item); - -void * list_chop(list_t list); - -void list_add(list_t list, void *item); -void list_remove(list_t list, void *item); - -int list_length(list_t list); - -void list_copy(list_t dest, list_t src); - -void list_insert(list_t list, void *previtem, void *newitem); - -void * list_item_next(void *item); - -#endif /* LIST_H_ */ - -/** @} */ -/** @} */ -/** @} */ diff --git a/utils/inc/emb6_clist.h b/utils/inc/emb6_clist.h new file mode 100644 index 0000000..a104f29 --- /dev/null +++ b/utils/inc/emb6_clist.h @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * 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. + * + * Author: Adam Dunkels + * + * $Id: emb6_clist.h,v 1.5 2010/09/13 13:31:00 adamdunkels Exp $ + */ + +/** + * \addtogroup utils + * @{ */ +/** \addtogroup lib + @{ */ +/** + * \defgroup list Linked list library + * + * The linked list library provides a set of functions for + * manipulating linked lists. + * + * A linked list is made up of elements where the first element \b + * must be a pointer. This pointer is used by the linked list library + * to form lists of the elements. + * + * Lists are declared with the LIST() macro. The declaration specifies + * the name of the list that later is used with all list functions. + * + * Lists can be manipulated by inserting or removing elements from + * either sides of the list (list_push(), emb6_list_add(), list_pop(), + * list_chop()). A specified element can also be removed from inside a + * list with emb6_list_remove(). The head and tail of a list can be + * extracted using list_head() and list_tail(), respectively. + * + * @{ + */ + +/** + * \file + * Linked list manipulation routines. + * \author Adam Dunkels + * + * + */ + +#ifndef LIST_H_ +#define LIST_H_ + +#define LIST_CONCAT2(s1, s2) s1##s2 +#define LIST_CONCAT(s1, s2) LIST_CONCAT2(s1, s2) + +/** + * Declare a linked list. + * + * This macro declares a linked list with the specified \c type. The + * type \b must be a structure (\c struct) with its first element + * being a pointer. This pointer is used by the linked list library to + * form the linked lists. + * + * The list variable is declared as static to make it easy to use in a + * single C module without unnecessarily exporting the name to other + * modules. + * + * \param name The name of the list. + */ +#define LIST(name) \ + static void *LIST_CONCAT(name,_list) = NULL; \ + static list_t name = (list_t)&LIST_CONCAT(name,_list) + +/** + * Declare a linked list inside a structure declaraction. + * + * This macro declares a linked list with the specified \c type. The + * type \b must be a structure (\c struct) with its first element + * being a pointer. This pointer is used by the linked list library to + * form the linked lists. + * + * Internally, the list is defined as two items: the list itself and a + * pointer to the list. The pointer has the name of the parameter to + * the macro and the name of the list is a concatenation of the name + * and the suffix "_list". The pointer must point to the list for the + * list to work. Thus the list must be initialized before using. + * + * The list is initialized with the LIST_STRUCT_INIT() macro. + * + * \param name The name of the list. + */ +#define LIST_STRUCT(name) \ + void *LIST_CONCAT(name,_list); \ + list_t name + +/** + * Initialize a linked list that is part of a structure. + * + * This macro sets up the internal pointers in a list that has been + * defined as part of a struct. This macro must be called before using + * the list. + * + * \param struct_ptr A pointer to the struct + * \param name The name of the list. + */ +#define LIST_STRUCT_INIT(struct_ptr, name) \ + do { \ + (struct_ptr)->name = &((struct_ptr)->LIST_CONCAT(name,_list)); \ + (struct_ptr)->LIST_CONCAT(name,_list) = NULL; \ + list_init((struct_ptr)->name); \ + } while(0) + +/** + * The linked list type. + * + */ +typedef void ** list_t; + +void list_init(list_t list); +void * list_head(list_t list); +void * list_tail(list_t list); +void * list_pop (list_t list); +void list_push(list_t list, void *item); + +void * list_chop(list_t list); + +void emb6_list_add(list_t list, void *item); +void emb6_list_remove(list_t list, void *item); + +int list_length(list_t list); + +void list_copy(list_t dest, list_t src); + +void list_insert(list_t list, void *previtem, void *newitem); + +void * list_item_next(void *item); + +#endif /* LIST_H_ */ + +/** @} */ +/** @} */ +/** @} */ diff --git a/utils/inc/emb6_random.h b/utils/inc/emb6_random.h new file mode 100644 index 0000000..e59a500 --- /dev/null +++ b/utils/inc/emb6_random.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2005, Swedish Institute of Computer Science + * 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. + * + * @(#)$Id: emb6_random.h,v 1.2 2010/12/13 16:52:02 dak664 Exp $ + */ +/** + * \file + * A brief description the file + */ +#ifndef RANDOM_H_ +#define RANDOM_H_ + +/* + * Initialize the pseudo-random generator. + * + */ +void random_init(unsigned short seed); + +/* + * Calculate a pseudo random number between 0 and 65535. + * + * \return A pseudo-random number between 0 and 65535. + */ +unsigned short random_rand(void); + +/* In gcc int rand() uses RAND_MAX and long random() uses RANDOM_MAX */ +/* Since random_rand casts to unsigned short, we'll use this maxmimum */ +#define RANDOM_RAND_MAX 65535U + +#endif /* RANDOM_H_ */ diff --git a/utils/inc/emb6_ringbuffer.h b/utils/inc/emb6_ringbuffer.h new file mode 100644 index 0000000..8b29730 --- /dev/null +++ b/utils/inc/emb6_ringbuffer.h @@ -0,0 +1,162 @@ +/*============================================================================*/ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 Anders Kalør + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/*============================================================================*/ +#include + +/** + * @file + * Prototypes and structures for the ring buffer module. + */ + +#ifndef RINGBUFFER_H +#define RINGBUFFER_H + +/** + * The size of a ring buffer. + * Due to the design only RB_SIZE-1 items + * can be contained in the buffer. + * The buffer size must be a power of two. + */ +#define RB_BLOCKS 8 +#define RB_CLOCK_SIZE 128 +#define RB_SIZE RB_BLOCKS * RB_CLOCK_SIZE + +#if (RB_SIZE & (RB_SIZE - 1)) != 0 +#error "RB_SIZE must be a power of two" +#endif + +/** + * The type which is used to hold the size and the indicies of the buffer. + * Must be able to fit \c RB_SIZE . + */ +typedef uint16_t ringb_size_t; + +/** + * The type which is used to hold atomic size of the ring buffer. + * Usually it's int8_t + */ +typedef uint8_t ringb_atom_t; + +/** + * Used as a modulo operator as a % b = (a & (b − 1)) + * where \c a is a positive index in the buffer and b is the (power of two) + * size of the buffer. + */ +#define RB_MASK (RB_SIZE-1) + +/** + * Structure which holds a ring buffer. The buffer contains a buffer array + * as well as metadata for the ring buffer. + */ +typedef struct s_ringb +{ + /** Buffer memory. */ + ringb_atom_t a_buf[RB_SIZE]; + /** Index of tail. */ + ringb_size_t sz_tail; + /** Index of head. */ + ringb_size_t sz_head; +} s_ringb_t; + +/** + * Initializes the ring buffer pointed to by buffer. + * This function can also be used to empty/reset the buffer. + * @param ps_buf The ring buffer to initialize. + */ +void ringb_init( s_ringb_t *ps_rb ); + +/** + * Adds a atomic to a ring buffer. + * @param ps_buf The buffer in which the data should be placed. + * @param data The atomic to place. + */ +void ringb_pusha( s_ringb_t *ps_rb, ringb_atom_t data ); + +/** + * Adds an array of atomics to a ring buffer. + * @param ps_buf The buffer in which the data should be placed. + * @param p_data A pointer to the array of atomics to place in the queue. + * @param sz_len The size of the array. + */ +void ringb_push( s_ringb_t *ps_rb, const ringb_atom_t* p_data, + ringb_size_t sz_len ); + +/** + * Returns the oldest atomic in a ring buffer. + * @param ps_buf The buffer from which the data should be returned. + * @param p_data A pointer to the location at which the data should be placed. + * @return 1 if data was returned; 0 otherwise. + */ +uint8_t ringb_pulla( s_ringb_t *ps_rb, ringb_atom_t* p_data ); + +/** + * Returns the len oldest atomics from a ring buffer. + * @param ps_buf The buffer from which the data should be returned. + * @param p_data A pointer to the array at which the data should be placed. + * @param sz_len The maximum number of atomics to return. + * @return The number of atomics returned. + */ +ringb_size_t ringb_pull( s_ringb_t *ps_rb, ringb_atom_t* p_data, + ringb_size_t sz_len ); +/** + * Peeks a ring buffer, i.e. returns an element without removing it. + * @param ps_buf The buffer from which the data should be returned. + * @param p_data A pointer to the location at which the data should be placed. + * @param index The index to peek. + * @return 1 if data was returned; 0 otherwise. + */ +uint8_t ringb_peek( s_ringb_t *ps_rb, ringb_atom_t *data, ringb_size_t index ); + +/** + * Returns whether a ring buffer is empty. + * @param ps_buf The buffer for which it should be returned whether it is empty. + * @return 1 if empty; 0 otherwise. + */ +inline uint8_t ringb_empty( s_ringb_t* ps_rb ) +{ + return ( ps_rb->sz_head == ps_rb->sz_tail ); +} + +/** + * Returns the number of items in a ring buffer. + * @param ps_buf The buffer for which the number of items should be returned. + * @return The number of items in the ring buffer. + */ +inline uint8_t ringb_full( s_ringb_t* ps_rb ) +{ + return ( ( ps_rb->sz_head - ps_rb->sz_tail ) & RB_MASK ) == RB_MASK; +} + +/** + * Returns whether a ring buffer is full. + * @param ps_buf The buffer for which it should be returned whether it is full. + * @return 1 if full; 0 otherwise. + */ +inline uint8_t ringb_items( s_ringb_t* ps_rb ) +{ + return ( ( ps_rb->sz_head - ps_rb->sz_tail ) & RB_MASK ); +} + +#endif /* RINGBUFFER_H */ diff --git a/utils/inc/random.h b/utils/inc/random.h deleted file mode 100644 index 3bab934..0000000 --- a/utils/inc/random.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2005, Swedish Institute of Computer Science - * 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. - * - * @(#)$Id: random.h,v 1.2 2010/12/13 16:52:02 dak664 Exp $ - */ -/** - * \file - * A brief description the file - */ -#ifndef RANDOM_H_ -#define RANDOM_H_ - -/* - * Initialize the pseudo-random generator. - * - */ -void random_init(unsigned short seed); - -/* - * Calculate a pseudo random number between 0 and 65535. - * - * \return A pseudo-random number between 0 and 65535. - */ -unsigned short random_rand(void); - -/* In gcc int rand() uses RAND_MAX and long random() uses RANDOM_MAX */ -/* Since random_rand casts to unsigned short, we'll use this maxmimum */ -#define RANDOM_RAND_MAX 65535U - -#endif /* RANDOM_H_ */ diff --git a/utils/inc/ringbuffer.h b/utils/inc/ringbuffer.h deleted file mode 100644 index 8b29730..0000000 --- a/utils/inc/ringbuffer.h +++ /dev/null @@ -1,162 +0,0 @@ -/*============================================================================*/ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014 Anders Kalør - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -/*============================================================================*/ -#include - -/** - * @file - * Prototypes and structures for the ring buffer module. - */ - -#ifndef RINGBUFFER_H -#define RINGBUFFER_H - -/** - * The size of a ring buffer. - * Due to the design only RB_SIZE-1 items - * can be contained in the buffer. - * The buffer size must be a power of two. - */ -#define RB_BLOCKS 8 -#define RB_CLOCK_SIZE 128 -#define RB_SIZE RB_BLOCKS * RB_CLOCK_SIZE - -#if (RB_SIZE & (RB_SIZE - 1)) != 0 -#error "RB_SIZE must be a power of two" -#endif - -/** - * The type which is used to hold the size and the indicies of the buffer. - * Must be able to fit \c RB_SIZE . - */ -typedef uint16_t ringb_size_t; - -/** - * The type which is used to hold atomic size of the ring buffer. - * Usually it's int8_t - */ -typedef uint8_t ringb_atom_t; - -/** - * Used as a modulo operator as a % b = (a & (b − 1)) - * where \c a is a positive index in the buffer and b is the (power of two) - * size of the buffer. - */ -#define RB_MASK (RB_SIZE-1) - -/** - * Structure which holds a ring buffer. The buffer contains a buffer array - * as well as metadata for the ring buffer. - */ -typedef struct s_ringb -{ - /** Buffer memory. */ - ringb_atom_t a_buf[RB_SIZE]; - /** Index of tail. */ - ringb_size_t sz_tail; - /** Index of head. */ - ringb_size_t sz_head; -} s_ringb_t; - -/** - * Initializes the ring buffer pointed to by buffer. - * This function can also be used to empty/reset the buffer. - * @param ps_buf The ring buffer to initialize. - */ -void ringb_init( s_ringb_t *ps_rb ); - -/** - * Adds a atomic to a ring buffer. - * @param ps_buf The buffer in which the data should be placed. - * @param data The atomic to place. - */ -void ringb_pusha( s_ringb_t *ps_rb, ringb_atom_t data ); - -/** - * Adds an array of atomics to a ring buffer. - * @param ps_buf The buffer in which the data should be placed. - * @param p_data A pointer to the array of atomics to place in the queue. - * @param sz_len The size of the array. - */ -void ringb_push( s_ringb_t *ps_rb, const ringb_atom_t* p_data, - ringb_size_t sz_len ); - -/** - * Returns the oldest atomic in a ring buffer. - * @param ps_buf The buffer from which the data should be returned. - * @param p_data A pointer to the location at which the data should be placed. - * @return 1 if data was returned; 0 otherwise. - */ -uint8_t ringb_pulla( s_ringb_t *ps_rb, ringb_atom_t* p_data ); - -/** - * Returns the len oldest atomics from a ring buffer. - * @param ps_buf The buffer from which the data should be returned. - * @param p_data A pointer to the array at which the data should be placed. - * @param sz_len The maximum number of atomics to return. - * @return The number of atomics returned. - */ -ringb_size_t ringb_pull( s_ringb_t *ps_rb, ringb_atom_t* p_data, - ringb_size_t sz_len ); -/** - * Peeks a ring buffer, i.e. returns an element without removing it. - * @param ps_buf The buffer from which the data should be returned. - * @param p_data A pointer to the location at which the data should be placed. - * @param index The index to peek. - * @return 1 if data was returned; 0 otherwise. - */ -uint8_t ringb_peek( s_ringb_t *ps_rb, ringb_atom_t *data, ringb_size_t index ); - -/** - * Returns whether a ring buffer is empty. - * @param ps_buf The buffer for which it should be returned whether it is empty. - * @return 1 if empty; 0 otherwise. - */ -inline uint8_t ringb_empty( s_ringb_t* ps_rb ) -{ - return ( ps_rb->sz_head == ps_rb->sz_tail ); -} - -/** - * Returns the number of items in a ring buffer. - * @param ps_buf The buffer for which the number of items should be returned. - * @return The number of items in the ring buffer. - */ -inline uint8_t ringb_full( s_ringb_t* ps_rb ) -{ - return ( ( ps_rb->sz_head - ps_rb->sz_tail ) & RB_MASK ) == RB_MASK; -} - -/** - * Returns whether a ring buffer is full. - * @param ps_buf The buffer for which it should be returned whether it is full. - * @return 1 if full; 0 otherwise. - */ -inline uint8_t ringb_items( s_ringb_t* ps_rb ) -{ - return ( ( ps_rb->sz_head - ps_rb->sz_tail ) & RB_MASK ); -} - -#endif /* RINGBUFFER_H */ diff --git a/utils/inc/timer.h b/utils/inc/timer.h index ca34bf5..ac1e354 100644 --- a/utils/inc/timer.h +++ b/utils/inc/timer.h @@ -84,7 +84,7 @@ * A timer. * * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. + * with timer_emb6_set() before it can be used. * * \hideinitializer */ @@ -93,7 +93,7 @@ struct timer { clock_time_t interval; }; -void timer_set(struct timer *t, clock_time_t interval); +void timer_emb6_set(struct timer *t, clock_time_t interval); void timer_reset(struct timer *t); void timer_restart(struct timer *t); int timer_expired(struct timer *t); diff --git a/utils/src/ctimer.c b/utils/src/ctimer.c index 9ef215e..723534b 100644 --- a/utils/src/ctimer.c +++ b/utils/src/ctimer.c @@ -66,7 +66,7 @@ #include "evproc.h" #include "ctimer.h" #include "timer.h" -#include "clist.h" +#include "emb6_clist.h" /*============================================================================== LOCAL MACROS @@ -102,7 +102,7 @@ void ctimer_refresh(c_event_t event, void * data) pst_cTim != NULL; \ pst_cTim = pst_cTim->next) { if(&pst_cTim->etimer == data) { - list_remove(gp_ctimList, pst_cTim); + emb6_list_remove(gp_ctimList, pst_cTim); if(pst_cTim->f != NULL) { pst_cTim->f(pst_cTim->ptr); } @@ -143,7 +143,7 @@ void ctimer_set(struct ctimer *c, clock_time_t t, c->etimer.timer.interval = t; } - list_add(gp_ctimList, c); + emb6_list_add(gp_ctimList, c); } /*============================================================================*/ /* ctimer_reset() */ @@ -154,8 +154,8 @@ void ctimer_reset(struct ctimer *c) etimer_reset(&c->etimer); } - list_remove(gp_ctimList, c); - list_add(gp_ctimList, c); + emb6_list_remove(gp_ctimList, c); + emb6_list_add(gp_ctimList, c); } /*============================================================================*/ /* ctimer_restart() */ @@ -166,8 +166,8 @@ void ctimer_restart(struct ctimer *c) etimer_restart(&c->etimer); } - list_remove(gp_ctimList, c); - list_add(gp_ctimList, c); + emb6_list_remove(gp_ctimList, c); + emb6_list_add(gp_ctimList, c); } /*============================================================================*/ /* ctimer_stop() */ @@ -180,7 +180,7 @@ void ctimer_stop(struct ctimer *pst_stopTim) pst_stopTim->etimer.next = NULL; pst_stopTim->etimer.active = TMR_NOT_ACTIVE; } - list_remove(gp_ctimList, pst_stopTim); + emb6_list_remove(gp_ctimList, pst_stopTim); } /*============================================================================*/ /* ctimer_expired() */ diff --git a/utils/src/etimer.c b/utils/src/etimer.c index e29c533..59ba8d8 100644 --- a/utils/src/etimer.c +++ b/utils/src/etimer.c @@ -62,7 +62,7 @@ ==============================================================================*/ #include "etimer.h" -#include "clist.h" +#include "emb6_clist.h" #include "emb6_conf.h" #include "emb6.h" @@ -97,8 +97,8 @@ static char gc_init = 0; /*============================================================================*/ static void _etimer_addTimer(struct etimer *pst_timer) { - list_remove(gp_etimList, pst_timer); - list_add(gp_etimList, pst_timer); + emb6_list_remove(gp_etimList, pst_timer); + emb6_list_add(gp_etimList, pst_timer); pst_timer->active = TMR_ACTIVE; } @@ -151,7 +151,7 @@ void etimer_request_poll(void) // Generate timer expired event evproc_putEvent(E_EVPROC_TAIL,EVENT_TYPE_TIMER_EXP,pst_tTim); // Remove matched timer from the list - list_remove(gp_etimList, pst_tTim); + emb6_list_remove(gp_etimList, pst_tTim); // Change active flag pst_tTim->active = TMR_NOT_ACTIVE; } /* if */ @@ -164,7 +164,7 @@ void etimer_request_poll(void) /*============================================================================*/ void etimer_set(struct etimer *pst_et, clock_time_t l_interval, pfn_callback_t pfn_callback) { - timer_set(&pst_et->timer, l_interval); + timer_emb6_set(&pst_et->timer, l_interval); _etimer_addTimer(pst_et); evproc_regCallback(EVENT_TYPE_TIMER_EXP, pfn_callback); LOG_INFO("add new timer %p\n\r",pst_et); @@ -244,7 +244,7 @@ clock_time_t etimer_next_expiration_time(void) /*============================================================================*/ void etimer_stop(struct etimer *pst_et) { - list_remove(gp_etimList, pst_et); + emb6_list_remove(gp_etimList, pst_et); pst_et->active = TMR_NOT_ACTIVE; } /* etimer_stop() */ diff --git a/utils/src/evproc.c b/utils/src/evproc.c index 585b027..9544f0f 100644 --- a/utils/src/evproc.c +++ b/utils/src/evproc.c @@ -62,7 +62,7 @@ #include "bsp.h" #include "evproc.h" -#include "clist.h" +#include "emb6_clist.h" #include "logger.h" /*============================================================================== diff --git a/utils/src/list.c b/utils/src/list.c index 38d006f..270da21 100644 --- a/utils/src/list.c +++ b/utils/src/list.c @@ -46,7 +46,7 @@ * */ -#include "clist.h" +#include "emb6_clist.h" #define NULL 0 @@ -141,12 +141,12 @@ list_tail(list_t list) * */ void -list_add(list_t list, void *item) +emb6_list_add(list_t list, void *item) { struct list *l; /* Make sure not to add the same element twice */ - list_remove(list, item); + emb6_list_remove(list, item); ((struct list *)item)->next = NULL; @@ -168,7 +168,7 @@ list_push(list_t list, void *item) /* struct list *l;*/ /* Make sure not to add the same element twice */ - list_remove(list, item); + emb6_list_remove(list, item); ((struct list *)item)->next = *list; *list = item; @@ -238,7 +238,7 @@ list_pop(list_t list) */ /*---------------------------------------------------------------------------*/ void -list_remove(list_t list, void *item) +emb6_list_remove(list_t list, void *item) { struct list *l, *r; diff --git a/utils/src/mmem.c b/utils/src/mmem.c index 795af1d..d88471a 100644 --- a/utils/src/mmem.c +++ b/utils/src/mmem.c @@ -45,7 +45,7 @@ #include "mmem.h" -#include "clist.h" +#include "emb6_clist.h" //#include "lib_conf.h" #include @@ -89,7 +89,7 @@ mmem_alloc(struct mmem *m, unsigned int size) /* We had enough memory so we add this memory block to the end of the list of allocated memory blocks. */ - list_add(mmemlist, m); + emb6_list_add(mmemlist, m); /* Set up the pointer so that it points to the first available byte in the memory block. */ @@ -136,7 +136,7 @@ mmem_free(struct mmem *m) avail_memory += m->size; /* Remove the memory block from the list. */ - list_remove(mmemlist, m); + emb6_list_remove(mmemlist, m); } /*---------------------------------------------------------------------------*/ /** diff --git a/utils/src/queuebuf.c b/utils/src/queuebuf.c index 7a9f13f..809e9c1 100644 --- a/utils/src/queuebuf.c +++ b/utils/src/queuebuf.c @@ -128,7 +128,7 @@ static struct ctimer renew_timer; #endif #if QUEUEBUF_DEBUG -#include "clist.h" +#include "emb6_clist.h" LIST(queuebuf_list); #endif /* QUEUEBUF_DEBUG */ @@ -349,7 +349,7 @@ queuebuf_new_from_packetbuf(void) buf = memb_alloc(&bufmem); if(buf != NULL) { #if QUEUEBUF_DEBUG - list_add(queuebuf_list, buf); + emb6_list_add(queuebuf_list, buf); buf->file = file; buf->line = line; buf->time = clock_time(); @@ -450,7 +450,7 @@ queuebuf_free(struct queuebuf *buf) printf("#A q=%d\n", queuebuf_len); #endif /* QUEUEBUF_STATS */ #if QUEUEBUF_DEBUG - list_remove(queuebuf_list, buf); + emb6_list_remove(queuebuf_list, buf); #endif /* QUEUEBUF_DEBUG */ } else if(memb_inmemb(&refbufmem, buf)) { memb_free(&refbufmem, buf); diff --git a/utils/src/random.c b/utils/src/random.c index 72f5d12..00aed18 100644 --- a/utils/src/random.c +++ b/utils/src/random.c @@ -36,7 +36,7 @@ */ -#include "random.h" +#include "emb6_random.h" #include diff --git a/utils/src/ringbuffer.c b/utils/src/ringbuffer.c index 5736f8f..52216c5 100644 --- a/utils/src/ringbuffer.c +++ b/utils/src/ringbuffer.c @@ -24,7 +24,7 @@ */ /*============================================================================*/ -#include "ringbuffer.h" +#include "emb6_ringbuffer.h" /** * @file * Implementation of ring ac_buf functions. diff --git a/utils/src/timer.c b/utils/src/timer.c index 95c8426..a774c09 100644 --- a/utils/src/timer.c +++ b/utils/src/timer.c @@ -61,7 +61,7 @@ * \param interval The interval before the timer expires. * */ -void timer_set(struct timer *t, clock_time_t interval) +void timer_emb6_set(struct timer *t, clock_time_t interval) { t->interval = interval; t->start = bsp_getTick(); @@ -71,7 +71,7 @@ void timer_set(struct timer *t, clock_time_t interval) * Reset the timer with the same interval. * * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval + * given to the timer_emb6_set() function. The start point of the interval * is the exact time that the timer last expired. Therefore, this * function will cause the timer to be stable over time, unlike the * timer_restart() function. @@ -89,7 +89,7 @@ void timer_reset(struct timer *t) * Restart the timer from the current point in time * * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the + * given to the timer_emb6_set() function. The timer will start at the * current time. * * \note A periodic timer will drift if this function is used to reset -- 2.7.4