network: add bssid format replacement
This commit is contained in:
		
							parent
							
								
									2655660509
								
							
						
					
					
						commit
						e117bd7cb6
					
				|  | @ -40,6 +40,7 @@ class Network : public ALabel { | |||
|   void parseEssid(struct nlattr**); | ||||
|   void parseSignal(struct nlattr**); | ||||
|   void parseFreq(struct nlattr**); | ||||
|   void parseBssid(struct nlattr**); | ||||
|   bool associatedOrJoined(struct nlattr**); | ||||
|   bool checkInterface(std::string name); | ||||
|   auto getInfo() -> void; | ||||
|  | @ -69,6 +70,7 @@ class Network : public ALabel { | |||
| 
 | ||||
|   std::string state_; | ||||
|   std::string essid_; | ||||
|   std::string bssid_; | ||||
|   bool carrier_; | ||||
|   std::string ifname_; | ||||
|   std::string ipaddr_; | ||||
|  |  | |||
|  | @ -156,6 +156,8 @@ Addressed by *network* | |||
| 
 | ||||
| *{essid}*: Name (SSID) of the wireless network. | ||||
| 
 | ||||
| *{bssid}*: MAC address (BSSID) of the wireless access point. | ||||
| 
 | ||||
| *{signalStrength}*: Signal strength of the wireless network. | ||||
| 
 | ||||
| *{signaldBm}*: Signal strength of the wireless network in dBm. | ||||
|  |  | |||
|  | @ -332,8 +332,8 @@ auto waybar::modules::Network::update() -> void { | |||
|   getState(signal_strength_); | ||||
| 
 | ||||
|   auto text = fmt::format( | ||||
|       fmt::runtime(format_), fmt::arg("essid", essid_), fmt::arg("signaldBm", signal_strength_dbm_), | ||||
|       fmt::arg("signalStrength", signal_strength_), | ||||
|       fmt::runtime(format_), fmt::arg("essid", essid_), fmt::arg("bssid", bssid_), | ||||
|       fmt::arg("signaldBm", signal_strength_dbm_), fmt::arg("signalStrength", signal_strength_), | ||||
|       fmt::arg("signalStrengthApp", signal_strength_app_), fmt::arg("ifname", ifname_), | ||||
|       fmt::arg("netmask", netmask_), fmt::arg("ipaddr", ipaddr_), fmt::arg("gwaddr", gwaddr_), | ||||
|       fmt::arg("cidr", cidr_), fmt::arg("frequency", fmt::format("{:.1f}", frequency_)), | ||||
|  | @ -364,7 +364,7 @@ auto waybar::modules::Network::update() -> void { | |||
|     } | ||||
|     if (!tooltip_format.empty()) { | ||||
|       auto tooltip_text = fmt::format( | ||||
|           fmt::runtime(tooltip_format), fmt::arg("essid", essid_), | ||||
|           fmt::runtime(tooltip_format), fmt::arg("essid", essid_), fmt::arg("bssid", bssid_), | ||||
|           fmt::arg("signaldBm", signal_strength_dbm_), fmt::arg("signalStrength", signal_strength_), | ||||
|           fmt::arg("signalStrengthApp", signal_strength_app_), fmt::arg("ifname", ifname_), | ||||
|           fmt::arg("netmask", netmask_), fmt::arg("ipaddr", ipaddr_), fmt::arg("gwaddr", gwaddr_), | ||||
|  | @ -407,6 +407,7 @@ void waybar::modules::Network::clearIface() { | |||
|   ifid_ = -1; | ||||
|   ifname_.clear(); | ||||
|   essid_.clear(); | ||||
|   bssid_.clear(); | ||||
|   ipaddr_.clear(); | ||||
|   gwaddr_.clear(); | ||||
|   netmask_.clear(); | ||||
|  | @ -481,6 +482,7 @@ int waybar::modules::Network::handleEvents(struct nl_msg *msg, void *data) { | |||
|             } else { | ||||
|               // clear state related to WiFi connection
 | ||||
|               net->essid_.clear(); | ||||
|               net->bssid_.clear(); | ||||
|               net->signal_strength_dbm_ = 0; | ||||
|               net->signal_strength_ = 0; | ||||
|               net->signal_strength_app_.clear(); | ||||
|  | @ -772,6 +774,7 @@ int waybar::modules::Network::handleScan(struct nl_msg *msg, void *data) { | |||
|   net->parseEssid(bss); | ||||
|   net->parseSignal(bss); | ||||
|   net->parseFreq(bss); | ||||
|   net->parseBssid(bss); | ||||
|   return NL_OK; | ||||
| } | ||||
| 
 | ||||
|  | @ -837,6 +840,20 @@ void waybar::modules::Network::parseFreq(struct nlattr **bss) { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| void waybar::modules::Network::parseBssid(struct nlattr **bss) { | ||||
|   if (bss[NL80211_BSS_BSSID] != nullptr) { | ||||
|     auto bssid = static_cast<uint8_t *>(nla_data(bss[NL80211_BSS_BSSID])); | ||||
|     auto bssid_len = nla_len(bss[NL80211_BSS_BSSID]); | ||||
|     if (bssid_len == 6) { | ||||
|       bssid_ = std::format( | ||||
|         "{:x}:{:x}:{:x}:{:x}:{:x}:{:x}", | ||||
|         bssid[0], bssid[1], bssid[2], | ||||
|         bssid[3], bssid[4], bssid[5] | ||||
|       ); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| bool waybar::modules::Network::associatedOrJoined(struct nlattr **bss) { | ||||
|   if (bss[NL80211_BSS_STATUS] == nullptr) { | ||||
|     return false; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue