Пример #1
0
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();
	}
}
Пример #2
0
/**
 * 
 * \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;
	}
}