我有一个我不理解的结构:
typedef struct {
uint8_t ssid[32]; /**< SSID of target AP*/
uint8_t password[64]; /**< password of target AP*/
wifi_scan_method_t scan_method; /**< do all channel scan or fast scan */
bool bssid_set;
/**< whether set MAC address of target AP or not. Generally, station_config.bssid_set needs to be 0; and it needs to be 1 only when users need to check the MAC address of the AP.*/
uint8_t bssid[6]; /**< MAC address of target AP*/
uint8_t channel;
/**< channel of target AP. Set to 1~13 to scan starting from the specified channel before connecting to AP. If the channel of AP is unknown, set it to 0.*/
wifi_sort_method_t sort_method;
/**< sort the connect AP in the list by rssi or security mode */
wifi_fast_scan_threshold_t threshold;
/**< When scan_method is set to WIFI_FAST_SCAN, only APs which have an auth mode that is more secure than the selected auth mode and a signal stronger than the minimum RSSI will be used. */
} wifi_sta_config_t;
通过分配“#defined”值进行初始化:
wifi_config_t wifi_config = {
.sta = {
.ssid = WIFI_AP_NAME,
.password = WIFI_AP_PASS,
.bssid_set = 0
},
};
WIFI_AP_NAME
和WIFI_AP_PASS
定义如下:
#define WIFI_AP_NAME CONFIG_WIFI_SSID
#define CONFIG_WIFI_SSID "myssid"
现在,我有:
char *wifi_ssid=mynvs_read(WIFI_SSID_TYPE);
char *wifi_pass=mynvs_read(WIFI_PASS_TYPE);
我需要将这些值分配给.ssid
结构中的.password
和wifi_config
。
怎么做?因为简单的赋值会引发错误:
wifi_config_t wifi_config = {
.sta = {
.ssid = wifi_ssid,
.password = wifi_pass,
.bssid_set = 0
},
};
错误:初始化程序周围缺少大括号[-Werror = missing-braces]
当我尝试strcpy值时,我得到了:
error: pointer targets in passing argument 1 of 'strcpy' differ in signedness [-Werror=pointer-sign]
strcpy(wifi_config.sta.password,wifi_pass);
最诚挚的问候 马立克
答案 0 :(得分:0)
结构定义:
bssid_set = 0
您的代码:
.bssid_set = 0
看到有什么区别?
答案 1 :(得分:0)
这个对我有用:
strcpy((unsigned char)wifi_config.sta.ssid,(unsigned char)mynvs_wifi_ssid);