AES-CBC-128的加解密模式,用HAL_Aes128_Init()被調用時傳入的密鑰,解密從src位置起長度為blockNum塊數的密文,并把明文結果存放到dst起始的內存緩沖區中。

原型

typedef void *p_HAL_Aes128_t;

int HAL_Aes128_Cbc_Decrypt(
            _IN_ p_HAL_Aes128_t aes,
            _IN_ const void *src,
            _IN_ size_t blockNum,
            _OU_ void *dst);
            

接口說明

參數說明

參數 數據類型 方向 說明
aes void * 輸入 這是一個句柄,是用戶調用HAL_Aes128_Init()成功時所得到的返回值,之后需要作為必選的入參傳給所有AES加解密相關的HAL接口。
src const void * 輸入 指定被解密的源數據的緩沖區首地址,也就是AES密文的起始地址。
blockNum size_t 輸入 指定被解密的源數據的緩沖區長度, 以16字節為一個Block,此參數表達密文總長度是多少個Block,或者說是16字節的多少倍。
dst void * 輸出 指定被解密的目的數據的緩沖區首地址,也就是AES解密后,存放明文的首地址。

返回值說明

說明
0 解密成功
-1 解密失敗

HAL_Aes128_Cbc_Encrypt

原型

int HAL_Aes128_Cbc_Encrypt(
            _IN_ p_HAL_Aes128_t aes,
            _IN_ const void *src,
            _IN_ size_t blockNum,
            _OU_ void *dst);
            

接口說明

AES-CBC-128的加解密模式,用HAL_Aes128_Init()被調用時傳入的密鑰,加密從src位置起長度為blockNum塊數的明文,并把密文結果存放到dst起始的內存緩沖區中。

參數說明

參數 數據類型 方向 說明
aes void * 輸入 這是一個句柄,是用戶調用HAL_Aes128_Init()成功時所得到的返回值,之后需要作為必選的入參傳給所有AES加解密相關的HAL接口。
src const void * 輸入 指定被加密的源數據的緩沖區首地址,也就是明文的起始地址。
blockNum size_t 輸入 指定被加密的源數據的緩沖區長度,以16字節為一個Block,此參數表達明文總長度是多少個Block,或者說是16字節的多少倍。
dst void * 輸出 指定被加密的目的數據的緩沖區首地址,也就是AES加密后,存放AES密文的首地址。

返回值說明

說明
0 加密成功
-1 加密失敗

HAL_Aes128_Cfb_Decrypt

原型

int HAL_Aes128_Cfb_Decrypt(
            _IN_ p_HAL_Aes128_t aes,
            _IN_ const void *src,
            _IN_ size_t length,
            _OU_ void *dst);
            

接口說明

CFB模式的AES128解密接口函數,使用此接口前必須先調用HAL_Aes128_Init()建立AES上下文數據結構體。

參數length為分組數量(AES128一個分組的長度為128bits,也就是16bytes), 而非字節數。

用戶在實現此函數時無需考慮padding問題,因為SDK在調用此接口前已完成padding處理。

參數說明

參數 數據類型 方向 說明
aes void * 輸入 調用HAL_Aes128_Init()時返回的上下文結構體指針
src const void * 輸入 指向密文數據緩沖區的指針
blockNum size_t 輸入 密文數據的分組數量,AES128一個分組長度為16bytes
dst void * 輸出 指向密文數據緩沖區的指針

返回值說明

說明
0 解密成功
-1 解密失敗

HAL_Aes128_Cfb_Encrypt

原型

int HAL_Aes128_Cfb_Encrypt(
            _IN_ p_HAL_Aes128_t aes,
            _IN_ const void *src,
            _IN_ size_t length,
            _OU_ void *dst);
            

接口說明

CFB模式的AES128加密接口函數,使用此接口前必須先調用HAL_Aes128_Init()建立AES上下文數據結構體。

參數length為分組數量(AES128一個分組的長度為128bits,也就是16bytes),而非字節數

用戶在實現此函數時無需考慮padding問題,因為SDK在調用此接口前已完成padding處理。

參數說明

參數 數據類型 方向 說明
aes p_HAL_Aes128_t 輸入 調用HAL_Aes128_Init()時返回的上下文結構體指針
src const void * 輸入 指向明文數據緩沖區的指針
length size_t 輸入 明文數據的分組數量,AES128一個分組長度為16bytes
dst void * 輸出 指向密文數據緩沖區的指針

返回值說明

說明
0 加密成功
-1 加密失敗

HAL_Aes128_Destroy

原型

int HAL_Aes128_Destroy(_IN_ p_HAL_Aes128_t aes);
            

