KLZB214SDK3.2-API說明
- 2018-03-29 10:25:00
- kelanelec_admin 原創
- 7536
ZB214SDK3.2-API說明
修改日期2017.09.07
支持的數據類型
char |
8位無符號 |
int8 |
8位有符號,signed char |
uint8 |
8位無符號,unsigned char |
int16 |
16位有符號,signed short |
uint16 |
16位無符號,unsigned short |
int32 |
32位有符號,signed long |
uint32 |
32位無符號,unsigned long |
1 系統配置(以下函數只能在任務初始化中使用,否則會造成系統崩潰)
void AppDisableUART_Api(void);
函數功能:禁止串口,在用戶任務初始化中使用,調用之后,模塊正常工作后串口將失效
void AppDisableNetWorkManage(void);
函數功能:禁止網絡管理
調用之后,協調器默認開通授權任何嘗試加入的設備進入
void AppNetWorkManage_DisableMacAuth(void);
函數功能:使能網絡管理但禁止設備單獨MAC單獨允許入網功能
在用戶任務初始化中使用,僅協調器有效
備注:在配置文件使能了網絡管理之后,默認是需要MAC單獨允許的,但
調用此函數之后只有授權功能,不支持設備單獨允許入網(允許授權后,所有設備均可以入網)
如配置文件中沒有使能網絡管理,調用此函數后會使能網絡管理功能
void AppEableNetWorkManage2(void);
函數功能:使能網絡管理模式2
在用戶任務初始化中使用,此Api僅協調器有效,通常用戶不需要調用,配置文件配置即可
備注:此模式除了擁有授權功能外,還支持設備單獨允許入網(可串口指令或api添加允許設備列表)
void AppZstackConfigBase_Api(uint8 device_type, uint16 panID,
uint8 channel, uint8* mass);
函數功能:網絡參數配置
panID: 0000-FFFF channel:11-26,FF:scan channel
device_type:0,COORDINATOR 1, ROUTER 2, ENDDEVICE
mass: point to 16bytes data buffer, is no,set 'NULL'
void AppZstackLowCongigZigBee_Api(ZSTACK_PARA_ITEM item, void *value);
函數功能:zigbee底層參數配置
參看ZSTACK_PARA_ITEM
void AppPowerOnNetWorkStartMode_Api(uint8 start_mode);
函數功能:上電網絡啟動模式
start_mode =0: 不管網絡狀態如何,都禁止開始/恢復網絡
start_mode =1: 不管網絡狀態如何,立即開始/恢復網絡
start_mode =2: 如果已經入網或者已經構建網絡的設備,則直接恢復網絡。如果沒有入網(對路由器和終端)或者沒有構建好網絡(對協調器),則不進行初始化網絡(等待用戶命令)
void AppSetScanDuration_Api(uint8 duration);
函數功能:設置掃描時持續的時間(0-14)
數值越小,入網越快,但功耗越大。
默認:5
14:4分鐘
13:2分鐘
12:1分鐘
11:30秒
10:15秒
9 :7.5秒
8 :4秒
7 :2秒
6 :1秒
5 :480毫秒
4 :240毫秒
3 :120毫秒
2 :60毫秒
1 :30毫秒
0 :15毫秒
2 常用函數(動態函數,隨時可以調用)
void AppSetJoinCycle_Api(uint16 time);
函數功能:設置加入速度設置(100-60000)
默認:200
速度越小,入網越快,但功耗越大
void AppClearNetWork_Api(void);
函數功能:清除網絡,執行之后會清除之前的網絡并重啟。
void AppResetSystem_Api(void);
函數功能:重啟
uint16 AppReadPanID_Api(void);
函數功能:讀取網絡PANID,如果未加入到網絡或建立網絡,值為FFFEh
uint16 AppReadShortAddr_Api(void);
函數功能:讀取短地址,如果未加入到網絡或建立網絡,值為FFFEh
void AppReadMacAddress_Api(uint8 *mac_addr);
函數功能:讀取8字節MAC地址,參數是放置MAC地址的緩存首地址
uint8 AppReadChannel_Api(void);
函數功能:讀取當前信道,如果未加入到網絡或建立網絡,則返回0
devStates_t AppReadDeviceState_Api(void);
函數功能:獲取設備狀態,返回含義請看devStates_t結構類型
int8 AppReadTemperature_Api(void);
函數功能:讀取芯片溫度(有符號)
uint8 AppReadVcc_Api(void);
函數功能:讀取芯片VCC電壓
uint8 AppGetRand_Api(void);
函數功能:或取8位隨機數
uint16 AppGetRand16bit_Api(void);
函數功能:獲取16位隨機數
uint16 AppAdcRead_Api ( uint8 channel, uint8 resolution );
函數功能:讀取ADC轉換值
channel:轉換的通道,HAL_ADC_CHANNEL_0 --- HAL_ADC_CHANNEL_7
resolution:有效位,HAL_ADC_RESOLUTION_8 (8位)
HAL_ADC_RESOLUTION_10 (10位)
HAL_ADC_RESOLUTION_12 (12位)
HAL_ADC_RESOLUTION_14 (14位)
void AppAdcSetReference_Api ( uint8 reference );
函數功能:設置ADC參考電壓
reference:HAL_ADC_REF_125V,內部1.25V電壓
HAL_ADC_REF_AIN7,通道7端口(P0_7)作為參考電壓
HAL_ADC_REF_AVDD,供電電壓(VCC)
uint8 AppReadProductInfo_Api(uint8 *s, uint8 len);
函數功能:讀取產品信息
s:字符串緩存指針
len:讀取的大小,最大64個字節,如果不知道大小,直接寫64
返回:讀取到的字節,如果返回0,則讀取不成功或不存在產品信息
void AppUartSend_Api(uint8 *dat, uint8 len);
函數功能:串口發送
dat:數據緩存指針
len:數據的大小
void AppUartSend_debug(uint8 *dat);
函數功能:串口發送字符串,可以用來調試打印
3 數據傳輸類
void app_send_dat_extern(uint8 *buf, uint8 len);
函數功能:無線發送數據
buf: 數據的首地址
len:數據的長度
uint8 app_set_send_addr(uint8 addr_type, uint8 *addr);
函數功能:設置發送地址
設置之后有10秒的有效期,10秒過后會恢復到上電默認
上電默認(addr_type=01,協調器廣播,路由器和終端發給協調器)
addr_type: 01,短地址方式,不使能應答,addr為目的短地址
addr_type: 11,短地址方式,使能應答,addr為目的短地址
addr_type: 02,MAC地址方式,不使能應答,addr為目的MAC地址
addr_type: 12,MAC地址方式,使能應答,addr為目的MAC地址
void user_app_rf_data_process_CB(afAddrType_t *srcAddr,
uint8 *dat,
uint8 dat_len)
函數功能:無線數據接收
注意,此函數為CALLBACK函數,無線接收到數據后將會調用此函數
srcAddr:源地址,發送對方地址
dat:數據首地址
dat_len:數據的長度
4 網絡管理類
void AppContinueScanNetWork_Api(void);
函數功能:啟動掃描
執行此函數后,只開啟掃描功能,但不會立即掃描。
如果開啟之后,設備由入網狀態變成掉網,會重新自動掃描網絡
void AppContinueScanNetWorkAndStart_Api(void);
函數功能:啟動掃描網絡
如果設備未入網或者掉網狀態,執行此函數后會自動進行掃描網絡
如果設備已經入網,執行此函數無效
void AppStopScanNetWork_Api(void);
函數功能:禁止掃描網絡
如果設備未入網或者掉網狀態,執行此函數后會終止進行掃描網絡
如果設備已經入網,執行此函數后,即使突然掉網也不再掃描網絡,將保持在掉網狀態
void AppStartNewNetWork_Api(void)
函數功能:啟動掃描新的網絡
不管設備當前網絡狀態如何,執行此函數之后都將掃描新的網絡,
跟AppClearNetWork_Api功能類似,不同在于不會重啟設備。
void App_MgrPermitJoining_Api(uint8 timeout);
函數功能:設置設備入網允許通道,僅對協調器有效
timeout:0,關閉入網申請通道
timeout:0xff,打開入網申請通道
void App_addValid_Device_Api(uint8 *DeviceMac);
函數功能:添加允許授權設備
DeviceMac:8byte,設備MAC地址
void App_DiscValidDeviceList_Api(void);
函數功能:清空允許授權設備列表
void App_Leave_Device1_Api(uint8 rejoin);
函數功能:離開網絡:自身
rejoin:0,離開后重啟之前不加入任何網絡
rejoin:1,離開后會重新掃描周圍網絡并嘗試加入
void App_Leave_Device2_Api(uint8 rejoin, uint16 devictShortAdd,
uint8 *deviceMac);
函數功能:離開網絡:其它設備
rejoin:0,離開后重啟之前不加入任何網絡
rejoin:1,離開后會重新掃描周圍網絡并嘗試加入
devictShortAdd:離開設備的短地址,不清楚地址,可以設置為0xFFFF
deviceMac: 離開設備的MAC地址
5 操作系統常用函數
uint8 osal_set_event( uint8 task_id, uint16 event_id);
函數功能:設置事件
task_id:對應的任務ID
event_id:事件ID
uint8 osal_clear_event ( uint8 task_id, uint16 event_id);
函數功能:清除事件
task_id:對應的任務ID
event_id:事件ID
uint8 osal_start_timerEx ( uint8 task_id, uint16 event_id, uint16 timeout_value);
函數功能:開始一個定時事件
task_id:對應的任務ID
event_id:事件ID
timeout_value:到期時間,單位毫秒
uint8 osal_stop_timerEx ( uint8 task_id, uint16 event_id);
函數功能:停止一個定時事件
task_id:對應的任務ID
event_id:事件ID
void *osal_mem_alloc( uint16 size )
函數功能:申請動態內存
size:內存大小
返回:內存指針
void osal_mem_free(void *ptr)
函數功能:釋放動態內存(一般跟osal_mem_alloc函數配套使用)
ptr:內存指針(申請時返回的指針值)
uint8 osal_nv_item_init( uint16 id, uint16 len, void *buf )
函數功能:初始化一個NV(掉電不丟失)條目
id:條目ID,共16個可以用,范圍0x5f0~0x5ff,禁止使用其它ID,否則會造成不可預知的錯誤。
len:數據長度(最大16個字節)
buf:初始化NV值,寫NULL,表示不進行初始化
uint8 osal_nv_read( uint16 id, uint16 offset, uint16 len, void *buf );
函數功能:度一個NV(掉電不丟失)條目
id:條目ID,共16個可以用,范圍0x5f0~0x5ff,禁止使用其它ID,否則會造成不可預知的錯誤。使用之前,請先在user_app_Init函數中初始NV條目。
offset:偏移
len:讀入的大小(不能大于初始化時條目的長度)
buf:指向讀取緩存
uint8 osal_nv_write( uint16 id, uint16 offset, uint16 len, void *buf )
函數功能:寫一個NV(掉電不丟失)條目
id:條目ID,共16個可以用,范圍0x5f0~0x5ff,禁止使用其它ID,否則會造成不可預知的錯誤。使用之前,請先在user_app_Init函數中初始NV條目。
offset:偏移
len:寫入的大小(不能大于初始化時條目的長度)
buf:指向寫入數值的緩存
6 臨界函數
使用臨界保護,需要先在函數開頭定義halIntState_t變量halIntState
定義方法:halIntState_t halIntState;
HAL_ENTER_CRITICAL_SECTION(halIntState)
函數功能:進入臨界保護(執行后不會被中斷)
HAL_EXIT_CRITICAL_SECTION (halIntState)
函數功能:退出臨界保護
7 端口配置
注意:
端口可配置成通用IO或者模擬輸入,系統未使用的IO(根據用戶配置頭文件),上電默認都是通用IO口
配置流程:
第一步 配置通用IO還是模擬輸入(作為通用IO口時,由于上電默認,可以省去)
第二步 配置輸入還是輸出端口(模擬輸入時可以省去)
第三步 配置中斷功能(模擬輸入和通用IO輸出時可以省去)
KL_HAL_ENABLE_CHANNEL_ADC(channel)
端口開啟ADC功能,只有P0口支持ADC
channel:0~7, 0對應通道0,端口為P0_0,以此類推
KL_HAL_DISABLE_CHANNEL_ADC (channel)
端口關閉ADC功能(上電默認是關閉狀態)