|
10 | 10 | import fcntl
|
11 | 11 | import struct
|
12 | 12 | import json
|
| 13 | +import argparse |
13 | 14 |
|
14 | 15 | class WiFi():
|
15 | 16 |
|
@@ -136,6 +137,11 @@ def set_start_as_client(cls):
|
136 | 137 | cls._config["wifi_mode"] = "client"
|
137 | 138 | cls.save_config()
|
138 | 139 |
|
| 140 | + @classmethod |
| 141 | + def set_bot_name(cls, name): |
| 142 | + cls._config["bot_name"] = name |
| 143 | + cls.save_config() |
| 144 | + |
139 | 145 | @classmethod
|
140 | 146 | def start_as_client(cls):
|
141 | 147 | cls.stop_dnsmasq()
|
@@ -224,19 +230,27 @@ def get_serial(cls):
|
224 | 230 | return cpuserial
|
225 | 231 |
|
226 | 232 | def main():
|
| 233 | + parser = argparse.ArgumentParser(description="CoderBot wifi config manager and daemon initializer", prog="wifi.py") |
| 234 | + subparsers = parser.add_subparsers() |
| 235 | + up = subparsers.add_parser('updatecfg', help="update configuration") |
| 236 | + up.add_argument('-m', '--mode', choices=['ap', 'client'], help='wifi mode') |
| 237 | + up.add_argument('-s', '--ssid', help='wifi ssid') |
| 238 | + up.add_argument('-p', '--pwd', help='wifi password') |
| 239 | + up.add_argument('-n', '--name', help='coderbot unique id') |
| 240 | + args = vars(parser.parse_args()) |
| 241 | + print(args) |
227 | 242 | w = WiFi()
|
228 |
| - if len(sys.argv) > 2 and sys.argv[1] == "updatecfg": |
229 |
| - if len(sys.argv) > 2 and sys.argv[2] == "ap": |
| 243 | + if args: |
| 244 | + if args['mode'] == 'ap': |
230 | 245 | w.set_start_as_ap()
|
231 |
| - if len(sys.argv) > 4: |
232 |
| - w.set_ap_params(sys.argv[3], sys.argv[4]) |
233 |
| - elif len(sys.argv) > 2 and sys.argv[2] == "client": |
234 |
| - if len(sys.argv) > 3: |
235 |
| - w.set_client_params(sys.argv[3], sys.argv[4]) |
| 246 | + if args.get('ssid') and args.get('pwd'): |
| 247 | + w.set_ap_params(args['ssid'], args['pwd']) |
| 248 | + elif args['mode'] == 'client': |
236 | 249 | w.set_start_as_client()
|
237 |
| - elif len(sys.argv) > 3 and sys.argv[2] == "bot_name": |
238 |
| - WiFi.get_config()['bot_name'] = sys.argv[3] |
239 |
| - WiFi.save_config() |
| 250 | + if args.get('ssid') and args.get('pwd'): |
| 251 | + w.set_client_params(args['ssid'], args['pwd']) |
| 252 | + if args['name']: |
| 253 | + w.set_bot_name(args['name']) |
240 | 254 | else:
|
241 | 255 | w.set_unique_ssid()
|
242 | 256 | w.start_service()
|
|
0 commit comments