接口說明

銷毀AES加解密算法的上下文結構體,釋放內存資源。

參數說明

參數 數據類型 方向 說明
aes p_HAL_Aes128_t 輸入 此參數應調用HAL_Aes128_Init()時返回的上下文結構體指針

返回值說明

說明
0 操作成功
-1 操作失敗

HAL_Aes128_Init

原型

p_HAL_Aes128_t HAL_Aes128_Init(
            _IN_ const uint8_t *key,
            _IN_ const uint8_t *iv,
            _IN_ AES_DIR_t dir);
            

接口說明

初始化AES加解密算法的上下文結構體,并根據dir參數完成AES算法的初始化。用戶可自定義結構體類型,但結構體中應包含key,iv等上下文數據。

參數說明

參數 數據類型 方向 說明
key const uint8_t * 輸入 AES密鑰數組首地址,密鑰數組長度必須≥16 bytes。
iv const uint8_t * 輸入 AES初始向量數組首地址, 初始向量數組的長度必須≥16 bytes。
dir AES_DIR_t 輸入 指定AES算法用途HAL_AES_ENCRYPTION:表示用于加密HAL_AES_DECRYPTION:表示用于解密
typedef enum {
    HAL_AES_ENCRYPTION = 0,     // 用于加密
    HAL_AES_DECRYPTION = 1,     // 用于解密
} AES_DIR_t;
            

返回值說明

指向所初始化的AES加解密上下文結構體的指針,p_HAL_Aes128_t的類型定義如下所示:

typedef void *p_HAL_Aes128_t;
            

HAL_Awss_Close_Monitor

原型

void HAL_Awss_Close_Monitor(void);
            

接口說明

設置Wi-Fi網卡離開監聽(Monitor)模式,并開始以站點(Station)模式工作,并不再以Sniffer抓包。

參數說明

void

返回值說明

void

HAL_Awss_Connect_Ap

原型

int HAL_Awss_Connect_Ap(
            _IN_ uint32_t connection_timeout_ms,
            _IN_ char ssid[HAL_MAX_SSID_LEN],
            _IN_ char passwd[HAL_MAX_PASSWD_LEN],
            _IN_OPT_ enum AWSS_AUTH_TYPE auth,
            _IN_OPT_ enum AWSS_ENC_TYPE encry,
            _IN_OPT_ uint8_t bssid[ETH_ALEN],
            _IN_OPT_ uint8_t channel);

            

接口說明

要求Wi-Fi網卡連接指定熱點(Access Point)的函數,bssid指定特定AP,另外bssid也可能為空或無效值(全0或全0xff)。

參數說明

參數 數據類型 方向 說明
connection_timeout_ms uint32_t 輸入 連接AP的超時時間
ssid char 輸入 目的AP的SSID
passwd char 輸入 目的AP的PASSWORD
auth enum 輸入 目的AP的加密方式,HAL可以忽略
encry enum 輸入 目的AP的認證方式,HAL可以忽略
bssid uint8_t 輸入 目的AP的BSSID,該字段可能為NULL或設置為全0。
channel uint8_t 輸入 目的AP的信道,該字段可以忽略。

返回值說明

說明
0 連接AP和DHCP成功
-1 連接AP和DHCP失敗

HAL_Awss_Get_Channelscan_Interval_Ms

原型

int HAL_Awss_Get_Channelscan_Interval_Ms(void);
            

接口說明

獲取在每個信道(channel)上掃描的時間長度,單位是毫秒,建議200ms~400ms,默認250ms。

參數說明

void

返回值說明

時間長度, 單位是毫秒

HAL_Awss_Get_Connect_Default_Ssid_Timeout_Interval_Ms

原型

int HAL_Awss_Get_Connect_Default_Ssid_Timeout_Interval_Ms(void);
            

接口說明

獲取配網服務(AWSS)超時時長到達之后,去連接默認SSID時的超時時長,單位是毫秒(該接口已經廢棄,不再使用,不用對接)

參數說明

void

返回值說明

時時長,單位是毫秒。

HAL_Awss_Get_Conn_Encrypt_Type

原型

int HAL_Awss_Get_Conn_Encrypt_Type(void);
            

接口說明

獲取零配,熱點配網和路由器配網的安全等級。

參數說明

void

返回值說明

說明
3 aes128cfb with aes-key per product and aes-iv = random
4 aes128cfb with aes-key per device and aes-iv = random
5 aes128cfb with aes-key per manufacture and aes-iv = random
others 無效

HAL_Awss_Get_Encrypt_Type

原型

int HAL_Awss_Get_Encrypt_Type(void);
            

接口說明

