#ifndef UTILITIES_H #define UTILITIES_H #include /** * @brief Validates whether a given string contains only characters allowed in WiFi SSIDs and passwords. * * This function checks each character in the provided string to ensure * that it contains only characters allowed in WiFi SSIDs and passwords. * It considers characters from 'A' to 'Z', 'a' to 'z', '0' to '9', as well as * the following special characters: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ * * @param string Pointer to the string to be validated. * @param size Size of the string including the null-terminator. * @return true if the string contains only allowed characters or is NULL, * false otherwise. */ bool validateWiFiString(char *string, size_t size); /** * @brief Copies a string to a buffer, replacing invalid WiFi SSID characters with a placeholder. * * This function checks each character in the provided input string to ensure * that it contains only characters allowed in WiFi SSIDs and passwords. If a character * is invalid, it replaces it with a placeholder character (e.g., '_'). * It considers characters from 'A' to 'Z', 'a' to 'z', '0' to '9', as well as * the following special characters: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ * * @param input Pointer to the input string to be validated and copied. * @param buffer Pointer to the buffer where the output string will be copied. * @param bufferSize Size of the buffer including the null-terminator. */ void sanitizeWiFiString(const char *input, char *buffer, size_t bufferSize); /** * @brief Generates a device-specific password based on a seed and the ESP8266 Chip ID. * * This function combines a given seed with the unique Chip ID of the ESP8266 device to create a device-specific password. * The resulting password is stored in the provided character buffer. * * @param seed The seed string used for password generation. Should be up to 16 characters long. * @param passwordBuffer The character buffer where the generated password will be stored. * @param bufferLength The length of the password buffer. Should be large enough to hold the generated password and null terminator. */ void GenerateDeviceSpecificPassword(const char* seed, char* passwordBuffer, size_t bufferLength); #endif // UTILITIES_H