Commit 4fe72d3a authored by Max Verevkin's avatar Max Verevkin
Browse files

change readme

parent b610d10c
[![Crates.io](https://img.shields.io/crates/v/nl80211.svg)](https://crates.io/crates/nl80211)
[![Coverage Status](https://coveralls.io/repos/github/Eonm/nl80211/badge.svg?branch=master)](https://coveralls.io/github/Eonm/nl80211?branch=master)
[![Build Status](https://travis-ci.org/Eonm/nl80211.svg?branch=master)](https://travis-ci.org/Eonm/nl80211)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/Eonm/markdown-packager/issues)
# nl80211
[API documentation](https://docs.rs/nl80211/)
This crate aims to provide a low level access to nl80211.
This crate is inspired by the go [wifi](https://github.com/mdlayher/wifi) package made by [@mdlayher](https://github.com/mdlayher).
:warning: __This library only works on Linux.__
:warning: __This crate is a work in progress__
## Built-in functions
This crate has some built-in functions to fetch information and metrics of wifi interfaces and wireless networks.
### Get interface information
```rust
extern crate nl80211;
use std::error::Error;
use nl80211::Socket;
fn main() -> Result<(), Box<dyn Error>> {
let interfaces = Socket::connect()?.get_interfaces_info()?;
for interface in interfaces {
let station = interface.get_station_info();
println!("{}", station?.pretty_format());
// bssid : FF:FF:FF:FF:FF:FF
// connected time : 35.816666 minutes
// beacon loss : 0
// signal : -60 dBm
// average signal : -61 dBm
// rx packets : 148983
// tx packets : 46335
// rx bitrate : 60 Mb/s
// tx bitrate : 140 Mb/s
// tx retries : 12578
// tx failed : 2
}
Ok(())
}
use nl80211::Socket;
fn main() -> Result<(), neli::err::NlError> {
let interfaces = Socket::connect()?.get_interfaces_info()?;
for interface in interfaces {
println!("{}", interface);
// Interface {
// index: Some([3, 0, 0, 0]),
// ssid: Some([101, 100, 117, 114, 111, 97, 109]),
// mac: Some([255, 255, 255, 255, 255, 255]),
// name: Some([119, 108, 112, 53, 115, 48]),
// frequency: Some([108, 9, 0, 0]),
// channel: Some([1, 0, 0, 0]),
// power: Some([164, 6, 0, 0]),
// phy: Some([0, 0, 0, 0]),
// device: Some([1, 0, 0, 0, 0, 0, 0, 0])
// }
println!("{}", interface);
// essid : eduroam
// mac : FF:FF:FF:FF:FF:FF
// interface : wlp5s0
// frequency : 2.412 Ghz
// channel : 1
// power : 17 dBm
// phy : 0
// device : 1
}
Ok(())
}
```
### Get Access Point information and metrics
```rust
extern crate nl80211;
use std::error::Error;
use nl80211::Socket;
fn main() -> Result<(), Box<dyn Error>> {
let interfaces = Socket::connect()?.get_interfaces_info()?;
for interface in interfaces {
let station = interface.get_station_info();
println!("{}", station?);
// bssid : FF:FF:FF:FF:FF:FF
// connected time : 35.816666 minutes
// beacon loss : 0
// signal : -60 dBm
// average signal : -61 dBm
// rx packets : 148983
// tx packets : 46335
// rx bitrate : 60 Mb/s
// tx bitrate : 140 Mb/s
// tx retries : 12578
// tx failed : 2
}
Ok(())
}
```
## Todo
- [ ] Implement custom errors
- [ ] Add more built-in functions
- [ ] Improve documentation
Rewrite of <https://github.com/Eonm/nl80211>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment