contiki学习笔记(四)参数缓存区、时钟库、通信能量总计

一、参数缓存区

The argument buffer can be used when passing an argument from an exiting process to a process that has not been created yet. More…

在将参数从退出进程传递给尚未创建的进程时,可以使用参数缓冲区。

Functions

char *	arg_alloc (char size)
 	//Allocates(分配) an argument buffer. 
void	arg_free (char *arg)
 	//Deallocates (解除分配)an argument buffer. 

详细描述
当将参数从现有进程传递到尚未创建的进程时,可以使用参数缓冲区。
由于退出进程在新进程启动时将退出,因此该参数不能在任何进程的addres空间中传递。在这种情况下,可以使用参数缓冲区。
论点缓冲区是静态分配在内存中,在全局范围内访问所有进程。
一个论点缓冲区用arg_alloc()函数分配空间,用arg_free()函数解除分配。arg_free()函数的设计,以便它可以采取任何指针,而不只是一个论点缓冲区指针。如果指向arg_free()的指针不是一个参数缓冲区,这个函数什么也不做。

函数文档

char* arg_alloc	(	char	size	)	
//分配一个参数缓冲区.

参数:
size 请求的缓冲区大小,以字节为单位。
返回值:
指向已分配缓冲区的指针,如果无法分配缓冲区,则为空。
注意事项:
目前无法分配128字节以外的任何其他大小的参数缓冲区。

void arg_free	(	char *	arg	)	
//释放一个参数缓冲区。

此函数释放由参数指向的参数缓冲区,但仅当该缓冲区实际上是参数缓冲区并已被分配时才释放。使用任何指针调用这个函数都是完全安全的。

参数:
arg 指针

二、时钟库

时钟库是contiki与平台特定时钟功能之间的接口。

Defines

#define	CLOCK_SECOND
 	A second, measured in system clock time. 

Functions

void	clock_init (void)
 	//Initialize the clock library. 
	//初始化
CCIF clock_time_t	clock_time (void)
 	//Get the current clock time. 
	//获得当前时钟时间
CCIF unsigned long	clock_seconds (void)
 	//Get the current value of the platform seconds. 
	//获取平台秒的当前值。
void	clock_set_seconds (unsigned long sec)
 	//Set the value of the platform seconds. 
	//设置平台秒的值。
void	clock_wait (clock_time_t t)
 	//Wait for a given number of ticks(滴答). 
	//等待给定时间的滴答
void	clock_delay_usec (uint16_t dt)
 	//Delay(延迟) a given number of microseconds.(微秒) 
	//延迟给定时间的微秒
int	clock_fine_max (void)
 	//Deprecated platform-specific routines. 	
 	//弃用平台特定的例程。

void	clock_delay (unsigned int delay)
 	//Delay the CPU for a multiple(倍数) of 2.83 us. 
 	//将CPU延迟2.83 us的倍数。

Detailed Description

时钟库是Contiki与平台特定时钟功能之间的接口。

时钟库定义了一个宏Clock_SECOND,用于将秒转换为平台的刻度分辨率。通常这是1-10毫秒,例如4*Clock_SECOND可以是512秒。这样,16位计数器每1-10分钟就会溢出一次.平台使用滴答中断来维护启动后的秒数。

平台还可以为更高的时间分辨率和实时中断实现定时器,它们使用相应的RTIMER_SECOND。

Note:

这些定时器不一定有公共除数或相位锁定。一种可能是晶体控制的,另一种则可能不是。低功率操作或睡眠通常会使用一个唤醒和禁用另一个,然后给它一个滴答纠正醒来后。
时钟库在许多情况下不需要直接使用。相反,计时器库, 事件计时器,或者需要使用rtimer库

另见:
Timer library
Event timers
Realtime library

函数文档

void clock_delay	(	unsigned int	i	)	
//将CPU延迟2.83 us的倍数。

msp430的原始clock_delay使用2.83 usec粒度。这近似于值为1456 usec的延迟。(leds.c中最大的核心调用使用400个)。

void clock_delay_usec	(	uint16_t	howlong	)	
//延迟给定时间的微秒

Parameters:
dt 延迟多少微秒。
Note:
中断可以将延迟增加一个可变的值。
延迟给定的微秒数。

