AmendHub

Download

jcs

/

wifi_da

/

wi-fi.h

 

(View History)

jcs   *: Release 1.0 final Latest amendment: 21 on 2023-10-24

1 /*
2 * Copyright (c) 2023 joshua stein <jcs@jcs.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #ifndef __WIFI_H__
18 #define __WIFI_H__
19
20 #include <stdlib.h>
21 #include "util.h"
22
23 /* disable in production */
24 //#define DEBUG_LOGGING 1
25
26 #define MAIN_MENU_ID 1
27 #define MAIN_MENU_ABOUT_ID 1
28 #define MAIN_MENU_QUIT_ID 3
29
30 #define ERROR_DIALOG_ID 0
31
32 #define PASSWORD_DIALOG_ID 1
33 #define PASSWORD_DIALOG_PASSWORD_FIELD_ID 3
34
35 #define ABOUT_DIALOG_ID 2
36
37 #define BLUESCSI_NETWORK_WIFI_CMD 0x1c
38 #define BLUESCSI_NETWORK_WIFI_CMD_SCAN 0x01
39 #define BLUESCSI_NETWORK_WIFI_CMD_COMPLETE 0x02
40 #define BLUESCSI_NETWORK_WIFI_CMD_SCAN_RESULTS 0x03
41 #define BLUESCSI_NETWORK_WIFI_CMD_INFO 0x04
42 #define BLUESCSI_NETWORK_WIFI_CMD_JOIN 0x05
43
44 #define hiword(x) (((short *)&(x))[0])
45 #define loword(x) (((short *)&(x))[1])
46
47 typedef short SICN[16];
48 typedef SICN **SICNHandle;
49
50 enum state {
51 STATE_CLOSED,
52 STATE_INIT,
53 STATE_FINDING,
54 STATE_SCANNING,
55 STATE_IDLE
56 };
57 extern short da_state;
58
59 enum signal_icon_id {
60 SIGNAL_NO_DEVICE = 0,
61 SIGNAL_FINDING_DEVICE = 1,
62 SIGNAL_NONE = 2,
63 SIGNAL_1 = 3,
64 SIGNAL_2 = 4,
65 SIGNAL_3 = 5,
66 SIGNAL_4 = 6
67 };
68
69 struct wifi_network_entry {
70 char ssid[64];
71 unsigned char bssid[6];
72 char rssi;
73 unsigned char channel;
74 unsigned char flags;
75 #define WIFI_NETWORK_FLAG_AUTH 0x1
76 char _padding;
77 };
78
79 struct wifi_join_request {
80 char ssid[64];
81 char key[64];
82 unsigned char channel;
83 unsigned char _padding;
84 };
85
86 extern WindowPtr win;
87 extern DCtlPtr dce;
88
89 extern short wifi_scsi_id;
90 enum {
91 WIFI_SCSI_ID_FINDING = -1,
92 WIFI_SCSI_ID_NONE = -2
93 };
94 extern unsigned long wifi_scan_started;
95 extern struct wifi_network_entry wifi_cur_info;
96 extern struct wifi_network_entry wifi_scan_networks[10];
97 extern short nwifi_scan_networks;
98 extern Cursor watch;
99
100 void wifi_about(void);
101
102 #if DEBUG_LOGGING
103 #define DEBUG_LOG(args) logger_printf args
104 void logger_printf(const char *format, ...);
105 #else
106 #define DEBUG_LOG(args) ((void)0)
107 #endif
108
109 WindowPtr create_window(short ctlrefnum);
110 void update_window(bool force);
111 void update_wifi_cur_info(void);
112 void update_wifi_ssid_list(bool update_networks);
113 void destroy_window(void);
114 void activate_window(bool activate);
115 void window_mousedown(Point p);
116
117 short scsi_find_wifi(void);
118 bool scsi_wifi_scan(short lun);
119 bool scsi_wifi_scan_finished(short lun);
120 bool scsi_wifi_info(short lun, struct wifi_network_entry *resp);
121 short scsi_wifi_scan_results(short scsi_id,
122 struct wifi_network_entry *resp, short count);
123 bool scsi_wifi_join(short scsi_id, struct wifi_join_request *wjr);
124
125 #endif