獲取smartconfig服務的安全等級

參數說明

void

返回值說明

說明
0 open (no encrypt)
1 aes256cfb with default aes-key and aes-iv
2 aes128cfb with default aes-key and aes-iv
3 aes128cfb with aes-key per product and aes-iv = 0
4 aes128cfb with aes-key per device and aes-iv = 0
5 es128cfb with aes-key per manufacture and aes-iv = 0
others invalid

HAL_Awss_Get_Timeout_Interval_Ms

原型

int HAL_Awss_Get_Timeout_Interval_Ms(void);
            

接口說明

獲取配網服務(AWSS)的超時時間長度,單位是毫秒,建議60s或60000ms。

參數說明

void

返回值說明

超時時長,單位是毫秒

HAL_Awss_Open_Monitor

原型

void HAL_Awss_Open_Monitor(_IN_ awss_recv_80211_frame_cb_t cb);
            

接口說明

設置Wi-Fi網卡工作在監聽(Monitor)模式,并在收到802.11幀的時候調用被傳入的回調函數。

參數說明

參數 數據類型 方向 說明
cb awss_recv_80211_frame_cb_t 輸入 回調函數指針,當WiFi接收到幀時會調用此函數
/**
 * @brief   802.11幀的處理函數, 可以將802.11 Frame傳遞給這個函數
 *
 * @param[in] buf @n 80211 frame buffer, or pointer to struct ht40_ctrl
 * @param[in] length @n 80211 frame buffer length
 * @param[in] link_type @n AWSS_LINK_TYPE_NONE for most rtos HAL,
 *              and for linux HAL, do the following step to check
 *              which header type the driver supported.
 * @param[in] with_fcs @n 80211 frame buffer include fcs(4 byte) or not
 * @param[in] rssi @n rssi of packet, range of `[-127, -1]`
 */
typedef int (*awss_recv_80211_frame_cb_t)(char *buf, int length,
        enum AWSS_LINK_TYPE link_type, int with_fcs, signed char rssi);
            

返回值說明

void

HAL_Awss_Switch_Channel

原型

void HAL_Awss_Switch_Channel(
            _IN_ char primary_channel,
            _IN_OPT_ char secondary_channel,
            _IN_OPT_ uint8_t bssid[ETH_ALEN]);
            

接口說明

設置Wi-Fi網卡切換到指定的信道(channel)上

參數說明

參數 數據類型 方向 說明
primary_channel char 輸入 首選信道
secondary_channel char 輸入 輔助信道(信道帶寬為40MHz時才會使用,信道寬度為20MHz是可以忽略該參數)。
bssid uint8_t 輸入 次參數已廢棄,可以忽略

返回值說明

void

HAL_RF433_Get_Rssi_Dbm

原型

int HAL_RF433_Get_Rssi_Dbm(void);
            

接口說明

獲取RF433的接收信號強度RSSI(該API已經廢棄,不再使用,不用對接)

參數說明

void

返回值說明

信號強度數值,單位是dBm。

HAL_Sys_Net_Is_Ready

原型

int HAL_Sys_Net_Is_Ready(void);
            

接口說明

檢查系統網絡是否可用(設備是否已經成功獲得IP地址并且當前IP地址可用)

參數說明

void

返回值說明

說明
0 網絡不可用
1 網絡可用

HAL_Wifi_Enable_Mgmt_Frame_Filter

原型

int HAL_Wifi_Enable_Mgmt_Frame_Filter(
            _IN_ uint32_t filter_mask,
            _IN_OPT_ uint8_t vendor_oui[3],
            _IN_ awss_wifi_mgmt_frame_cb_t callback);
            

接口說明

在站點(Station)模式下使能或禁用對特定管理幀的過濾(只接受包含特定OUI的管理幀)

參數說明

參數 數據類型 方向 說明
filter_mask uint32_t 輸入 幀過濾參數
vendor_oui uint8_t 輸入 WiFi聯盟分配的廠商OUI,如果OUI為NULL,表示不對OUI過濾,反之要根據OUI過濾。
callback awss_wifi_mgmt_frame_cb_t 輸入 用于接收802.11幀或者信息元素(IE)的回調函數

返回值說明

說明
= 0 發送成功
= -1 發送失敗
= -2 不支持

HAL_Wifi_Get_Ap_Info

原型

int HAL_Wifi_Get_Ap_Info(
            _OU_ char ssid[HAL_MAX_SSID_LEN],
            _OU_ char passwd[HAL_MAX_PASSWD_LEN],
            _OU_ uint8_t bssid[ETH_ALEN]);
            

接口說明

獲取所連接的熱點(Access Point)的信息

參數說明