使用250KHz的MACA时钟进行更长的延迟,以避免中断效果。然而,如果收音机是电力循环,那就不能用了!

void clock_init	(	void		)	
//Initialize the clock library.

这个函数初始化时钟库,应该从系统的main()函数调用。
将Timer/Counter0设置为与CPU时钟异步,由第二个外部时钟(32,768kHz)驱动。
等待TCN0UB、OCR0UB和TCR0UB。

Definition at line 110 of file clock.c.

CCIF unsigned long clock_seconds	(	void		)	
//获取平台秒的当前值。

这可以是自启动以来的秒数,也可以是自标准纪元以来的秒数。

Returns:
值。
获取平台秒的当前值。

这种比较避免了在原子读取4字节变量时禁用时钟中断的需要。

void clock_set_seconds	(	unsigned long	sec	)	
//设置平台秒的值。

参数:
sec 要设置的值
设置平台秒的值。
绝对日期/时间的标准纪元。

CCIF clock_time_t clock_time	(	void		)	
//获得当前时钟时间

此函数返回当前系统时钟时间。

Returns:
当前时钟时间,以系统滴答声度量。

当16位时,它通常每10分钟包装一次。这种比较避免了对多字节变量的原子读取禁用时钟中断的需要。

void clock_wait	(	clock_time_t	i	)	
//等待给定数量的滴答

Parameters:
t 多少滴答

三、通信能量总计

compower模块积累功耗信息和属性交流活动。

Data Structures
struct compower_activity
包含特定通信活动的功耗信息的活动记录。

Files
file compower.c

通信功率计算模块。

file compower.h

通信功率计算模块的头文件。

Functions

void	compower_init (void)
 	//Initialize the communication power accounting module. 
 	//初始化通信功率计算模块。
void	compower_accumulate (struct compower_activity *a)
 	//Accumulate power contumption for a communication activity.
 	//为通信活动积累能量消耗。 
void	compower_clear (struct compower_activity *a)
 	//Clear power consumption information for a communication activity. 
 	//为通信活动清除功耗信息。
void	compower_attrconv (struct compower_activity *a)
 	//Convert power contumption information to packet attributes. 
 	//将功率消耗信息转换为包属性。
void	compower_accumulate_attrs (struct compower_activity *a)
 	//Accumulate power contumption for a communication activity based on energy data in packet attributes. 
 	//累积基于分组属性中的能量数据的通信活动的能量消耗。

Variables变量定义

struct compower_activity 	compower_idle_activity
 	//The default idle communication activity. 
 	//默认的空闲通信活动。

Detailed Description
compower模块收集功耗信息并将其归因于通信活动。
通信活动的例子有包传输、包接收和空闲监听。

Function Documentation

void compower_accumulate	(	struct compower_activity * 	a	)	
//为通信活动积累能量消耗。

Parameters:
a 指向活动结构的指针。
此功能为通信活动积累功耗信息。这个功能通常是由省电的MAC协议在无线电关闭时,或在接收或传输数据包时调用的。

void compower_accumulate_attrs	(	struct compower_activity * 	a	)	
累积基于分组属性中的能量数据的通信活动的能量消耗。

Parameters:
a 指向活动结构的指针。
此函数从包属性(参见包属性)累积通信活动的功耗信息。

void compower_attrconv	(	struct compower_activity * 	a	)	
//将功率消耗信息转换为包属性。

Parameters:
a 指向活动结构的指针。
此函数将通信活动的累积功耗信息转换为包属性(参见包属性)。

void compower_clear	(	struct compower_activity * 	a	)	
//为通信活动清除功耗信息。

Parameters:
a 指向活动结构的指针
此函数将清除以前在活动结构中累积的任何电源消耗信息。

void compower_init	(	void		)	
//初始化通信功率计算模块。

此功能初始化通信功率计算模块。系统在启动期间调用该函数。

Variable Documentation

struct compower_activity compower_idle_activity
//默认的空闲通信活动。

这是一种空闲的通信活动,所有不可能归属于单个信息包的能量都归属于此活动。例如,空闲监听传入的数据包和mac级的信标传输。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值