1da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol/*
2da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * Copyright (C) 2017 The Android Open Source Project
3da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol *
4da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * Licensed under the Apache License, Version 2.0 (the "License");
5da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * you may not use this file except in compliance with the License.
6da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * You may obtain a copy of the License at
7da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol *
8da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol *      http://www.apache.org/licenses/LICENSE-2.0
9da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol *
10da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * Unless required by applicable law or agreed to in writing, software
11da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * distributed under the License is distributed on an "AS IS" BASIS,
12da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * See the License for the specific language governing permissions and
14da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * limitations under the License.
15da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol */
16da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol
17da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol#ifndef CHRE_UTIL_NANOAPP_WIFI_H_
18da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol#define CHRE_UTIL_NANOAPP_WIFI_H_
19da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol
200e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol#include <cstddef>
21da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol#include <cstdint>
22da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol
2341f929c661d6a7adcf4c939d93d2f5437f144a2bBrian Duddie#include <chre/wifi.h>
240e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol
25da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignolnamespace chre {
26da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol
270e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol//! The length of a string SSID with null-terminator.
280e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignolconstexpr size_t kMaxSsidStrLen = CHRE_WIFI_SSID_MAX_LEN + 1;
290e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol
300e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol//! The length of a formatted BSSID string in XX:XX:XX:XX:XX:XX\0 format.
310e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignolconstexpr size_t kBssidStrLen = 18;
320e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol
33da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol/**
340e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @param buffer a pointer to a buffer to format into.
350e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @param bufferLen a buffer to format into.
36da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * @param a pointer to SSID data.
37da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol * @param ssidLen the length of the SSID data.
380e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @return true if the SSID is printable and was copied into the output buffer.
390e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol */
400e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignolbool parseSsidToStr(char *buffer, size_t bufferLen,
410e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol                    const uint8_t *ssid, uint8_t ssidLen);
420e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol
430e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol/**
440e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * Parses a BSSID into a XX:XX:XX:XX:XX:XX formatted string.
450e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol *
460e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @param bssid the BSSID to format into a string.
470e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @param buffer the buffer to format the string into.
480e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @param bufferLen the length of the buffer to format into.
490e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @return true if the buffer is large enough and the string is formatted.
500e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol */
510e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignolbool parseBssidToStr(const uint8_t bssid[CHRE_WIFI_BSSID_LEN],
520e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol                     char *buffer, size_t bufferLen);
530e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol
540e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol/**
550e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * Parses a WiFi band into a string.
560e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol *
570e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignol * @param band the CHRE WiFi band to parse into a string.
58de21e14b333cc8f52db1e759b537c4c1a8e81dd3Andrew Rossignol * @return a pointer to the string or some indication of invalid.
59da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol */
600e2f02c628480c36e32c05656e66e108413a5a42Andrew Rossignolconst char *parseChreWifiBand(uint8_t band);
61da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol
62da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol}  // namespace chre
63da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol
64da6eaabf8572a16acaebd516dd96ce0063d71e91Andrew Rossignol#endif  // CHRE_UTIL_NANOAPP_WIFI_H_
65