參數 數據類型 方向 說明
ssid char 輸出 AP的SSID,該參數可能為NULL
passwd char 輸出 AP的Password,該參數為NULL
bssid uint8_t 輸出 AP的BSSID,該參數可能為NULL,如果bssid不對將導致零配設備發現失敗

返回值說明

說明
= 0 操作成功
= -1 操作失敗

HAL_Wifi_Get_IP

原型

uint32_t HAL_Wifi_Get_IP(_OU_ char ip_str[HAL_IP_LEN], _IN_ const char *ifname);
            

接口說明

獲取Wi-Fi網口的IP地址,點分十進制格式保存在字符串數組出參,二進制格式則作為返回值,并以網絡字節序(大端)表達

參數說明

參數 數據類型 方向 說明
ip_str char[] 輸出 存放點分十進制格式的IP地址字符串的數組
ifname const char* 輸入 指定Wi-Fi網絡接口的名字(如果只有一個網口,可以忽略此參數,該參數可能為NULL)

返回值說明

二進制形式的IP地址,以網絡字節序(大端)組織

HAL_Wifi_Get_Mac

原型

char *HAL_Wifi_Get_Mac(_OU_ char mac_str[HAL_MAC_LEN]);
            

接口說明

獲取Wi-Fi網口的MAC地址,格式應當是”XX:XX:XX:XX:XX:XX“

參數說明

參數 數據類型 方向 說明
mac_str char 輸出 指向緩沖區數組起始位置的字符指針

返回值說明

指向緩沖區數組起始位置的字符指針

HAL_Wifi_Low_Power

原型

int HAL_Wifi_Low_Power(_IN_ int timeout_ms);
            

接口說明

使WiFi模組進入省電模式,并持續一段時間(該API未用,可以暫時不用對接)

參數說明

參數 數據類型 方向 說明
timeout_ms int 輸入 指定在多長時間內,WiFi模組都處于省電模式,單位是毫秒

返回值說明

說明
0 設置成功
-1 設置失敗

HAL_Wifi_Scan

原型

int HAL_Wifi_Scan(awss_wifi_scan_result_cb_t cb);
            

接口說明

啟動一次WiFi的空中掃描,該API是一個阻塞操作,掃描沒有完成不能結束,所有的AP列表收集完成后,一個一個通過回調函數告知AWSS,最好不要限制AP的數量,否則可能導致中文GBK編碼的SSID熱點配網失敗

參數說明

參數 數據類型 方向 說明
cb awss_wifi_scan_result_cb_t 輸入 掃描通知回調函數

返回值說明

說明
0 掃描正常結束
-1 其他情況

HAL_Wifi_Send_80211_Raw_Frame

原型

int HAL_Wifi_Send_80211_Raw_Frame(_IN_ enum HAL_Awss_Frame_Type type,
                                  _IN_ uint8_t *buffer, _IN_ int len);

            

接口說明

在當前信道(channel)上以基本數據速率(1Mbps)發送裸的802.11幀(raw 802.11 frame)

參數說明

參數 數據類型 方向 說明
type enum HAL_Awss_Frame_Type 輸入 查看HAL_Awss_Frame_Type_t定義,目前只支持FRAME_BEACONFRAME_PROBE_REQ
buffer uint8_t * 輸入 80211裸數據幀,包括完整的MAC頭和FCS域
len int 輸入 80211裸幀字節長度
/* 80211幀類型定義 */
typedef enum HAL_Awss_Frame_Type {
    FRAME_ACTION,
    FRAME_BEACON,
    FRAME_PROBE_REQ,
    FRAME_PROBE_RESPONSE,
    FRAME_DATA
} HAL_Awss_Frame_Type_t;
            

返回值說明

說明
= 0 發送成功
= -1 發送失敗

HAL_Awss_Open_Ap

原型

int HAL_Awss_Open_Ap(const char *ssid, const char *passwd, int beacon_interval, int hide);
            

接口說明

開啟設備熱點(SoftAP模式)

參數說明

參數 數據類型 方向 說明
ssid const char * 輸入 熱點的ssid字符
passwd const char * 輸入 熱點的passwd字符
beacon_interval int 輸入 熱點的Beacon廣播周期(廣播間隔)
hide int 輸入 0:非隱藏,其它值:隱藏
返回值說明
說明
0 success
-1 unsupported
-2 failure with system error
-3 failure with no memory
-4 failure with invalid parameters

HAL_Awss_Close_Ap

原型

int HAL_Awss_Close_Ap(void);
            

接口說明

關閉設備熱點

參數說明

void

返回值說明

說明
0 success
-1 unsupported
-2 failure