int main(void) { shell_t shell; kernel_pid_t mac = basic_mac_init(mac_stack, BASIC_MAC_CONTROL_STACKSIZE, PRIORITY_MAIN - 1, CREATE_STACKTEST, "basic_mac_default", NETDEV_DEFAULT); sixlowpan = sixlowpan_init(mac, sixlowpan_stack, SIXLOWPAN_CONTROL_STACKSIZE, PRIORITY_MAIN - 1, CREATE_STACKTEST, "basic_mac_default"); genrand_init(hwtimer_now()); data_value = (uint8_t)(genrand_uint32() % 256); netapi_set_option(sixlowpan, NETAPI_CONF_SRC_LEN, &src_len, sizeof(size_t)); netapi_get_option(sixlowpan, NETAPI_CONF_ADDRESS, &src, sizeof(uint16_t)); (void) posix_open(uart0_handler_pid, 0); (void) puts("Welcome to RIOT!"); shell_init(&shell, shell_command, UART0_BUFSIZE, uart0_readc, uart0_putc); shell_run(&shell); return 0; }
uint8_t hal_getrand(void) { #if RANDOM_NUMOF uint8_t res; hwnrg_read((char *)&res, sizeof(res)); return res; #elif defined(MODULE_RANDOM) return (uint8_t)(genrand_uint32() % UINT8_MAX); #else return 4; /* keeping the meme alive ;-) */ #endif }
static void riot_ccn_pit_test(int argc, char **argv) { (void) argc; /* the function takes no arguments */ (void) argv; char name[] = "/riot/test"; char *prefix[CCNL_MAX_NAME_COMP]; char *cp = strtok(name, "/"); int i = 0; while (i < (CCNL_MAX_NAME_COMP - 1) && cp) { prefix[i++] = cp; cp = strtok(NULL, "/"); } //prefix[i] = 0; //segment to request prefix[i + 1] = 0; msg_t m; riot_ccnl_msg_t rmsg; char segment_string[16]; //max=999\0 timex_t now; int segment; for (segment = 0; segment < 200; segment++) { memset(segment_string, 0, 16); snprintf(segment_string, 16, "%d", segment); prefix[i] = segment_string; unsigned int interest_nonce = genrand_uint32(); int interest_len = mkInterest(prefix, &interest_nonce, (unsigned char *) small_buf); rmsg.payload = &small_buf; rmsg.size = interest_len; m.content.ptr = (char *) &rmsg; m.type = CCNL_RIOT_MSG; msg_send(&m, relay_pid); if ((segment % 50) == 0) { vtimer_now(&now); printf("done: %d - %ld.%ld\n", segment, now.tv_sec, now.tv_usec); } } printf("done: tried to send %d interests\n", segment); }
static void do_sleep(int factor) { uint32_t timeout_us = (genrand_uint32() % 100000) * factor; /* PRINTF("sleep for % 8i µs.", timeout_us); */ vtimer_usleep(timeout_us); }
/* random helper function */ static inline uint32_t _rand(uint32_t min, uint32_t max) { return (genrand_uint32() % (max - min)) + min; }
int ccnl_riot_client_get(kernel_pid_t relay_pid, char *name, char *reply_buf) { char *prefix[CCNL_MAX_NAME_COMP]; char *cp = strtok(name, "/"); int i = 0; while (i < (CCNL_MAX_NAME_COMP - 1) && cp) { prefix[i++] = cp; cp = strtok(NULL, "/"); } //prefix[i] = 0; //segment to request prefix[i + 1] = 0; int content_len = 0; for (int segment = 0; ; segment++) { char segment_string[16]; //max=999\0 memset(segment_string, 0, 16); snprintf(segment_string, 16, "%d", segment); prefix[i] = segment_string; unsigned char *interest_pkg = malloc(PAYLOAD_SIZE); if (!interest_pkg) { puts("ccnl_riot_client_get: malloc failed"); return 0; } unsigned int interest_nonce = genrand_uint32(); int interest_len = mkInterest(prefix, &interest_nonce, interest_pkg); DEBUGMSG(1, "relay_pid=%" PRIkernel_pid " interest_len=%d\n", relay_pid, interest_len); riot_ccnl_msg_t rmsg; rmsg.payload = interest_pkg; rmsg.size = interest_len; msg_t m, rep; m.content.ptr = (char *) &rmsg; m.type = CCNL_RIOT_MSG; msg_send(&m, relay_pid, 1); /* ######################################################################### */ msg_receive(&rep); free(interest_pkg); if (rep.type == CCNL_RIOT_NACK) { /* network stack was not able to fetch this chunk */ return 0; } /* we got a chunk of data from the network stack */ riot_ccnl_msg_t *rmsg_reply = (riot_ccnl_msg_t *) rep.content.ptr; unsigned char *data = rmsg_reply->payload; int datalen = (int) rmsg_reply->size; DEBUGMSG(1, "%d bytes left; msg from=%" PRIkernel_pid "\n", datalen, rep.sender_pid); int scope = 3, aok = 3, minsfx = 0, maxsfx = CCNL_MAX_NAME_COMP, contlen = 0; struct ccnl_buf_s *buf = 0, *nonce = 0, *ppkd = 0; struct ccnl_prefix_s *p = 0; unsigned char *content = 0; buf = ccnl_extract_prefix_nonce_ppkd(&data, &datalen, &scope, &aok, &minsfx, &maxsfx, &p, &nonce, &ppkd, &content, &contlen); if (!buf) { DEBUGMSG(6, " parsing error or no prefix\n"); return 0; } DEBUGMSG(1, "content_len=%d contlen=%d\n", content_len, contlen); memcpy(reply_buf + content_len, content, contlen); content_len += contlen; free_prefix(p); free_3ptr_list(buf, nonce, ppkd); ccnl_free(rmsg_reply); DEBUGMSG(1, "contentlen=%d CCNL_RIOT_CHUNK_SIZE=%d\n", contlen, CCNL_RIOT_CHUNK_SIZE); if (contlen < CCNL_RIOT_CHUNK_SIZE || CCNL_RIOT_CHUNK_SIZE < contlen) { /* last chunk */ break; } } return content_len; }
static void buf_fill(uint32_t *buf, int len) { for (int k = 0; k < len; k++) { buf[k] = genrand_uint32(); } }