1

I have a structure that I don't understand:

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;

it is initualized by assigning "#defined" values:

wifi_config_t wifi_config = {
  .sta = {
    .ssid = WIFI_AP_NAME,
    .password = WIFI_AP_PASS,
    .bssid_set = 0
  },
};

Where WIFI_AP_NAME and WIFI_AP_PASS are defined like this:

#define WIFI_AP_NAME CONFIG_WIFI_SSID
#define CONFIG_WIFI_SSID "myssid"

Now, I have:

char *wifi_ssid=mynvs_read(WIFI_SSID_TYPE);
char *wifi_pass=mynvs_read(WIFI_PASS_TYPE);

And I need to assign these values to .ssid and .password in the wifi_config structure.

How to do that? Because simple assignment throws an error:

wifi_config_t wifi_config = {
  .sta = {
    .ssid = wifi_ssid,
    .password = wifi_pass,
    .bssid_set = 0
  },
};

error: missing braces around initializer [-Werror=missing-braces]

when I try to strcpy values, I got:

error: pointer targets in passing argument 1 of 'strcpy' differ in signedness [-Werror=pointer-sign]
         strcpy(wifi_config.sta.password,wifi_pass);

Best Regards Marek

1

2 Answers 2

0

Structure definition:

bssid_set = 0

Your code:

.bssid_set = 0

See any difference?

Sign up to request clarification or add additional context in comments.

Comments

0

this one works for me:

strcpy((unsigned char)wifi_config.sta.ssid,(unsigned char)mynvs_wifi_ssid);

1 Comment

While this code snippet may solve the question, including an explanation really helps to improve the quality of your post. Remember that you are answering the question for readers in the future, and those people might not know the reasons for your code suggestion. Please also try not to crowd your code with explanatory comments, this reduces the readability of both the code and the explanations!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.