@@ -4,7 +4,6 @@ use std::{
44} ;
55
66use clap:: Parser ;
7- use lazy_static:: lazy_static;
87use pcap_file:: {
98 pcap:: { PcapHeader , PcapPacket , PcapWriter } ,
109 DataLink ,
@@ -28,102 +27,11 @@ pub struct AppArgs {
2827 channel : String ,
2928}
3029
31- lazy_static ! {
32- static ref METADATA : Metadata = Metadata {
33- help_url: "http://github.com/esp-rs" . into( ) ,
34- display_description: "esp-ieee802154" . into( ) ,
35- ..r_extcap:: cargo_metadata!( )
36- } ;
37- static ref WIFI_CAPTURE_INTERFACE : Interface = Interface {
38- value: "802.15.4" . into( ) ,
39- display: "esp-ieee802154 Sniffer" . into( ) ,
40- dlt: Dlt {
41- data_link_type: DataLink :: USER0 ,
42- name: "USER0" . into( ) ,
43- display: "IEEE802.15.4" . into( ) ,
44- } ,
45- } ;
46- static ref CONFIG_SERIALPORT : StringConfig = StringConfig :: builder( )
47- . config_number( 1 )
48- . call( "serialport" )
49- . display( "Serialport" )
50- . tooltip( "Serialport to connect to" )
51- . required( false )
52- . placeholder( "" )
53- . build( ) ;
54- static ref CONFIG_CHANNEL : SelectorConfig = SelectorConfig :: builder( )
55- . config_number( 3 )
56- . call( "channel" )
57- . display( "Channel" )
58- . tooltip( "Channel Selector" )
59- . default_options( [
60- ConfigOptionValue :: builder( )
61- . value( "11" )
62- . display( "11" )
63- . default ( true )
64- . build( ) ,
65- ConfigOptionValue :: builder( )
66- . value( "12" )
67- . display( "12" )
68- . build( ) ,
69- ConfigOptionValue :: builder( )
70- . value( "13" )
71- . display( "13" )
72- . build( ) ,
73- ConfigOptionValue :: builder( )
74- . value( "14" )
75- . display( "14" )
76- . build( ) ,
77- ConfigOptionValue :: builder( )
78- . value( "15" )
79- . display( "15" )
80- . build( ) ,
81- ConfigOptionValue :: builder( )
82- . value( "16" )
83- . display( "16" )
84- . build( ) ,
85- ConfigOptionValue :: builder( )
86- . value( "17" )
87- . display( "17" )
88- . build( ) ,
89- ConfigOptionValue :: builder( )
90- . value( "18" )
91- . display( "18" )
92- . build( ) ,
93- ConfigOptionValue :: builder( )
94- . value( "19" )
95- . display( "19" )
96- . build( ) ,
97- ConfigOptionValue :: builder( )
98- . value( "20" )
99- . display( "20" )
100- . build( ) ,
101- ConfigOptionValue :: builder( )
102- . value( "21" )
103- . display( "21" )
104- . build( ) ,
105- ConfigOptionValue :: builder( )
106- . value( "22" )
107- . display( "22" )
108- . build( ) ,
109- ConfigOptionValue :: builder( )
110- . value( "23" )
111- . display( "23" )
112- . build( ) ,
113- ConfigOptionValue :: builder( )
114- . value( "24" )
115- . display( "24" )
116- . build( ) ,
117- ConfigOptionValue :: builder( )
118- . value( "25" )
119- . display( "25" )
120- . build( ) ,
121- ConfigOptionValue :: builder( )
122- . value( "26" )
123- . display( "26" )
124- . build( ) ,
125- ] )
126- . build( ) ;
30+ fn config_option_value ( value : & ' static str ) -> ConfigOptionValue {
31+ ConfigOptionValue :: builder ( )
32+ . value ( value)
33+ . display ( value)
34+ . build ( )
12735}
12836
12937fn main ( ) {
@@ -135,17 +43,71 @@ fn main() {
13543 }
13644 }
13745
46+ let wifi_capture_interface = Interface {
47+ value : "802.15.4" . into ( ) ,
48+ display : "esp-ieee802154 Sniffer" . into ( ) ,
49+ dlt : Dlt {
50+ data_link_type : DataLink :: USER0 ,
51+ name : "USER0" . into ( ) ,
52+ display : "IEEE802.15.4" . into ( ) ,
53+ } ,
54+ } ;
55+
13856 match args. extcap . run ( ) . unwrap ( ) {
13957 ExtcapStep :: Interfaces ( interfaces_step) => {
140- interfaces_step. list_interfaces ( & METADATA , & [ & * WIFI_CAPTURE_INTERFACE ] , & [ ] ) ;
58+ let metadata = Metadata {
59+ help_url : "http://github.com/esp-rs" . into ( ) ,
60+ display_description : "esp-ieee802154" . into ( ) ,
61+ ..r_extcap:: cargo_metadata!( )
62+ } ;
63+
64+ interfaces_step. list_interfaces ( & metadata, & [ & wifi_capture_interface] , & [ ] ) ;
14165 }
14266 ExtcapStep :: Dlts ( dlts_step) => {
14367 dlts_step
144- . print_from_interfaces ( & [ & * WIFI_CAPTURE_INTERFACE ] )
68+ . print_from_interfaces ( & [ & wifi_capture_interface ] )
14569 . unwrap ( ) ;
14670 }
14771 ExtcapStep :: Config ( config_step) => {
148- config_step. list_configs ( & [ & * CONFIG_SERIALPORT , & * CONFIG_CHANNEL ] )
72+ let config_serialport = StringConfig :: builder ( )
73+ . config_number ( 1 )
74+ . call ( "serialport" )
75+ . display ( "Serialport" )
76+ . tooltip ( "Serialport to connect to" )
77+ . required ( false )
78+ . placeholder ( "" )
79+ . build ( ) ;
80+
81+ let config_channel = SelectorConfig :: builder ( )
82+ . config_number ( 3 )
83+ . call ( "channel" )
84+ . display ( "Channel" )
85+ . tooltip ( "Channel Selector" )
86+ . default_options ( [
87+ ConfigOptionValue :: builder ( )
88+ . value ( "11" )
89+ . display ( "11" )
90+ . default ( true )
91+ . build ( ) ,
92+ config_option_value ( "12" ) ,
93+ config_option_value ( "13" ) ,
94+ config_option_value ( "14" ) ,
95+ config_option_value ( "15" ) ,
96+ config_option_value ( "16" ) ,
97+ config_option_value ( "17" ) ,
98+ config_option_value ( "18" ) ,
99+ config_option_value ( "19" ) ,
100+ config_option_value ( "20" ) ,
101+ config_option_value ( "21" ) ,
102+ config_option_value ( "22" ) ,
103+ config_option_value ( "23" ) ,
104+ config_option_value ( "24" ) ,
105+ config_option_value ( "25" ) ,
106+ config_option_value ( "26" ) ,
107+ ] )
108+ . build ( ) ;
109+
110+ config_step. list_configs ( & [ & config_serialport, & config_channel] )
149111 }
150112 ExtcapStep :: ReloadConfig ( _reload_config_step) => {
151113 panic ! ( "Unsupported operation" ) ;
0 commit comments