static void vMain( void *pvParameters ) { buffer_t *buffer; vTaskDelay(500 / portTICK_RATE_MS ); pause(200); debug_init(115200); pause(300); if(stack_start(NULL)==START_SUCCESS) { debug("Start Ok\r\n"); } buffer = stack_buffer_get(0); if (buffer) { buffer->from = MODULE_NRP; buffer->to = MODULE_NRP; buffer->options.type = BUFFER_CONTROL; buffer_push_uint8(buffer, NRPC_RESET); stack_buffer_push(buffer); } LED2_ON(); vTaskDelay(500 / portTICK_RATE_MS ); LED2_OFF(); LED1_OFF(); for( ;; ) { //LED1_ON(); vTaskDelay(5000 / portTICK_RATE_MS ); //LED1_OFF(); } }
/** * * \Function stack_msg_sendto * * \Brief sends a message * * \Params dst: destination * \Params data: data to send * \Params msg_length * \Params add_trace_route * \Params debugger_msg : it is a debugger message (special treatment required) * * \Note normal mode is both parameters at pdFALSE * */ portCHAR stack_msg_sendto (long_addr_t *dst, char *data, uint8_t msg_length, portCHAR add_trace_route, portCHAR debugger_msg) { // Useless and should stay commented for router without sync /* if all is ok to send a message */ if (buffer_left >= STACK_MIN_AVAILABLE_BUFFERS) { portCHAR retvalue = pdFALSE; buffer_t *buf = 0; uint8_t i; /**************************************/ /* Get a buffer and fill it with data */ /**************************************/ if ((buf=stack_buffer_get(20))) { buf->from = MODULE_APP; buf->to = MODULE_NONE; buf->dir = BUFFER_DOWN; memcpy(&(buf->src_addr), &(lgaddr_mac), sizeof(long_addr_t)); } else { debug_printf("E ! S: mm: %d, bl:%d\r\n", mac_mode, buffer_left); retvalue = pdFALSE; return retvalue; } if (buf) { buf->buf_end=0; buf->buf_ptr=0; for( i = 0 ; i < msg_length ; i++) { buf->buf[buf->buf_end++] = data[i]; //debug_printf("%d ", data[i]); } } /************************************/ /* Add addresses and buffer options */ /************************************/ if (buf->src_addr.addr_type == ADDR_NONE) { memcpy(&(buf->src_addr), &(lgaddr_mac), sizeof(long_addr_t)); } buf->from = MODULE_APP; buf->dir = BUFFER_DOWN; buf->to = MODULE_NONE; // address_utils_debug_address(dst, ADDR_FULL); if (dst) { retvalue = pdTRUE; memcpy(&(buf->dst_addr), dst, sizeof(long_addr_t)); } else { debug("Sendto: dst = 0\r\n"); retvalue = pdFALSE; /*No destination*/ } /* ******* */ /* ADD TTL */ /* ******* */ buf->options.ttl_nb = 0; /***************/ /* Send buffer */ /***************/ if (retvalue == pdTRUE) { // test if dest address has an initialized TL: if no, look at neighbor table if the UID is present // If uid is present in neighboring table, affect correspondent TL // if we want to use routing table debug("nwk handle \r\n"); retvalue = smart_nwk_handle(buf); return retvalue; } else { if (buf != 0) {stack_buffer_free(buf);} return pdFALSE; } } else { debug_printf("S: %d buf left\n", buffer_left); return pdFALSE; } }