# return rcombine(call ADCControl.init(), call Leds.init());
返回兩個函數返回值的與值。
# 略寫(Shorthand)
SenseM.ADC -> Sensor 等價於 SenseM.ADC -> Sensor.ADC //沒有疑問
SenseM.ADControl -> Sensor 等價於 SenseM.ADControl -> Sensor.StdControl
//這是因爲Sensor沒有ADControl接口,但是有同類型的StdControl接口,nesC編譯器能夠判斷出來這種略寫的意思,當然,如果Sensor有兩個StdControl類型的接口,就會報錯。
# 參數化接口
允許一個組件提供一個接口的多個實例,它們以一個編譯時刻或運行時刻的參數來索引(其實相當於定義一個數組)。
# 參數化接口的索引
本來直接用數字就可以索引,如
provides interface Timer[uint8_t id];
可直接以Timer[1],Timer[2],…來使用這256個接口,nesC爲了避免使用不慎導致兩個地方用到了相同的一個實例,引入了unique(“Timer”),即nesC編譯器保證所有由字符串“Timer”標識的一組實例的索引號互不相同,以避免衝突(當然,與其他字符串的組可能會有衝突)。
# 讀代碼SenseM.nc的tip:
爲什麼要另外給一個StdControl接口,命名爲ADCControl?
很簡單,爲了單獨控制ADC的啓動、工作和停止。